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

  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.3k

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

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

[Linux Shell-Skript] WLAN-Wetterstation

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
linuxshell-scriptwetterstationwlan-wetterstation
5.7k Beiträge 152 Kommentatoren 3.8m Aufrufe 134 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.
  • SBorgS SBorg

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

    Vielleicht solltest du den Befehl aus dem Script alleinstehend ausführen nc -lv -p WS_PORT , mit WS_PORT als dein angegebener Port, und die Antwort posten. Die erhaltenen Daten sind mit "&" getrennt.

    Wie gut, dass ich das in die V0.1.2 schon eingebaut habe ;)

    LatziL Online
    LatziL Online
    Latzi
    schrieb am zuletzt editiert von
    #96

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

    V0.1.2

    :+1: , kann die Version dann auch schon für Weltfrieden sorgen?

    SBorgS 1 Antwort Letzte Antwort
    0
    • G gerald123

      @SBorg Danke für den Vorschlag werde ich am Abend mal Testen.
      Kann ich nicht die Umrechnung erst im IoBroker machen und dadurch den bc Befehl weglassen?

      SBorgS Offline
      SBorgS Offline
      SBorg
      Forum Testing Most Active
      schrieb am zuletzt editiert von
      #97

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

      Kann ich nicht die Umrechnung erst im IoBroker machen und dadurch den bc Befehl weglassen?

      Müsste eigentlich gehen. Ändere in der wetterstation.sh bei "#Data zerlegen..." mal in

            #if [ "$i" -ge "0" ] && [ "$i" -lt "4" ]; then convertFtoC; fi
            #if [ "$i" -eq "6" ] || [ "$i" -eq "7" ]; then convertMPHtoKMH; fi
            #if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi
            #if [ "$i" -ge "11" ] && [ "$i" -lt "15" ]; then convertInchtoMM; fi
      
      

      ab, also nur eine "#" davor.

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

      G 1 Antwort Letzte Antwort
      0
      • SBorgS SBorg

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

        Vielleicht solltest du den Befehl aus dem Script alleinstehend ausführen nc -lv -p WS_PORT , mit WS_PORT als dein angegebener Port, und die Antwort posten. Die erhaltenen Daten sind mit "&" getrennt.

        Wie gut, dass ich das in die V0.1.2 schon eingebaut habe ;)

        unltdnetworxU Offline
        unltdnetworxU Offline
        unltdnetworx
        Developer
        schrieb am zuletzt editiert von unltdnetworx
        #98

        @SBorg
        Falscher Beitrag.

        Gruß, Michael
        Weitere Infos im Profil.
        Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

        1 Antwort Letzte Antwort
        0
        • LatziL Latzi

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

          V0.1.2

          :+1: , kann die Version dann auch schon für Weltfrieden sorgen?

          SBorgS Offline
          SBorgS Offline
          SBorg
          Forum Testing Most Active
          schrieb am zuletzt editiert von SBorg
          #99

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

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

          V0.1.2

          :+1: , kann die Version dann auch schon für Weltfrieden sorgen?

          Ne, aber für besseres Wetter :angel:

          Die V0.1.2 beta kann jetzt auch getestet werden. Dazu auf GitHub den Branch auf "beta" umstellen.
          Javascript nicht vergessen --> gibt einen neuen Datenpunkt
          *.conf --> es muss auch die ID der Wetterstation eingetragen werden

          Bei fünf Übertragungsfehlern wird der neue Datenpunkt "true" und bleibt bis er entweder von euch resettet wird, oder das Skript neu gestartet wurde (hier wird er auf "false" gesetzt) auf "true".

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

          unltdnetworxU 1 Antwort Letzte Antwort
          1
          • unltdnetworxU Offline
            unltdnetworxU Offline
            unltdnetworx
            Developer
            schrieb am zuletzt editiert von
            #100

            Definitiv hat meine WH4000SE den Datenpunkt "Regen_Jahr" mehr. Gerade das Skript mal erweitert und es klappt jetzt auch mit korrektem Timestamp, UV-Index, etc.

            Gruß, Michael
            Weitere Infos im Profil.
            Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

            1 Antwort Letzte Antwort
            1
            • SBorgS SBorg

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

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

              V0.1.2

              :+1: , kann die Version dann auch schon für Weltfrieden sorgen?

              Ne, aber für besseres Wetter :angel:

              Die V0.1.2 beta kann jetzt auch getestet werden. Dazu auf GitHub den Branch auf "beta" umstellen.
              Javascript nicht vergessen --> gibt einen neuen Datenpunkt
              *.conf --> es muss auch die ID der Wetterstation eingetragen werden

              Bei fünf Übertragungsfehlern wird der neue Datenpunkt "true" und bleibt bis er entweder von euch resettet wird, oder das Skript neu gestartet wurde (hier wird er auf "false" gesetzt) auf "true".

              unltdnetworxU Offline
              unltdnetworxU Offline
              unltdnetworx
              Developer
              schrieb am zuletzt editiert von
              #101

              @SBorg
              Willst du das in das Skript aufnehmen? Müsste dann aber abgefangen werden, wenn jemand den Wert nicht hat.

              Gruß, Michael
              Weitere Infos im Profil.
              Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

              1 Antwort Letzte Antwort
              0
              • SBorgS Offline
                SBorgS Offline
                SBorg
                Forum Testing Most Active
                schrieb am zuletzt editiert von
                #102

                Gerne, wollte eben schon darum bitten ;)
                Mir schwebt noch ein Konfigpunkt "Modell" vor, ev. gibt es ja (später) noch mehr Unterschiede.

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

                unltdnetworxU 1 Antwort Letzte Antwort
                0
                • SBorgS SBorg

                  Gerne, wollte eben schon darum bitten ;)
                  Mir schwebt noch ein Konfigpunkt "Modell" vor, ev. gibt es ja (später) noch mehr Unterschiede.

                  unltdnetworxU Offline
                  unltdnetworxU Offline
                  unltdnetworx
                  Developer
                  schrieb am zuletzt editiert von
                  #103

                  @SBorg Soll ich einen Pull Request machen? Dann zieh ich mir kurz die beta und bau noch mal um. Oder einfach nur den geänderten Code?

                  Gruß, Michael
                  Weitere Infos im Profil.
                  Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

                  SBorgS 1 Antwort Letzte Antwort
                  0
                  • unltdnetworxU unltdnetworx

                    @SBorg Soll ich einen Pull Request machen? Dann zieh ich mir kurz die beta und bau noch mal um. Oder einfach nur den geänderten Code?

                    SBorgS Offline
                    SBorgS Offline
                    SBorg
                    Forum Testing Most Active
                    schrieb am zuletzt editiert von
                    #104

                    @unltdnetworx Wie du magst. Ich habe keine eigene Station, deswegen ist die V0.1.2 bisher kpl. ungetestet. Also keine Ahnung ob ich ev. was verbockt habe, zumindest in der simuluerten Version hat es funktioniert ;)
                    Also bau es ruhig mal ein und teste :+1: :angel: :grin:

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

                    unltdnetworxU 1 Antwort Letzte Antwort
                    1
                    • SBorgS SBorg

                      @unltdnetworx Wie du magst. Ich habe keine eigene Station, deswegen ist die V0.1.2 bisher kpl. ungetestet. Also keine Ahnung ob ich ev. was verbockt habe, zumindest in der simuluerten Version hat es funktioniert ;)
                      Also bau es ruhig mal ein und teste :+1: :angel: :grin:

                      unltdnetworxU Offline
                      unltdnetworxU Offline
                      unltdnetworx
                      Developer
                      schrieb am zuletzt editiert von unltdnetworx
                      #105

                      @SBorg
                      Die Beta läuft übrigens einwandfrei. Hab jetzt meine Werte noch ergänzt, aber keine Weiche eingebaut. Pull-Request gestellt.

                      Gruß, Michael
                      Weitere Infos im Profil.
                      Wenn euch der Beitrag weitergeholfen hat, könnt ihr die Bewertung rechts unten im Beitrag nutzen.

                      SBorgS 1 Antwort Letzte Antwort
                      0
                      • R Offline
                        R Offline
                        Rushmed
                        Most Active
                        schrieb am zuletzt editiert von
                        #106

                        Was muss ich jetzt alles beachten wenn ich die Beta ausprobieren will?

                        1 Antwort Letzte Antwort
                        1
                        • unltdnetworxU unltdnetworx

                          @SBorg
                          Die Beta läuft übrigens einwandfrei. Hab jetzt meine Werte noch ergänzt, aber keine Weiche eingebaut. Pull-Request gestellt.

                          SBorgS Offline
                          SBorgS Offline
                          SBorg
                          Forum Testing Most Active
                          schrieb am zuletzt editiert von
                          #107

                          @unltdnetworx Danke :) Kannst du mir mal ein Beispieldatenpaket (Passwort x-en ;) ) posten? Dann kann ich mir mal Gedanken machen wie man es in ein Skript packt und simulieren. bash ist halt keine echte Programmiersprache. Ich will aber auch nicht x separate Skripte pflegen.

                          @Rushmed Eigentlich nur wie oben beschrieben. Neues Javascript wg. zusätzlichem Datenpunkt ausführen. Die conf nach deinen Werten konfigurieren (jetzt zusätzlich noch die Station-ID). Dann sollte es laufen. Bei derzeit fünf aufgetretenen Datenpaket-Fehlern (falsches Format, verstümmelt, gar kein Paket) sollte der neue Datenpunkt "_Kommunikationsfehler" true werden.

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

                          1 Antwort Letzte Antwort
                          0
                          • SBorgS SBorg

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

                            Kann ich nicht die Umrechnung erst im IoBroker machen und dadurch den bc Befehl weglassen?

                            Müsste eigentlich gehen. Ändere in der wetterstation.sh bei "#Data zerlegen..." mal in

                                  #if [ "$i" -ge "0" ] && [ "$i" -lt "4" ]; then convertFtoC; fi
                                  #if [ "$i" -eq "6" ] || [ "$i" -eq "7" ]; then convertMPHtoKMH; fi
                                  #if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi
                                  #if [ "$i" -ge "11" ] && [ "$i" -lt "15" ]; then convertInchtoMM; fi
                            
                            

                            ab, also nur eine "#" davor.

                            G Offline
                            G Offline
                            gerald123
                            schrieb am zuletzt editiert von
                            #108

                            @SBorg Habe gestern noch weiter getestet, leider geht bei mir auch der Befehl nc nicht.
                            Auch dieser Befehl wird im Docker nicht gefunden.
                            Gibt es noch eine ander Möglichkeit die Daten abzufragen?

                            Synology 918+ 4GB; ioBroker auf RPI4; Zigbee; Sonoff

                            SBorgS 1 Antwort Letzte Antwort
                            0
                            • G gerald123

                              @SBorg Habe gestern noch weiter getestet, leider geht bei mir auch der Befehl nc nicht.
                              Auch dieser Befehl wird im Docker nicht gefunden.
                              Gibt es noch eine ander Möglichkeit die Daten abzufragen?

                              SBorgS Offline
                              SBorgS Offline
                              SBorg
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #109

                              @gerald123 Da die Hardwareanforderungen gering sind, würde auch ein x-beliebiger Raspberry PI im Netzwerk genügen. Es sollte sogar ein Orange PI für ~17,- € langen. Oder es findet sich jemand der einen Adapter schreibt, oder es per Perl, Python etc. umsetzt.

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

                              EisbaeeerE 1 Antwort Letzte Antwort
                              0
                              • SBorgS SBorg

                                @gerald123 Da die Hardwareanforderungen gering sind, würde auch ein x-beliebiger Raspberry PI im Netzwerk genügen. Es sollte sogar ein Orange PI für ~17,- € langen. Oder es findet sich jemand der einen Adapter schreibt, oder es per Perl, Python etc. umsetzt.

                                EisbaeeerE Offline
                                EisbaeeerE Offline
                                Eisbaeeer
                                Developer
                                schrieb am zuletzt editiert von
                                #110

                                @SBorg Ein Adapter wäre doch sinnvoll. Spendiert mir einer eine Wetterstation? ;-)
                                Grüße Eisbaeeer

                                Kein support per PM. Bitte im Forum Fragen stellen!

                                SBorgS 1 Antwort Letzte Antwort
                                0
                                • EisbaeeerE Eisbaeeer

                                  @SBorg Ein Adapter wäre doch sinnvoll. Spendiert mir einer eine Wetterstation? ;-)
                                  Grüße Eisbaeeer

                                  SBorgS Offline
                                  SBorgS Offline
                                  SBorg
                                  Forum Testing Most Active
                                  schrieb am zuletzt editiert von
                                  #111

                                  @Eisbaeeer :grinning: Ich habe ja auch keine, noch dazu nie einen Adapter gebaut. Wollte zwar immer mal wieder anfangen, aber ohne kriege ich es einfach schneller umgesetzt ;)

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

                                  EisbaeeerE GlasfaserG 2 Antworten Letzte Antwort
                                  0
                                  • SBorgS SBorg

                                    @Eisbaeeer :grinning: Ich habe ja auch keine, noch dazu nie einen Adapter gebaut. Wollte zwar immer mal wieder anfangen, aber ohne kriege ich es einfach schneller umgesetzt ;)

                                    EisbaeeerE Offline
                                    EisbaeeerE Offline
                                    Eisbaeeer
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #112

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

                                    @Eisbaeeer :grinning: Ich habe ja auch keine, noch dazu nie einen Adapter gebaut. Wollte zwar immer mal wieder anfangen, aber ohne kriege ich es einfach schneller umgesetzt ;)

                                    Naja, die Arbeit ist ja schon gemacht. Alles andere ist ja nur noch Fleißarbeit und ein wenig Erfahrung. Dann ist der Adapter schon fertig. Aber ich habe leider keine Zeit.

                                    Kein support per PM. Bitte im Forum Fragen stellen!

                                    1 Antwort Letzte Antwort
                                    0
                                    • R Offline
                                      R Offline
                                      Rushmed
                                      Most Active
                                      schrieb am zuletzt editiert von
                                      #113

                                      Jaa, ich bin auch für einen Adapter!

                                      1 Antwort Letzte Antwort
                                      0
                                      • G Offline
                                        G Offline
                                        gerald123
                                        schrieb am zuletzt editiert von
                                        #114

                                        Ein Adapter währe für mich die ideale Lösung, vielleicht wird es ja noch :blush:

                                        Synology 918+ 4GB; ioBroker auf RPI4; Zigbee; Sonoff

                                        1 Antwort Letzte Antwort
                                        0
                                        • SBorgS SBorg

                                          @Eisbaeeer :grinning: Ich habe ja auch keine, noch dazu nie einen Adapter gebaut. Wollte zwar immer mal wieder anfangen, aber ohne kriege ich es einfach schneller umgesetzt ;)

                                          GlasfaserG Offline
                                          GlasfaserG Offline
                                          Glasfaser
                                          schrieb am zuletzt editiert von Glasfaser
                                          #115

                                          @SBorg

                                          Hier mal meine Änderung/Anpassung auf die Froggit WH4000SE.

                                          1.JPG

                                          wetterstation.conf

                                          ### Settings V0.1.2 -------Froggit WH4000SE----------------------------------------------------
                                          #Debuging einschalten [true/false] / default false / Ausgabe der Messwerte
                                           debug=false
                                          
                                          #ioBroker-IP und Port der Simple-Restful-API [xxx.xxx.xxx.xxx:xxxxx]
                                           IPP=192.168.178.11:8087               
                                          
                                          #Port der Wetterstation
                                           WS_PORT=9999
                                          
                                          #Pollintervall der Wetterstation in Sekunden (min 30 Sekunden)
                                           WS_POLL=16
                                          
                                          #Name/ID der Wetterstation
                                           WS_ID=xxxxx
                                          
                                          #wo sollen die Datenobjekte abgelegt werden
                                           PRE_DP=javascript.0.Wetterstation
                                          
                                          #Bezeichnung der Datenpunkte
                                           DP_TEMP_INNEN=${PRE_DP}.Innentemperatur
                                           DP_TEMP_AUSSEN=${PRE_DP}.Aussentemperatur
                                           DP_TAUPUNKT=${PRE_DP}.Taupunkt
                                           DP_CHILL=${PRE_DP}.Chillfaktor
                                           DP_FEUCHTE_INNEN=${PRE_DP}.Innenfeuchtigkeit
                                           DP_FEUCHTE_AUSSEN=${PRE_DP}.Aussenfeuchtigkeit
                                           DP_WIND=${PRE_DP}.Wind
                                           DP_WIND_MAX=${PRE_DP}.Wind_max
                                           DP_WIND_DIR=${PRE_DP}.Windrichtung
                                           DP_DRUCK_ABS=${PRE_DP}.Druck_absolut
                                           DP_DRUCK_REL=${PRE_DP}.Druck_relativ
                                           DP_REGEN_AKT=${PRE_DP}.Regen_aktuell
                                           DP_REGEN_TAG=${PRE_DP}.Regen_Tag
                                           DP_REGEN_WOCHE=${PRE_DP}.Regen_Woche
                                           DP_REGEN_MONAT=${PRE_DP}.Regen_Monat
                                           DP_REGEN_JAHR=${PRE_DP}.Regen_Jahr
                                           DP_SONNE=${PRE_DP}.Sonnenstrahlung
                                           DP_UV_INDEX=${PRE_DP}.UV_Index
                                           DP_ZEITSTEMPEL=${PRE_DP}.Zeitstempel
                                           DP_KOMFEHLER=${PRE_DP}._Kommunikationsfehler
                                          
                                          ###  Ende Usereinstellungen  
                                          ###  Farbdefinition
                                               GR='\e[1;32m'
                                               GE='\e[1;33m'
                                               WE='\e[1;37m'
                                               BL='\e[1;36m'
                                               RE='\e[1;31m'
                                          
                                          ###-------------------------------------------------------------------------###
                                          ###  Subroutinen - KEINE ÃNDERUNGEN NÖTIG !                                 ###
                                          ###-------------------------------------------------------------------------###
                                          
                                          debuging() {
                                           #Messwerteblock
                                            echo -e "\n\n${WE}Messwerteblock: $GR${MESSWERTERAW[*]}$WE"
                                          
                                           #Datenfelder ausgeben
                                            echo -e "\n\nTemperatur Innen\t: $GR${MESSWERTE[0]}$WE °C"
                                            echo -e "Temperatur Aussen\t: $GR${MESSWERTE[1]}$WE °C"
                                            echo -e "Taupunkt\t\t: $GR${MESSWERTE[2]}$WE °C"
                                            echo -e "Chill-Faktor\t\t: $GR${MESSWERTE[3]}$WE °C"
                                            echo -e "Luftfeuchte Innen\t: $GR${MESSWERTE[4]}$WE %"
                                            echo -e "Luftfeuchte Aussen\t: $GR${MESSWERTE[5]}$WE %"
                                            echo -e "Windgeschwindkeit\t: $GR${MESSWERTE[6]}$WE km/h"
                                            echo -e "max. Windgeschwindkeit\t: $GR${MESSWERTE[7]}$WE km/h"
                                            echo -e "Windrichtung\t\t: $GR${MESSWERTE[8]}$WE °"
                                            echo -e "Luftdruck absolut\t: $GR${MESSWERTE[9]}$WE hPa"
                                            echo -e "Luftdruck relativ\t: $GR${MESSWERTE[10]}$WE hPa"
                                            echo -e "Regen aktuell\t\t: $GR${MESSWERTE[11]}$WE mm"
                                            echo -e "Regen Tag\t\t: $GR${MESSWERTE[12]}$WE mm"
                                            echo -e "Regen Woche\t\t: $GR${MESSWERTE[13]}$WE mm"
                                            echo -e "Regen Monat\t\t: $GR${MESSWERTE[14]}$WE mm"
                                            echo -e "Regen Jahr\t\t: $GR${MESSWERTE[15]}$WE mm"
                                            echo -e "Sonnenstrahlung\t\t: $GR${MESSWERTE[16]}$WE W/m²"
                                            echo -e "UV-Index\t\t: $GR${MESSWERTE[17]}$WE"
                                            echo -e "Zeitstempel\t\t: $GR${MESSWERTE[18]}$WE"
                                            
                                            echo -e "\n\nDatenstring für ioBroker:\n$GR$IOB_DATA$WE\n"
                                          
                                            echo -e "\nDATA von Wetterstation(Passwort auskommentieren!):\n$GR${DAT}$WE\n"
                                          
                                            echo -e "\nDebug VAR:"
                                            echo -e "Installationsverzeichnis: $GE$DIR$WE"
                                            echo -e "IPP: $GE${IPP}$WE\tWS_PORT: $GE${WS_PORT}$WE\t\tWS_POLL: $GE${WS_POLL}$WE\tPRE_DP: $GE${PRE_DP}$WE"
                                            echo -e "Script-Version: $GE$SH_VER$WE\tConfig-Version: $GE${CONF_V}$WE"
                                          
                                           #Shell-Skript mit Fehler beenden
                                             exit 1
                                          }
                                          
                                          ### ioB-Daten senden
                                          iob_send() {
                                            #build Data-String
                                             IOB_DATA=$(cat <<-EOD
                                             ${DP_TEMP_INNEN}=${MESSWERTE[0]}
                                             &${DP_TEMP_AUSSEN}=${MESSWERTE[1]}
                                             &${DP_TAUPUNKT}=${MESSWERTE[2]}
                                             &${DP_CHILL}=${MESSWERTE[3]}
                                             &${DP_FEUCHTE_INNEN}=${MESSWERTE[4]}
                                             &${DP_FEUCHTE_AUSSEN}=${MESSWERTE[5]}
                                             &${DP_WIND}=${MESSWERTE[6]}
                                             &${DP_WIND_MAX}=${MESSWERTE[7]}
                                             &${DP_WIND_DIR}=${MESSWERTE[8]}
                                             &${DP_DRUCK_ABS}=${MESSWERTE[9]}
                                             &${DP_DRUCK_REL}=${MESSWERTE[10]}
                                             &${DP_REGEN_AKT}=${MESSWERTE[11]}
                                             &${DP_REGEN_TAG}=${MESSWERTE[12]}
                                             &${DP_REGEN_WOCHE}=${MESSWERTE[13]}
                                             &${DP_REGEN_MONAT}=${MESSWERTE[14]}
                                                 &${DP_REGEN_JAHR}=${MESSWERTE[15]}
                                             &${DP_SONNE}=${MESSWERTE[16]}
                                             &${DP_UV_INDEX}=${MESSWERTE[17]}
                                             EOD
                                              )
                                            
                                            #Leerzeichen entfernen + Zeitstempel wg. Leerzeichen erst hier anhängen
                                             IOB_DATA=$(echo $IOB_DATA|tr -d " ")
                                             IOB_DATA=${IOB_DATA}\&${DP_ZEITSTEMPEL}=${MESSWERTE[18]}
                                          
                                          
                                            #Daten an den ioB schicken
                                             if [ $debug == "true" ]; then 
                                             curl --data "$IOB_DATA&prettyPrint" http://${IPP}/setBulk
                                               else
                                             curl --data "$IOB_DATA" http://${IPP}/setBulk >/dev/null 2>&1
                                             fi
                                          }
                                          
                                          
                                          
                                          ### Daten holen und Integritätscheck
                                          function get_DATA(){
                                           #auf Daten der Wetterstation warten
                                            DATA=$(timeout 10 nc -lv -p ${WS_PORT}|sed '3 p')
                                            STRLEN=$(echo -n $DATA | wc -m)
                                          
                                           #check auf Datenintigrität
                                            if [ "$STRLEN" -gt "400" ] && [[ "$DATA" =~ "/weatherstation/updateweatherstation.php?ID=${WS_ID}" ]] ; then return 0; else return 1; fi
                                          }
                                          
                                          
                                          
                                          ### Datenkonvertierungen
                                          convertFtoC() { 
                                             MESSWERTE[$i]=`echo "scale=2;(${MESSWERTE[$i]}-32)*5/9" | bc -l`
                                          }
                                          
                                          convertMPHtoKMH() {
                                             MESSWERTE[$i]=`echo "scale=2;(${MESSWERTE[$i]}*16094/10000)" | bc -l`
                                          }
                                          
                                          convertLuftdruck() {
                                             MESSWERTE[$i]=`echo "scale=2;${MESSWERTE[$i]}*33864/1000" | bc -l`
                                          }
                                          
                                          convertInchtoMM() { 
                                             MESSWERTE[$i]=`echo "scale=1;${MESSWERTE[$i]}*254/10" | bc -l`
                                          }
                                          
                                          convertTime() {
                                             	MESSWERTE[$i]=$(echo ${MESSWERTE[$i]}|sed -e 's/%20/ /')
                                             	MESSWERTE[$i]=$(date --date="${MESSWERTE[$i]} UTC" +'%d.%m.%Y %H:%M:%S')
                                             #MESSWERTE[$i]=$(echo ${MESSWERTE[$i]}|awk -F'-|%20' '{printf "%02s.%02s.%s %s", $3, $2, $1, $4}')
                                          }
                                          
                                          
                                          
                                          ###Befehlszeilenparameter
                                          usage() {
                                             echo "usage: wetterstation [[--debug] | [-v] | [-h]"
                                             echo " --debug    einmaliger Testdurchlauf mit Ausgabe"
                                             echo " -v         Ausgabe der Versionsnummer"
                                             echo " -h         dieses Hilfemenue"
                                          }
                                          
                                          version() {
                                             echo -e "$BL ${SH_VER} - (c) 2019-2020 SBorg"
                                          }
                                          
                                          ###EoF
                                          

                                          Wetterstation .sh

                                          #!/bin/bash
                                          
                                          # V0.1.2 - 24.01.2020 (c) 2019-2020 SBorg
                                          #    Froggit WH4000SE
                                          # wertet ein Datenpaket einer WLAN-Wetterstation im Wunderground-Format aus, konvertiert diese und überträgt
                                          # die Daten an den ioBroker
                                          #
                                          # benötigt den 'Simple RESTful API'-Adapter im ioBroker und 'bc' unter Linux
                                          #
                                          # V0.1.2 / 24.01.2020 - + Prüfung auf Datenintegrität
                                          #                       + neuer Datenpunkt bei Kommunikationsfehler
                                          #                       + Ausgabe Datenpaket der Wetterstation bei Debug
                                          # V0.1.1 / 01.01.2020 - + UTC-Korrektur
                                          #			+ Config-Versionscheck
                                          #			+ Shell-Parameter -v/-h/--debug
                                          # V0.1.0 / 29.12.2019 - erstes Release
                                          
                                          
                                          SH_VER="V0.1.2"
                                          CONF_V="V0.1.2"
                                          
                                          
                                          #Installationsverzeichnis feststellen
                                           DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
                                          
                                          #Config-Version prüfen
                                           VER_CONFIG=$(cat ${DIR}/wetterstation.conf|grep '### Setting'|cut -d" " -f3)
                                           if [ $CONF_V != $VER_CONFIG ]; then
                                             echo -e "wetterstation: \e[31mERROR #000 - Config-Version mismatch!\n"
                                             echo -e "benutzt: $VER_CONFIG\t benötigt wird: $CONF_V$WE"
                                             exit 1
                                           fi
                                          
                                          #Konfiguration lesen
                                           . ${DIR}/wetterstation.conf
                                          
                                          #gibt es Parameter?
                                           while [ "$1" != "" ]; do
                                             case $1 in
                                             --debug	)		debug=true   #override
                                             			;;
                                             -v | --version )	version
                                             			exit
                                             			;;
                                                 -h | --help )		usage
                                             			exit
                                                                         ;;
                                                 * )			usage
                                                                         exit 1
                                             esac
                                             shift
                                           done
                                          
                                          
                                          declare -a MESSWERTE
                                          declare -a MESSWERTERAW
                                          
                                          #Check ob Pollintervall grösser 30 Sekunden
                                           if [ ${WS_POLL} -lt "30" ]; then WS_POLL=30; fi
                                          
                                          #Fehlermeldungen resetten
                                           curl http://${IPP}/set/${DP_KOMFEHLER}?value=false >/dev/null 2>&1
                                          
                                          
                                          #Endlosschleife
                                          while true
                                          do
                                          
                                           #Kommunikation herstellen und Daten empfangen
                                            get_DATA
                                          
                                           #KOM-Fehler?
                                           if [ "$?" -eq "0" ]; then
                                          
                                            #DATA zerlegen (Messwerte Block #3-#21)
                                            ii=2
                                            for ((i=0; i<19; i++))
                                             do
                                              let "ii++"
                                              MESSWERTERAW[$i]=$(echo ${DATA}|cut -d'&' -f${ii} | cut -d"=" -f2)
                                              MESSWERTE[$i]=${MESSWERTERAW[$i]}
                                               if [ "$i" -ge "0" ] && [ "$i" -lt "4" ]; then convertFtoC; fi
                                               if [ "$i" -eq "6" ] || [ "$i" -eq "7" ]; then convertMPHtoKMH; fi
                                               if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi
                                               if [ "$i" -ge "11" ] && [ "$i" -lt "16" ]; then convertInchtoMM; fi
                                               if [ "$i" -eq "18" ]; then convertTime; fi
                                             done
                                          
                                            #Daten an ioB schicken
                                             iob_send
                                          
                                          
                                           else
                                            let "KOMFEHLER++"
                                            if [ "$KOMFEHLER" -eq "5" ]; then curl http://${IPP}/set/${DP_KOMFEHLER}?value=true&prettyPrint&ack=true >/dev/null 2>&1;fi
                                           fi
                                          
                                          
                                           #Debug eingeschaltet?
                                            if [ $debug == "true" ]; then debuging; fi
                                          
                                           #...und schlafen gehen
                                            let "schlafe=WS_POLL-5"
                                            sleep $schlafe
                                          
                                          done
                                          
                                          ###EoF
                                          
                                          
                                          


                                          wetterstation.js

                                          ///Wetterstation Datenpunkte anlegen
                                          let DP="javascript.0.Wetterstation."
                                           createState(DP+"Innentemperatur"      ,"", {name: "Temperatur im Haus",          type: "number", role: "state", unit: "°C" });
                                           createState(DP+"Aussentemperatur"     ,"", {name: "Temperatur Außen",            type: "number", role: "state", unit: "°C" });
                                           createState(DP+"Taupunkt"             ,"", {name: "Taupunkt",                    type: "number", role: "state", unit: "°C" });
                                           createState(DP+"Chillfaktor"          ,"", {name: "Chillfaktor",                 type: "number", role: "state", unit: "°C" });
                                           createState(DP+"Innenfeuchtigkeit"    ,"", {name: "Luftfeuchtigkeit Innen",      type: "number", role: "state", unit: "%" });
                                           createState(DP+"Aussenfeuchtigkeit"   ,"", {name: "Luftfeuchtigkeit Außen",      type: "number", role: "state", unit: "%" });
                                           createState(DP+"Wind"                 ,"", {name: "Windgeschwindigkeit",         type: "number", role: "state", unit: "km/h" });
                                           createState(DP+"Wind_max"             ,"", {name: "Windgeschwindigkeit maximal", type: "number", role: "state", unit: "km/h" });
                                           createState(DP+"Windrichtung"         ,"", {name: "Windrichtung",                type: "number", role: "state", unit: "°" });
                                           createState(DP+"Druck_absolut"        ,"", {name: "Luftdruck absolut",           type: "number", role: "state", unit: "hPa" });
                                           createState(DP+"Druck_relativ"        ,"", {name: "Luftdruck relativ",           type: "number", role: "state", unit: "hPa" });
                                           createState(DP+"Regen_aktuell"        ,"", {name: "aktuelle Regenmenge",         type: "number", role: "state", unit: "mm" });
                                           createState(DP+"Regen_Tag"            ,"", {name: "Regenmenge Heute",            type: "number", role: "state", unit: "mm" });
                                           createState(DP+"Regen_Woche"          ,"", {name: "Regenmenge Woche",            type: "number", role: "state", unit: "mm" });
                                           createState(DP+"Regen_Monat"          ,"", {name: "Regenmenge Monat",            type: "number", role: "state", unit: "mm" });
                                           createState(DP+"Regen_Jahr"          ,"", {name: "Regenmenge Jahr",            type: "number", role: "state", unit: "mm" });
                                           createState(DP+"Sonnenstrahlung"      ,"", {name: "Sonnenstrahlung",             type: "number", role: "state", unit: "W/m²" });
                                           createState(DP+"UV_Index"             ,"", {name: "UV Index",                    type: "number", role: "state" });
                                           createState(DP+"Zeitstempel"          ,"", {name: "von wann ist die Messung",    type: "string", role: "state" });
                                           createState(DP+"_Kommunikationsfehler","", {name: "liegt ein Problem vor",       type: "boolean",role: "state" });
                                          
                                          

                                          Ausgabe mit nc -lv -p 9999

                                          root@raspberrypi:/home/pi# sudo nc -lv -p 9999
                                          Listening on [0.0.0.0] (family 0, port 9999)
                                          Connection from 192.168.178.42 14965 received!
                                          GET /weatherstation/updateweatherstation.php?ID=xxxxxxx&PASSWORD=xxxxxxxxx&indoortempf=59.4&tempf=72.5&dewptf=55.9&windchillf=72.5&indoorhumidity=66&humidity=56&windspeedmph=0.0&windgustmph=0.0&winddir=307&absbaromin=29.534&baromin=29.534&rainin=0.000&dailyrainin=0.012&weeklyrainin=0.012&monthlyrainin=0.012&yearlyrainin=0.012&solarradiation=0.00&UV=0&dateutc=2020-01-30%2022:08:28&softwaretype=EasyWeatherV1.4.4&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0
                                          Host: 192.168.178.41
                                          Accept:*/*
                                          Connection: Close
                                          
                                          

                                          Synology 918+ 16GB - ioBroker in Docker v9 , VISO auf Trekstor Primebook C13 13,3" , Hikvision Domkameras mit Surveillance Station .. CCU RaspberryMatic in Synology VM .. Zigbee CC2538+CC2592 .. Sonoff .. KNX .. Modbus ..

                                          1 Antwort Letzte Antwort
                                          1
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          387

                                          Online

                                          32.4k

                                          Benutzer

                                          81.4k

                                          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