Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. [Linux Shell-Skript] WLAN-Wetterstation

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.9k

[Linux Shell-Skript] WLAN-Wetterstation

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Beiträge 153 Kommentatoren 3.8m Aufrufe 135 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • NegaleinN Negalein

    @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$
    
    
    SBorgS Online
    SBorgS Online
    SBorg
    Forum Testing Most Active
    schrieb am zuletzt editiert von SBorg
    #3066

    @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
    

    LG SBorg ( SBorg auf GitHub)
    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

    NegaleinN 1 Antwort Letzte Antwort
    0
    • NashraN Nashra

      Moin, alles sauber :+1:

      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 :grin: :+1:

      SBorgS Online
      SBorgS Online
      SBorg
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #3067

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

      Link nach Github ist gut

      So langsam wird es :joy:

      LG SBorg ( SBorg auf GitHub)
      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

      NashraN 1 Antwort Letzte Antwort
      0
      • SBorgS SBorg

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

        Link nach Github ist gut

        So langsam wird es :joy:

        NashraN Offline
        NashraN Offline
        Nashra
        Most Active Forum Testing
        schrieb am zuletzt editiert von Nashra
        #3068

        @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 :joy:

        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 :joy:

        Gruß Ralf
        Mir egal, wer Dein Vater ist! Wenn ich hier angel, wird nicht übers Wasser gelaufen!!

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        SBorgS 1 Antwort Letzte Antwort
        0
        • SBorgS 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
          
          NegaleinN Offline
          NegaleinN Offline
          Negalein
          Global Moderator
          schrieb am zuletzt editiert von
          #3069

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

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

          da hast du recht :joy:
          ist nur die 0815 Variante ;)

          Nachinstallieren

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

          ° Node.js: 20.17.0 NPM: 10.8.2
          ° Proxmox, Ubuntu 22.04.3 LTS
          ° Fixer ---> iob fix

          1 Antwort Letzte Antwort
          0
          • Rene55R Offline
            Rene55R Offline
            Rene55
            schrieb am zuletzt editiert von
            #3070

            @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.

            Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
            ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
            Wetterstation: Froggit WH3000SE V1.6.6

            SBorgS 1 Antwort Letzte Antwort
            0
            • NashraN 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 :joy:

              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 :joy:

              SBorgS Online
              SBorgS Online
              SBorg
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #3071

              @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 :joy:

              :grin:
              ...oder weniger Bohnensuppe essen :hankey:


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

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

              Wald, Bäume, und so... :innocent:
              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 :blush:

              LG SBorg ( SBorg auf GitHub)
              Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

              1 Antwort Letzte Antwort
              2
              • Rene55R Rene55

                @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.

                SBorgS Online
                SBorgS Online
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #3072

                @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.

                LG SBorg ( SBorg auf GitHub)
                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                XxJooOX 1 Antwort Letzte Antwort
                1
                • SBorgS SBorg

                  @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.

                  XxJooOX Offline
                  XxJooOX Offline
                  XxJooO
                  schrieb am zuletzt editiert von XxJooO
                  #3073

                  @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"');
                  
                  }
                  

                  ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                  Rene55R SBorgS 2 Antworten Letzte Antwort
                  0
                  • XxJooOX 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"');
                    
                    }
                    
                    Rene55R Offline
                    Rene55R Offline
                    Rene55
                    schrieb am zuletzt editiert von
                    #3074

                    @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

                    Host: Fujitsu Intel(R) Pentium(R) CPU G4560T, 32 GB RAM, Proxmox 8.x + lxc Ubuntu 22.04
                    ioBroker (8 GB RAM) Node.js: 20.19.1, NPM: 10.8.2, js-Controller: 7.0.6, Admin: 7.6.3
                    Wetterstation: Froggit WH3000SE V1.6.6

                    SBorgS 1 Antwort Letzte Antwort
                    0
                    • XxJooOX 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"');
                      
                      }
                      
                      SBorgS Online
                      SBorgS Online
                      SBorg
                      Forum Testing Most Active
                      schrieb am zuletzt editiert von
                      #3075

                      @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.

                      LG SBorg ( SBorg auf GitHub)
                      Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                      XxJooOX 1 Antwort Letzte Antwort
                      0
                      • Rene55R Rene55

                        @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

                        SBorgS Online
                        SBorgS Online
                        SBorg
                        Forum Testing Most Active
                        schrieb am zuletzt editiert von
                        #3076

                        @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 :slightly_smiling_face:

                        LG SBorg ( SBorg auf GitHub)
                        Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                        1 Antwort Letzte Antwort
                        0
                        • SBorgS SBorg

                          @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.

                          XxJooOX Offline
                          XxJooOX Offline
                          XxJooO
                          schrieb am zuletzt editiert von
                          #3077

                          @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

                          ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                          SBorgS 1 Antwort Letzte Antwort
                          0
                          • XxJooOX XxJooO

                            @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

                            SBorgS Online
                            SBorgS Online
                            SBorg
                            Forum Testing Most Active
                            schrieb am zuletzt editiert von
                            #3078

                            @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); });
                            

                            LG SBorg ( SBorg auf GitHub)
                            Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                            XxJooOX 1 Antwort Letzte Antwort
                            0
                            • SBorgS SBorg

                              @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); });
                              
                              XxJooOX Offline
                              XxJooOX Offline
                              XxJooO
                              schrieb am zuletzt editiert von
                              #3079

                              @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.

                              ioBroker auf Intel NUC - Homematic CCU3/pivCCU auf Raspi 3B+

                              SBorgS 1 Antwort Letzte Antwort
                              0
                              • XxJooOX XxJooO

                                @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.

                                SBorgS Online
                                SBorgS Online
                                SBorg
                                Forum Testing Most Active
                                schrieb am zuletzt editiert von
                                #3080

                                @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)); }); 
                                

                                LG SBorg ( SBorg auf GitHub)
                                Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                V 1 Antwort Letzte Antwort
                                0
                                • SBorgS SBorg

                                  @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 Offline
                                  V Offline
                                  viper4iob
                                  schrieb am zuletzt editiert von viper4iob
                                  #3081

                                  @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.

                                  SBorgS 1 Antwort Letzte Antwort
                                  0
                                  • V 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.

                                    SBorgS Online
                                    SBorgS Online
                                    SBorg
                                    Forum Testing Most Active
                                    schrieb am zuletzt editiert von
                                    #3082

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

                                    Wind müsste eher links und Böen rechts sein, denke ich.

                                    Denkst du richtig. Danke, ist mir gar nicht aufgefallen.

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

                                    keine Fragen zu Grafana selbst

                                    Das gilt/steht für GitHub. Ich mag dort einfach keine zig Issues dann zu Grafana haben. "Hier" ist es egal, solange es mit dem Thema Wetterstation zu tun hat und kein "wie installiere ich Grafana" ist ;)

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

                                    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?

                                    Das kommt aus dem Wunderground-Adapter mit einem JS von Pix, man braucht das Rad ja nicht zweimal erfinden:

                                    /* 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 (weatherundergroudn 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();
                                    
                                    

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

                                    Sind das nur Aliase auf die originalen DPs?

                                    Ja und Nein. Wären es nur reine Aliase könnte ich ja auch gleich die Originalen nehmen, schließlich werden die Bezeichnungen sich nicht ändern wie bspw. bei einem Device welches ausgetauscht werden muss ;)
                                    Man kann damit aber auch schön konvertieren :grinning:
                                    Bild 3.png

                                    LG SBorg ( SBorg auf GitHub)
                                    Projekte: Lebensmittelwarnung.de | WLAN-Wetterstation | PimpMyStation

                                    G 1 Antwort Letzte Antwort
                                    0
                                    • SBorgS SBorg

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

                                      Wind müsste eher links und Böen rechts sein, denke ich.

                                      Denkst du richtig. Danke, ist mir gar nicht aufgefallen.

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

                                      keine Fragen zu Grafana selbst

                                      Das gilt/steht für GitHub. Ich mag dort einfach keine zig Issues dann zu Grafana haben. "Hier" ist es egal, solange es mit dem Thema Wetterstation zu tun hat und kein "wie installiere ich Grafana" ist ;)

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

                                      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?

                                      Das kommt aus dem Wunderground-Adapter mit einem JS von Pix, man braucht das Rad ja nicht zweimal erfinden:

                                      /* 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 (weatherundergroudn 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();
                                      
                                      

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

                                      Sind das nur Aliase auf die originalen DPs?

                                      Ja und Nein. Wären es nur reine Aliase könnte ich ja auch gleich die Originalen nehmen, schließlich werden die Bezeichnungen sich nicht ändern wie bspw. bei einem Device welches ausgetauscht werden muss ;)
                                      Man kann damit aber auch schön konvertieren :grinning:
                                      Bild 3.png

                                      G Offline
                                      G Offline
                                      G.Hawk
                                      schrieb am zuletzt editiert von Negalein
                                      #3083

                                      @sborg
                                      Hallo
                                      Ich habe gerade versucht alles zu installieren ich bekomme auch Daten. Aber das Script läuft nicht.

                                      Bis hierhin bin ich gekommen:

                                      "Damit es beim booten automatisch geladen wird: sudo systemctl enable wetterstation.service"

                                      Da bekomme ich diese Meldung:

                                      pi@raspberrypi:~ $ sudo systemctl daemon-reload
                                      pi@raspberrypi:~ $ sudo systemctl enable wetterstation.service
                                      Failed to enable unit: File wetterstation.service: Invalid argument
                                      pi@raspberrypi:~ $
                                      

                                      Kann mir jemand sagen, was ich falsch mache?

                                      Status: sudo systemctl status wetterstation

                                      i@raspberrypi:~ $ sudo systemctl status wetterstation
                                      * wetterstation.service
                                         Loaded: error (Reason: Unit wetterstation.service failed to load properly: In
                                         Active: inactive (dead)
                                      
                                      Nov 06 16:00:31 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:00:31 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:09:06 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:26:14 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:27:11 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:30:24 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:34:36 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:40:44 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:42:26 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      Nov 06 16:42:26 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                      lines 1-14/14 (END)
                                      
                                      Thomas BraunT 1 Antwort Letzte Antwort
                                      0
                                      • G G.Hawk

                                        @sborg
                                        Hallo
                                        Ich habe gerade versucht alles zu installieren ich bekomme auch Daten. Aber das Script läuft nicht.

                                        Bis hierhin bin ich gekommen:

                                        "Damit es beim booten automatisch geladen wird: sudo systemctl enable wetterstation.service"

                                        Da bekomme ich diese Meldung:

                                        pi@raspberrypi:~ $ sudo systemctl daemon-reload
                                        pi@raspberrypi:~ $ sudo systemctl enable wetterstation.service
                                        Failed to enable unit: File wetterstation.service: Invalid argument
                                        pi@raspberrypi:~ $
                                        

                                        Kann mir jemand sagen, was ich falsch mache?

                                        Status: sudo systemctl status wetterstation

                                        i@raspberrypi:~ $ sudo systemctl status wetterstation
                                        * wetterstation.service
                                           Loaded: error (Reason: Unit wetterstation.service failed to load properly: In
                                           Active: inactive (dead)
                                        
                                        Nov 06 16:00:31 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:00:31 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:09:06 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:26:14 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:27:11 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:30:24 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:34:36 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:40:44 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:42:26 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        Nov 06 16:42:26 raspberrypi systemd[1]: /etc/systemd/system/wetterstation.servic
                                        lines 1-14/14 (END)
                                        
                                        Thomas BraunT Online
                                        Thomas BraunT Online
                                        Thomas Braun
                                        Most Active
                                        schrieb am zuletzt editiert von Thomas Braun
                                        #3084

                                        @martin-0

                                        https://github.com/SBorg2014/WLAN-Wetterstation/wiki/Installation---Teil-2

                                        Das hast du aber getan, oder?

                                        Sofern möglich sollte diese Variante benutzt werden, da sie wesentlich Anwender freundlicher ist. Wir legen zuerst im Terminalfenster die nötige Datei an:

                                        sudo nano /etc/systemd/system/wetterstation.service
                                        

                                        Diese bekommt folgenden Inhalt:

                                        [Unit]
                                        Description=Service für ioBroker Wetterstation
                                        
                                        [Service]
                                        ExecStart=/home/iobroker/wetterstation.sh
                                        
                                        [Install]
                                        WantedBy=multi-user.target
                                        

                                        Die Beschreibung ist frei wählbar, der Service muss ggf. entsprechend Eurem Pfades angepasst werden, je nach dem wo Ihr das Skript liegen habt. Speichern und mittels sudo chmod +x /etc/systemd/system/wetterstation.service ausführbar machen.

                                        Linux-Werkzeugkasten:
                                        https://forum.iobroker.net/topic/42952/der-kleine-iobroker-linux-werkzeugkasten
                                        NodeJS Fixer Skript:
                                        https://forum.iobroker.net/topic/68035/iob-node-fix-skript
                                        iob_diag: curl -sLf -o diag.sh https://iobroker.net/diag.sh && bash diag.sh

                                        G 1 Antwort Letzte Antwort
                                        0
                                        • Thomas BraunT Thomas Braun

                                          @martin-0

                                          https://github.com/SBorg2014/WLAN-Wetterstation/wiki/Installation---Teil-2

                                          Das hast du aber getan, oder?

                                          Sofern möglich sollte diese Variante benutzt werden, da sie wesentlich Anwender freundlicher ist. Wir legen zuerst im Terminalfenster die nötige Datei an:

                                          sudo nano /etc/systemd/system/wetterstation.service
                                          

                                          Diese bekommt folgenden Inhalt:

                                          [Unit]
                                          Description=Service für ioBroker Wetterstation
                                          
                                          [Service]
                                          ExecStart=/home/iobroker/wetterstation.sh
                                          
                                          [Install]
                                          WantedBy=multi-user.target
                                          

                                          Die Beschreibung ist frei wählbar, der Service muss ggf. entsprechend Eurem Pfades angepasst werden, je nach dem wo Ihr das Skript liegen habt. Speichern und mittels sudo chmod +x /etc/systemd/system/wetterstation.service ausführbar machen.

                                          G Offline
                                          G Offline
                                          G.Hawk
                                          schrieb am zuletzt editiert von
                                          #3085

                                          @thomas-braun

                                          Ja wenn ich "sudo chmod +x /etc/systemd/system/wetterstation.service" eingebe passiert allerdings nichts.
                                          Also keine Meldung o.Ä.

                                          Thomas BraunT V 2 Antworten Letzte Antwort
                                          0
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          846

                                          Online

                                          32.4k

                                          Benutzer

                                          81.5k

                                          Themen

                                          1.3m

                                          Beiträge
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Anmelden

                                          • Du hast noch kein Konto? Registrieren

                                          • Anmelden oder registrieren, um zu suchen
                                          • Erster Beitrag
                                            Letzter Beitrag
                                          0
                                          • Home
                                          • Aktuell
                                          • Tags
                                          • Ungelesen 0
                                          • Kategorien
                                          • Unreplied
                                          • Beliebt
                                          • GitHub
                                          • Docu
                                          • Hilfe