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

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Linux Shell-Skript] WLAN-Wetterstation

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

      @sborg
      Danke für das letzte Update.
      Im Syslog ist es jetzt ruhig und der Datentyp des Batteriedatenpunkts vom DP50 passt jetzt auch 👍

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

        Da keine offensichtlichen Fehler zu verzeichnen sind und wetter.com anscheinend auch keine Zeitumstellung ihres Servers vornimmt und weiterhin pauschal eine Stunde abzieht:

        Neues Release des Wetterstation WLAN-Skriptes auf GitHub V2.10.0

        • ~ Bugfix Option '--data' bei Ecowitt-Protokoll
        • ~ Passkey bei Nutzung des Ecowitt-Protokolls maskieren
        • + logging des Datenstrings der Wetterstation in eine Datei
        • + Unterstützung für DP40/WH32 (bzw. WH26) Sensor
        • + Unterstützung für DP300/WS68 Sensor
        • + Unterstützung für WH31 (bzw. WH25) Sensor
        • + netcat-/Success-Meldungen im Syslog entfernt
        • + Patch Sommer-/Winterzeit für wetter.com

        Wie immer zu finden im GitHub


        Update-Routine:

        • wetterstation.sh und wetterstation.sub ersetzen
        • wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (neue Datenpunkte der Batteriestände für die neuen Sensoren; kann ggf. entfallen falls man diese nicht nutzt/später mal nutzen möchte)
        • ./ws_updater.sh --patch im Installationsverzeichnis ausführen
        • nun mittels systemctl restart wetterstation den Service neu starten

        Mutige können auch mal direkt den Updater probieren 😉 👍

        Im Installationsverzeichnis ausführen: bash <(curl -s https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh)


        Wer bereits die letzte Beta-Version der V2.10.0 nutzt sollte ggf. trotzdem updaten (hier genügt der Tausch der "sub" und "sh" und den Service neu zu starten). Das Beta-Release ist mit dieser Release-Version nicht identisch. Beim Beta-Release fehlt der Patch für die Sommer-/Winterzeit bei wetter.com

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

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

          ./ws_updater.sh --patch im Installationsverzeichnis ausführen

          zeigt mir einen Fehler

          dietpi@DietPi:/home/iobroker$ ./ws_updater.sh --patch
          
          
          
           ┌───────────────────────┐
           │                       │
           │   WS-Updater V2.10.0  │
           │                       │
           └───────────────────────┘
          
           Soll die wetterstation.conf nun auf eine neue Version gepatcht werden? [J/N]: J
          
          
          
          
           Lege Sicherungskopie der wetterstation.conf an...
          
           Patche wetterstation.conf auf V2.10.0 ...
          ./ws_updater.sh: Zeile 248: patch: Kommando nicht gefunden.
           Fertig...
          
           Eventuelle Zusatzsensoren DP300/WS68, DP40/WH32 oder WH25/WH31 müssen eingetragen werden!
          
          dietpi@DietPi:/home/iobroker$
          
          
          SBorg 1 Reply Last reply Reply Quote 0
          • Nashra
            Nashra Most Active Forum Testing last edited by

            Moin, alles sauber 👍

            root@ioBroker:/home/iobroker# ./ws_updater.sh --patch
            
            
            
             ┌───────────────────────┐
             │                       │
             │   WS-Updater V2.10.0  │
             │                       │
             └───────────────────────┘
            
             Soll die wetterstation.conf nun auf eine neue Version gepatcht werden? [J/N]: j
            
            
            
            
             Lege Sicherungskopie der wetterstation.conf an...
            
             Patche wetterstation.conf auf V2.10.0 ...
            patching file ./wetterstation.conf
            Hunk #1 succeeded at 1 with fuzz 2.
             Fertig...
            
             Eventuelle Zusatzsensoren DP300/WS68, DP40/WH32 oder WH25/WH31 müssen eingetragen werden!
            

            Link nach Github ist gut 😁 👍

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

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

              patch: Kommando nicht gefunden.

              Auf deinem DietPi ist mal so gar nichts installiert... 😉
              Muss ich also auch noch prüfen.
              Nachinstallieren:

              sudo apt install patch
              
              Negalein 1 Reply Last reply Reply Quote 0
              • SBorg
                SBorg Forum Testing Most Active @Nashra last edited by

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

                Link nach Github ist gut

                So langsam wird es 😂

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

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

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

                  Link nach Github ist gut

                  So langsam wird es 😂

                  Jow und hier hatte ich mich verlesen worauf meine Frau lachen mußte

                  Hunk #1 succeeded at 1 with furz 2.
                  

                  Brauch ne neue Brille 😂

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

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

                    Auf deinem DietPi ist mal so gar nichts installiert...

                    da hast du recht 😂
                    ist nur die 0815 Variante 😉

                    Nachinstallieren

                    Ahhh, auf das hätt ich auch selber kommen müssen

                    1 Reply Last reply Reply Quote 0
                    • Rene55
                      Rene55 last edited by

                      @SBorg Muss ich, auch wenn ich die aktuellsten Files im Verzeichnis habe, den ./ws_updater.sh --patch laufen lassen? Was macht der genau?
                      Ich habe gerade mal den Link probiert - bringt bei mir "Version bereits aktuell". Die Dateien sind vom 25.10., können eigentlich den Weather-Patch noch nicht enthalten.

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

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

                        Jow und hier hatte ich mich verlesen worauf meine Frau lachen mußte

                        Hunk #1 succeeded at 1 with furz 2.
                        

                        Brauch ne neue Brille 😂

                        😁
                        ...oder weniger Bohnensuppe essen 💩


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

                        Ahhh, auf das hätt ich auch selber kommen müssen

                        Wald, Bäume, und so... 😇
                        Macht aber nix, man kann ja nicht alles wissen bzw. sehen, und eben eine neue Version hochgeladen, die nun prüft ob 'patch' installiert ist. Also alles wird gut 😊

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

                          @rene55 Nein, brauchst du nicht. Es passiert aber auch nichts wenn man es trotzdem versucht. Dann kommt eben besagte Meldung "Version bereits aktuell".

                          Im Grunde ist das System so aufgebaut:

                          • sh = das eigentliche Programm
                          • sub = enthält eigene Befehle/Funktionen für die sh
                          • conf = die User spezifischen Einstellungen

                          "sh" und "sub" enthält nichts vom User, kann also einfach ausgetauscht werden. Dies galt Anfangs auch für die "conf". Eine handvoll Einträge wieder übernehmen war schnell erledigt (aber schon da nicht gerade komfortabel). Mit der Zeit, und gerade seit OpenSenseMap und Windy, wäre das aber echt k*cke alles jedes mal neu einzutragen. Daraus entstand der "ws_updater".
                          Der kann nun

                          • das Projekt komplett installieren
                          • den Service dazu einrichten
                          • das Update auf die aktuelle Release-Version durchführen (Beta aus Sicherheitsgründen weiter nur händisch)
                          • und die "conf" patchen

                          Du willst bspw. von V2.9.0 auf V2.10.0 updaten und hast die "sh", "sub" und den "ws_updater" ersetzt, dann fehlen dir aber die Änderungen in der "conf" von V2.9.0 (eigentlich V2.8.0, denn eine V2.9.0-conf gab es nicht 😉 ) --> V2.10.0
                          Genau das macht die Option "--patch". Im konkreten Fall die Versionsnummer der "conf" auf V2.10.0 ändern, den Kommentar und den logging-Parameter hinzufügen und die (mögliche) Anzahl der drei neuen Sensoren in der Liste der Sensoren ergänzen.

                          XxJooO 1 Reply Last reply Reply Quote 1
                          • XxJooO
                            XxJooO @SBorg last edited by XxJooO

                            @sborg ,

                            eigentlich suche ich Jemanden mit ausreichend guten Javascript-Kenntnissen, der mir bei meinem Problem kurz helfen kann:

                            Meine Station gibt hin und wieder unplausible Werte ab, wie z.B. "Aussenfeuchtigkeit" ist -9999%. Diese Werte werden dann in die influxDB geschrieben und führen dann zu hässlichen Grafiken. Ich habe nun einiges zusammen gesucht und das folgende Script geschrieben. Insgesamt sind 5 Wertereihen betroffen.

                            Influx wird aufgefordert:

                            • erstelle eine neue Wertereihe, nimm dabei alle Werte aus der alten Reihe , die größer oder kleiner als ein bestimmter Wert sind und schreibe diese in die neue Reihe
                            • lösch die alte Reihe
                            • schreib die Werte aus der neuen Reihe in die Reihe mit dem alten Namen
                            • lösch die neue Reihe

                            Wenn ich die Schritte einzeln als Script ausführen lasse, dann funktioniert das. In meinem Script aber kommt es zu einem Absturz von influx. Was könnte ich ändern, um das Script lauffähig zu bekommen?

                            Vielen Dank
                            XxJooO

                            main();
                            
                            function main () {
                            
                                console.log("Korrigiere Aussenfeuchtigkeit")
                                sendTo('influxdb.0', 'query', 'SELECT * INTO iobroker.global."0_userdata.0.Wetterstation.Aussenfeuchtigkeit_clean" FROM iobroker.global."0_userdata.0.Wetterstation.Aussenfeuchtigkeit" WHERE value>0 GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Aussenfeuchtigkeit"');
                                sendTo('influxdb.0', 'query', 'SELECT * INTO "0_userdata.0.Wetterstation.Aussenfeuchtigkeit" FROM "0_userdata.0.Wetterstation.Aussenfeuchtigkeit_clean" GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP SERIES FROM "0_userdata.0.Wetterstation.Aussenfeuchtigkeit_clean"');
                            
                                console.log("Korrigiere Aussentemperatur")
                                sendTo('influxdb.0', 'query', 'SELECT * INTO iobroker.global."0_userdata.0.Wetterstation.Aussentemperatur_clean" FROM iobroker.global."0_userdata.0.Wetterstation.Aussentemperatur" WHERE value>-50 GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Aussentemperatur"');
                                sendTo('influxdb.0', 'query', 'SELECT * INTO "0_userdata.0.Wetterstation.Aussentemperatur" FROM "0_userdata.0.Wetterstation.Aussentemperatur_clean" GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP SERIES FROM "0_userdata.0.Wetterstation.Aussentemperatur_clean"');
                            
                                console.log("Korrigiere Regen_Tag")
                                sendTo('influxdb.0', 'query', 'SELECT * INTO iobroker.global."0_userdata.0.Wetterstation.Regen_Tag_clean" FROM iobroker.global."0_userdata.0.Wetterstation.Regen_Tag" WHERE value<30 GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Regen_Tag"');
                                sendTo('influxdb.0', 'query', 'SELECT * INTO "0_userdata.0.Wetterstation.Regen_Tag" FROM "0_userdata.0.Wetterstation.Regen_Tag_clean" GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP SERIES FROM "0_userdata.0.Wetterstation.Regen_Tag_clean"');
                            
                                console.log("Korrigiere Sonnenstrahlung")
                                sendTo('influxdb.0', 'query', 'SELECT * INTO iobroker.global."0_userdata.0.Wetterstation.Sonnenstrahlung_clean" FROM iobroker.global."0_userdata.0.Wetterstation.Sonnenstrahlung" WHERE value>0 GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Sonnenstrahlung"');
                                sendTo('influxdb.0', 'query', 'SELECT * INTO "0_userdata.0.Wetterstation.Sonnenstrahlung" FROM "0_userdata.0.Wetterstation.Sonnenstrahlung_clean" GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP SERIES FROM "0_userdata.0.Wetterstation.Sonnenstrahlung_clean"');
                            
                                console.log("Korrigiere Wind_max")
                                sendTo('influxdb.0', 'query', 'SELECT * INTO iobroker.global."0_userdata.0.Wetterstation.Wind_max_clean" FROM iobroker.global."0_userdata.0.Wetterstation.Wind_max" WHERE value>0 GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Wind_max"');
                                sendTo('influxdb.0', 'query', 'SELECT * INTO "0_userdata.0.Wetterstation.Wind_max" FROM "0_userdata.0.Wetterstation.Wind_max_clean" GROUP BY *');
                                sendTo('influxdb.0', 'query', 'DROP SERIES FROM "0_userdata.0.Wetterstation.Wind_max_clean"');
                            
                            }
                            
                            Rene55 SBorg 2 Replies Last reply Reply Quote 0
                            • Rene55
                              Rene55 @XxJooO last edited by

                              @SBorg Danke für die Erklärung. Dann hab ich (wahrscheinlich) alles sauber. Ich hatte bisher immer die Dateien in ein Verzeichnis gelegt, die handvoll eigener Parameter in der .conf geändert und dann einen Container erstellt. Ok, bei der .conf muss man dann ein bisschen aufpassen. Ich werd den updater beim nächsten Versionssprung mal testen. Dann sehe ich vielleicht auch mal ein Hunk #1 succeeded at 1 with furz 2. Danke nochmals - auch bei der wenigen freien Zeit - für das Script und die schnellen Antworten.
                              LG Rainer

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

                                @xxjooo Das ist ein "simples" (aber nicht einfaches) Timeing - Problem. Während der eine sendTo noch arbeitet und die InfluxDB beschäftigt, feuert JS schon den nächsten Befehl ab. Um sicher zugehen, dass er fertig ist könnte man nun eine "Denkpause" von bspw. 1 Sekunde einfügen. Dann bekommst du aber das nächste Timeing-Problem, denn dann ist er noch mit der Abarbeitung dieses Datenpakets beschäftigt, während schon das nächste ansteht.

                                Falls mehrere das Problem haben/hätten, könnte ich auch eine interne Unterdrückung/Begrenzung einbauen wie Temperatur nur von -99°C bis +99°C
                                Das ist aber Zeitverschwendung (im Sinne von Ressourcenverschwendung des Systems) wenn es sonst keiner hat. Ich prüfe dann die Messwerte, obwohl sie zu 99.999% immer richtig sind. Ich hatte in nun bald 2 Jahren keinen einzigen Ausreißer zu verzeichnen.
                                Ich habe es eben mal spaßeshalber gegen gerechnet: das wären bei rund 60(!) Millionen Messwerten und dabei nur 5 Korrekturen trotzdem 12 Millionen zusätzliche Berechnungen für fast nix an Nutzen, zumindest für euch (du mal ausgenommen 😉 ). IMO nicht der beste Weg.

                                Ich hätte aber eine andere, recht einfache Idee: die Werte erst gar nicht in die Influx gelangen zu lassen.
                                Nehmen wir als Beispiel mal die Aussentemperatur (folgend AT genannt):

                                • du legst unter javascript/0_userdata.x.tempData (wo du die Daten halt liegen hast) einen neuen Datenpunkt AT an (Bsp.: javascript.0.tempData.Aussentemperatur) / die Einstellungen vom Original übernehmen
                                • in der "sub" (leider dann bei jedem Update weg) änderst du den Eintrag ab wo die AT gespeichert wird
                                     DP_TEMP_AUSSEN=${PRE_DP}.Aussentemperatur
                                     in
                                     DP_TEMP_AUSSEN=${PRE_DP}.tempData.Aussentemperatur
                                  
                                • Nun noch ein Blockly/Flow/JS mit Trigger bei Änderung auf "...tempData.Aussentemperatur" und "falls" Wert > -99 und Wert < 99 dann schreibe Wert in den originalen AT-Datenpunkt

                                Somit loggt Influx nur noch korrekte Werte und du kannst auch alles wie gehabt (zB. Statistik-Skript) weiter nutzen.

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

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

                                  Danke nochmals - auch bei der wenigen freien Zeit - für das Script und die schnellen Antworten.

                                  Trotz aller Widrigkeiten immer gerne.
                                  Ich kann leider nur sagen:

                                  Lächle und sei froh, es könnte schlimmer kommen.
                                  Ich lächelte und ward froh, und es kam schlimmer...

                                  ...aber das lächeln verkneife ich mir trotz allem nicht 🙂

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

                                    @sborg ,

                                    vielen Dank für diese Überlegungen. Dein Tipp wird die einfachste Lösung sein. Ich möchte Deine Zeit nicht übermäßig beanspruchen, aber noch eine kleine Nachfrage:

                                    Gibt influxDB keinen Rückwert, wenn eine angeforderte Operation abgeschlossen ist? Das mit dem Timing habe ich mir schon so gedacht. Aber der Rückwert des Aufrufes "sendto" ist "undefined". Man muss doch irgendwie eine Rückmeldung bekommen können?

                                    Danke!!!!
                                    XxJooO

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

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

                                      Ich möchte Deine Zeit nicht übermäßig beanspruchen

                                      Das ist absolut kein Problem oder Thema, ich komme halt nur nicht immer gleich zu irgendwas, es kann halt etwas dauern und ab und an dauert es auch mal paar Tage bis ich hier wieder Online bin.
                                      Deswegen fragen, nur die Antwort/Lösung dauert halt uU. mal etwas 😉

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

                                      Gibt influxDB keinen Rückwert, wenn eine angeforderte Operation abgeschlossen ist? Das mit dem Timing habe ich mir schon so gedacht. Aber der Rückwert des Aufrufes "sendto" ist "undefined".

                                      Kann ich dir so nicht beantworten, dass kommt auf den Influx-Adapter an. Wie hast du denn den Rückgabewert ermittelt? Per CallBack? Wenn da nichts kommt, ist da leider auch nix...

                                      sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Aussenfeuchtigkeit"', function (result) { console.log("Influx meldet " + result); });
                                      
                                      XxJooO 1 Reply Last reply Reply Quote 0
                                      • XxJooO
                                        XxJooO @SBorg last edited by

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

                                        sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Aussenfeuchtigkeit"', function (result) { console.log("Influx meldet " + result); });

                                        ergibt

                                        
                                        javascript.0
                                        2021-11-04 16:30:45.526	info	script.js.Datenpunkte_erstellen.influxdb_korrigieren_test: Influx meldet [object Object]
                                        

                                        funktioniert so also nicht.

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

                                          @xxjooo Es kommt nur mehr zurück als erwartet 🙂

                                          sendTo('influxdb.0', 'query', 'DROP measurement "0_userdata.0.Wetterstation.Aussenfeuchtigkeit"', function (result) { console.log("Influx meldet " + JSON.stringify(result)); }); 
                                          
                                          V 1 Reply Last reply Reply Quote 0
                                          • V
                                            viper4iob @SBorg last edited by viper4iob

                                            @sborg

                                            Ich habe jetzt mal das Grafana-Dashboard in Betrieb genommen, echt coole Sache. Danke dafür.
                                            Ein kleiner Hinweis: Ich glaube beim Windgeschwindigkeitsgraphen sind die y-Beschriftungen vertauscht.
                                            Wind müsste eher links und Böen rechts sein, denke ich.

                                            Und ich weiß, keine Fragen zu Grafana selbst, aber ich weiß ein paar Datenpunkte nicht zuzuordnen, die da benutzt werden:
                                            Grafana-Dashboard_V8.jpg
                                            Bei "Nächster Regen in:" wird der DP "0_userdata.0.VIS.Wetter.Regenvorschau" verwendet. Wo kommt der her, aus einem Adapter oder was selbst gebautes?

                                            Und dann rechts die grünen Rechtecke, da sind folgende DPs hinterlegt:
                                            alias.0.Wetterstation.openSenseMap
                                            alias.0.Wetterstation.Windy
                                            alias.0.Wetterstation.Kommunikationsfehler
                                            alias.0.Wetterstation.FW_Upgrade

                                            Sind das nur Aliase auf die originalen DPs?
                                            Wenn ich allerdings die originalen DPs nehme, die ich im Wetterstations-Ordner finden kann, dann funktioniert es nicht, weil die true und false liefern und Grafana erwartet für den Text und die Farbe Werte von 0 und 1, und mit true und false funktioniert es nicht.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            1.0k
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            141
                                            5399
                                            2911133
                                            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