Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. [Linux Shell-Skript] WLAN-Wetterstation

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • SBorg
      SBorg Forum Testing Most Active @viper4iob last edited by

      @viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:

      fürs updaten des Wetterstations-Skripts, funktioniert soweit ohne Probleme

      So gut das ich eben einen Fix veröffentlicht habe 😊


      Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V2.0.2

      • ~Bugfix fehlender Vorjahresmonat (Fix Issue #58)

      Wie immer zu finden im GitHub

      V 1 Reply Last reply Reply Quote 2
      • V
        viper4iob @SBorg last edited by viper4iob

        @sborg said in [Linux Shell-Skript] WLAN-Wetterstation:

        @viper4iob sagte in [Linux Shell-Skript] WLAN-Wetterstation:

        fürs updaten des Wetterstations-Skripts, funktioniert soweit ohne Probleme

        So gut das ich eben einen Fix veröffentlicht habe 😊


        Neue Version des JavaScriptes Wetterstation-Statistik auf GitHub V2.0.2

        • ~Bugfix fehlender Vorjahresmonat (Fix Issue #58)

        Wie immer zu finden im GitHub

        Auch hier danke, kann ich aktuell nur nicht nutzen, weil mein Influx Adapter auf V1 läuft, bis ich mir was wegen dem Performance-Problem vom Influx Adapter im V2 Modus überlegt habe (z.B. meine ECharts mit Grafana nachbauen und irgendwie in jarvis einbinden). Ich muss aktuell also erst mal noch das alte Wetterstatistik Skript verwenden 😉

        1 Reply Last reply Reply Quote 0
        • mango1402
          mango1402 @viper4iob last edited by

          @viper4iob
          Kann Deine Erfahrung mit V2 nur bestätigen - eCharts wird zur lahmen, unbrauchbaren Krücke.....
          Ob es jetzt am Influx, eCharts oder dem Influx-Adapter liegt kann ich nicht sagen.

          Konkret: hab Influx auf einem extra Container laufen, bei einer eCharts Abfrage von 4 Messreihen der letzten 24h geht die CPU-Last vom Influx auf 150%, wenn man Glück hat erscheint mal eine Messreihe.... Wenn man dann noch Auto-Update eingeschaltet hat, ist's vorbei mit der Analyse von Charts.....

          Die Anzahl der measuremenst dürfte ja keinen Einfluss haben. Mit V1 geht's qasi auch 'in Echtzeit'.

          1 Reply Last reply Reply Quote 0
          • G
            G.Hawk last edited by G.Hawk

            Hallo
            Das Skript läuft auf einem Rasberry 4.
            Bis Vorgestern lief alles wunderbar, dann habe ich probiert ein update zu machen.
            Jetzt kommen keine Daten mehr rein.

            ./wetterstation.sh --debug

            passierte folgendes:

            DATA von Wetterstation:
            
            
            
            Debug VAR:
             Installationsverzeichnis: /home/pi/wetterstation
             IPP: 192.168.10.13:8087	WS_PORT: 1080		WS_POLL: 30		PRE_DP: 0_userdata.0.Wetterstation
             WEB: HTTP		WS_PROT: Wunderground
            
            Zusatzsensoren:
             DP10/35/40/50/60/70/100/200/250/300: 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 
             WH31: 0 || WS90: 0
            
            Script-Version: V2.21.0	Config-Version: V2.21.0	Sub-Version: V2.21.0
            
            Kommunikationsfehler!
            
            
            Kommunikationsfehler! Stimmt die WS_ID in der Konfiguration mit der der WS View-App überein? 
            
            pi@raspberrypi:~/wetterstation $ 
            
            

            Also habe ich alles deinstalliert und nochmal von vorn.

            Bei der Anleitung ist mir aufgefallen das bei dem Befehl

            chmod +x ws_updater

            "Datei nicht gefunden kam. Ich habe dann ein .sh eingefügt und dann war die Meldung weg.
            Ob das richtig war weiß ich nicht genau, aber für mich war es logisch.

            Die drei Dateien wurden dann automatisch in das Verzeichnis kopiert.
            Installation ausgeführt.
            Wetterstation.conf angepasst und per WinSCP rüberkopiert.

            Dann kam wieder die gleiche Fehlermeldung siehe oben.

            Bei der Statusüberprüfung kommt das:

            wetterstation.service - Service für ioBroker Wetterstation
               Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabl
               Active: active (running) since Fri 2023-03-03 12:10:51 CET; 16s ago
             Main PID: 10398 (wetterstation.s)
                Tasks: 3 (limit: 4915)
               CGroup: /system.slice/wetterstation.service
                       |-10398 /bin/bash /home/pi/wetterstation/wetterstation.sh
                       |-14592 /bin/bash /home/pi/wetterstation/wetterstation.sh
                       `-14595 
            
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            Mär 03 12:11:07 raspberrypi wetterstation.sh[10398]: (standard_in) 1: syntax error
            ~
            ~
            ~
            lines 1-20/20 (END)
            
            

            Kann mir jemand helfen oder habe ich irgendwas vergessen?
            Gruß

            SBorg 1 Reply Last reply Reply Quote 0
            • Boronsbruder
              Boronsbruder last edited by Boronsbruder

              @viper4iob
              @Latzi
              Na dann
              12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms

              1 Reply Last reply Reply Quote 0
              • Negalein
                Negalein Global Moderator @SBorg last edited by

                @sborg sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                Jepp, das ist dann die Zuweisung "nimm für die Datenquelle dieses Bucket"

                Servus

                Hab jetzt eine 2. Datasource mit den temp. Buckets angelegt.
                132b6608-188c-41a7-808a-6021f7c5f979-image.png

                Standard
                78ae7324-9b49-419a-9f4f-51f2105893f1-image.png

                Temp
                b1d3e883-c128-4ed8-bb0f-bd1937260e78-image.png

                Beim Import des Dashboard beim Konfig Dialog hab ich dann die passenden DS ausgewählt.

                Allerdings holt er sich keine Daten, da das Bucket nicht übernommen wird.
                88842e8a-8b03-4ab6-be1e-792bf137e7f8-image.png

                Query schaut zB so aus:

                from(bucket: "TempData")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Wetterstation.Info.Wolkenbasis")
                  |> filter(fn: (r) => r["_field"] == "value")
                  |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                  |> yield(name: "Wolkenbasis")
                

                3a6238b1-def0-468f-80e2-7c7054f05d34-image.png

                Ändere ich im Query das Bucket TempData in iobroker-1w werden die Daten angezeigt.

                from(bucket: "iobroker-1w")
                  |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
                  |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Wetterstation.Info.Wolkenbasis")
                  |> filter(fn: (r) => r["_field"] == "value")
                  |> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
                  |> yield(name: "Wolkenbasis")
                

                75d2f02f-e922-4320-9c56-66390f07890a-image.png

                SBorg 1 Reply Last reply Reply Quote 0
                • Latzi
                  Latzi @viper4iob last edited by Latzi

                  @viper4iob

                  javascript.0	2023-03-04 07:48:35.120	info	script.js.common.1_1_Test: fertig
                  javascript.0	2023-03-04 07:48:35.119	info	script.js.common.1_1_Test: Rows: 2944
                  javascript.0	2023-03-04 07:48:34.990	info	script.js.common.1_1_Test: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                  

                  Abfrage dazu war:

                  sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {
                      if (result.error) {
                          console.error(result.error);
                      } else {
                          // show result
                           console.log('Rows: ' + JSON.stringify(result.result[0].length));
                           console.log('fertig');
                      }
                  });
                  
                  Boronsbruder 1 Reply Last reply Reply Quote 0
                  • Boronsbruder
                    Boronsbruder @Latzi last edited by

                    @latzi
                    Interessant wäre auch die Startzeit des Skripts, dass man sieht wie lange es bis zum fertig dauerte 😉

                    Latzi 1 Reply Last reply Reply Quote 0
                    • Latzi
                      Latzi @Boronsbruder last edited by Latzi

                      @boronsbruder
                      Zeit von Zeile 2 - Zeile 3 😉

                      Edit: geht auch so:

                      let Startzeit = new Date();
                      sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {
                          if (result.error) {
                              console.error(result.error);
                          } else {
                              let Endezeit = new Date();
                              // show result
                               console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms');
                          }
                      });
                      

                      Liefert dann:

                      10:16:04.177	info	javascript.0 (2815519) script.js.common.1_1_Test: Fertig! Rows: 2924 Dauer: 149 ms
                      
                      Boronsbruder M Neuschwansteini 3 Replies Last reply Reply Quote 0
                      • Boronsbruder
                        Boronsbruder @Latzi last edited by

                        @viper4iob
                        @latzi
                        Na dann:
                        12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms

                        V 1 Reply Last reply Reply Quote 0
                        • M
                          MartyBr @Latzi last edited by

                          @latzi sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                                                                                                                                      let Startzeit = new Date();                                                                                                                                                                            sendTo('influxdb.0', 'query', 'from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r._measurement == "0_userdata.0.Wetterstation.Aussentemperatur")', function (result) {                                                                                                                                                                                if (result.error) {                                                                                                                                                                                    console.error(result.error);                                                                                                                                                                                } else {                                                                                                                                                                                    let Endezeit = new Date();                                                                                                                                                                                    // show result                                                                                                                                                                                     console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms');                                                                                                                                                                                }                                                                                                                                                                            });                                            
                          

                          Ich habe den Test nun auch gestartet. Influxdb läuft als Docker auf der Sinologie DS920+

                          	2023-03-04 13:18:44.732	info	Stop script script.js.TEST.Test_Performance_Influxdb
                          
                          javascript.0
                          2023-03-04 13:18:40.244	info	script.js.TEST.Test_Performance_Influxdb: Fertig! Rows: 7228 Dauer: 200 ms
                          
                          javascript.0
                          2023-03-04 13:18:40.044	info	script.js.TEST.Test_Performance_Influxdb: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions
                          
                          javascript.0
                          2023-03-04 13:18:40.035	info	Start javascript script.js.TEST.Test_Performance_Influxdb
                          
                          1 Reply Last reply Reply Quote 0
                          • Neuschwansteini
                            Neuschwansteini @Latzi last edited by

                            @latzi

                            Hier sieht das so aus:

                            
                            	javascript.0 (3488667) script.js.common.Test.Influxtestv2: Fertig! Rows: 52 Dauer: 16 ms
                            
                            
                            Latzi mango1402 2 Replies Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator last edited by Negalein

                              @SBorg

                              wo holst du dir die Daten von 0_userdata.0.VIS.Wetter.Regenvorschauher?


                              wie sehen bei dir die Alias aus (true wird 1, false wird 0), bzw. wie wandle ich mit einem Alias true in 0, usw.?
                              a5ec6ae9-5662-44d3-8d33-a4464919a4d3-image.png

                              SBorg 1 Reply Last reply Reply Quote 0
                              • Latzi
                                Latzi @Neuschwansteini last edited by

                                @ilovegym sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                javascript.0 (3488667) script.js.common.Test.Influxtestv2: Fertig! Rows: 52 Dauer: 16 ms

                                @viper4iob wie sieht´s bei dir mit dieser Abfrage aus?

                                1 Reply Last reply Reply Quote 0
                                • SBorg
                                  SBorg Forum Testing Most Active @G.Hawk last edited by

                                  @g-hawk Da funktioniert die Verbindung "Display/Gateway" zum "Rechner auf dem das Skript läuft" nicht korrekt.

                                  Die IP in der WS-View[+]-App ist korrekt?
                                  Du nutzt "Wunderground" als Format, da ist auch der Stationsname wichtig (APP wie auch in der *.conf. Müssen beide identisch sein [case sensitiv]):

                                  G 1 Reply Last reply Reply Quote 0
                                  • SBorg
                                    SBorg Forum Testing Most Active @Negalein last edited by

                                    @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                    Beim Import des Dashboard beim Konfig Dialog hab ich dann die passenden DS ausgewählt.
                                    Allerdings holt er sich keine Daten, da das Bucket nicht übernommen wird.

                                    Das war/ist auch soweit alles korrekt. Mit der ganz neuen Grafana-Version habe ich es noch nicht probiert (es kamen die Tage drei Updates), aber ich glaube da hat sich diesbzgl. ein Bug eingeschlichen. Als ich es exportiert habe ging es noch. Dann hatte ich plötzlich ein ähnliches Problem. Nach einer Änderung im Widget konnte ich partout keine Werte auswählen.
                                    Erst nach einem Klick auf "Apply" und erneutem laden des Widget war dies möglich.

                                    1 Reply Last reply Reply Quote 1
                                    • SBorg
                                      SBorg Forum Testing Most Active @Negalein last edited by

                                      @negalein sagte in [Linux Shell-Skript] WLAN-Wetterstation:

                                      wie sehen bei dir die Alias aus (true wird 1, false wird 0), bzw. wie wandle ich mit einem Alias true in 0, usw.?

                                      Ganz, ganz schwerer Voodoo 😂

                                      val ? 1 : 0

                                      Bild 001.png

                                      wo holst du dir die Daten von 0_userdata.0.VIS.Wetter.Regenvorschauher?

                                      Aus dem Weatherunderground-Adapter mittels Skript:

                                      /* Wunderground Regen
                                      Abfrage des Weatherunderground Adapters im Bereich Vorhersage,
                                      wann der nächste Regen erwartet wird.
                                      
                                      Findet in den forecastHourly-Datenpunkt den ersten Regen-Eintrag
                                      Ausgabe in Text ("kein Regen", "X Stunden (X% [Wahrscheinlichkeit])")
                                      
                                      http://forum.iobroker.net/viewtopic.php?f=21&t=3447#p31858
                                      
                                      
                                      01.08.2016 erstellt von Pix unter Nutzung des obigen Skriptes
                                      28.06.2017 Korrekturen
                                      12.07.2017 Fehler abfangen und Typ Variable auf String geändert
                                      06.03.2019 Code optimiert
                                                 berücksichtigt Niederschlag in der aktuellen Stunde (Stunde 0)
                                      11.06.2019 auf neue Datenpunkte angepasst für weatherground-Adapter (getestet V3.0.11)
                                      04.08.2019 geändert für Wunderground Adapter 3.1.1
                                      08.03.2021 Codeoptimierungen @SBorg
                                      
                                      */
                                      
                                      
                                      const vorstd = 36;                                       // Vorschau in Stunden (Weatherunderground bietet neuerdings bis 36h Vorschau), kann hier auch kleiner sein
                                      const idRegen = "0_userdata.0.VIS.Wetter.Regenvorschau"; // Ziel-Datenpunkt
                                      const wunder_inst = "weatherunderground.0.";             // Weatherground-Adapter Instanz
                                      const logging = false;
                                      
                                      createState(idRegen, "kein Regen", { name: "Regenvorschau", type: "string", role: "text" });
                                       
                                      
                                      function berechneZeit() {
                                          if (logging) log("Berechne Dauer in Stunden bis zum nächsten Regen");
                                          let data=0, pop=0;
                                          for (let i=0; i<vorstd; i++) {
                                              data = getState(wunder_inst + "forecastHourly." + i + "h.precipitation").val;
                                              if (data > 0) {   
                                                  pop = getState(wunder_inst + "forecastHourly." + i + "h.precipitationChance").val;
                                                  if (logging) log("Regeneintrag gefunden bei " + i + "h " + data + "mm");
                                                  if (i == 0) { // wenn jetzt Regen
                                                      if (logging) log("In dieser Stunde werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                      setState(idRegen, "jetzt (" + pop + "%)", true);
                                                  } else {
                                                      if (logging) log("In " + i + " Stunden werden " + data + "mm Regen erwartet (Wahrscheinlichkeit " + pop + "%)");
                                                      if (i==1) { setState(idRegen, "1 Stunde (" + pop + "%)", true); } else { setState(idRegen, i + " Stunden (" + pop + "%)", true); }
                                                  }
                                                  i=vorstd-1; // beim ersten Auftreten der Regenwahrscheinlichkeit über 0 abbrechen
                                              } 
                                              if ((i == vorstd-1) && (pop == 0)) {
                                                  setState(idRegen, "Kein Regen erwartet (" + pop + "%)", true);
                                                  if (logging) log("Kein Regen erwartet (" + pop + "%)");
                                              }
                                          }
                                      }
                                       
                                      // bei jeglicher Aktualisierung von Weatherunderground Berechnung starten
                                       
                                      on({
                                          id: /^weatherunderground\.[0-9]+\.forecast.*\.[0-9]+h\.precipitation$/,  // forecastHourly, forecastDaily, forecast
                                          change: "any"
                                      }, berechneZeit);
                                       
                                      // bei Skriptstart
                                      berechneZeit();
                                      
                                      
                                      1 Reply Last reply Reply Quote 1
                                      • G
                                        G.Hawk @SBorg last edited by

                                        @sborg
                                        Hallo Danke für deine Antwort.
                                        Ich habe alles geprüft und es ist alles richtig.
                                        Interessant war dass nach einem Reboot einmal die Daten geholt wurden und dann nicht mehr.
                                        Dann habe ich probiert ein update vom Rasberry zu machen und habe Fehler bezüglich der Schlüssel von Influx und Grafana bekommen.
                                        Den Influx update Fehler konnte ich beseitigen. Grafana noch nicht.
                                        Aber nach der Update Aktion läuft alles wieder.
                                        Ich weiß nur nicht woran es nun lag.

                                        Gruß

                                        1 Reply Last reply Reply Quote 0
                                        • V
                                          viper4iob @Boronsbruder last edited by viper4iob

                                          @boronsbruder said in [Linux Shell-Skript] WLAN-Wetterstation:

                                          @viper4iob
                                          @latzi
                                          Na dann:
                                          12:38:16.606 info javascript.0 (3146202) script.js.common.test_influx: Fertig! Rows: 137548 Dauer: 3061 ms

                                          Waren das alle measurements über 24h?

                                          EDIT:
                                          Bei mir sah es über alle Measurements der letzten 24h so aus:
                                          script.js.Test.Test3: Fertig! Rows: 130968 Dauer: 11482 ms
                                          Nur Außentemperatur so:
                                          script.js.Test.Test3: Fertig! Rows: 1972 Dauer: 102 ms

                                          Ein Wert geht eigentlich noch recht schnell.
                                          Wenn man im iobroker in den Objekten bei der Außentemperatur auf die benutzerdefinierten Einstellungen geht (das Zahnrad) und die Verlaufsdaten der letzten 24h anschauen will, dann warte ich da etwa 10 sek bis die da sind.
                                          Wenn der Influx Adapter auf V1.x läuft, dauert das nicht mal eine Sekunde.
                                          Und auch wenn man den EChart Adapter benutzt, dauert der Aufbau eines Graphen im V2.x Modus mehrere Sekunden.
                                          Irgendwo ist da also noch der Wurm drin mit dem Influx Adapter.

                                          Boronsbruder 1 Reply Last reply Reply Quote 0
                                          • Boronsbruder
                                            Boronsbruder @viper4iob last edited by Boronsbruder

                                            @viper4iob
                                            ja

                                            let Startzeit = new Date();
                                            
                                            sendTo('influxdb.1', 'query', 'from(bucket: "wetter") |> range(start: -24h)', function (result) {
                                            
                                                if (result.error) {
                                            
                                                    console.error(result.error);
                                            
                                                } else {
                                            
                                                    let Endezeit = new Date();
                                            
                                                    // show result
                                            
                                                     console.log('Fertig! Rows: ' + JSON.stringify(result.result[0].length) +' Dauer: ' + (Endezeit.getTime()-Startzeit.getTime()) + ' ms');
                                            
                                                }
                                            
                                            });
                                            

                                            Und bei mir laufen gerade 4 Influx-Instanzen 1x v1 und 3x v2 parallel

                                            Edit:
                                            Hab das mit den Verlaufsdaten AUSSENTEMPERATUR mal getestet und für die Daten vom 01.01.2021 - 05.02.2023 --> 9 sek -- letzte 24h 4 sek...

                                            V 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            879
                                            Online

                                            31.8k
                                            Users

                                            79.9k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            143
                                            5478
                                            3306970
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo