Navigation

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

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • liv-in-sky
      liv-in-sky @Negalein last edited by

      @Negalein

      siehe hier:

      anim-gif10.gif

      Negalein 1 Reply Last reply Reply Quote 3
      • Negalein
        Negalein Global Moderator @liv-in-sky last edited by

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

        siehe hier:

        cool, das ist perfekt 🙂

        liv-in-sky 1 Reply Last reply Reply Quote 0
        • liv-in-sky
          liv-in-sky @Negalein last edited by

          @Negalein

          ich lege das script in einen thread von mir - sonst find ich das später nicht mehr

          https://forum.iobroker.net/topic/38286/vis-tabelle-für-wlan-wetterstation

          1 Reply Last reply Reply Quote 0
          • C
            chrissi1 last edited by

            Hallo,

            ich habe die Eurochron EFWS2900 Wetterstation.

            Die Station läuft, in der App habe ich alle Daten eingegeben.

            Die Datenpunkte im ioBroker (Raspberry 4) sind auch angelegt.

            Im Verzeichnis /home/iobroker habe die drei Dateien angelegt: wetterstation.sh, wetterstation.sub und wetterstation.conf

            Wenn ich folgenden Befehl in Putty ausführe: ./wetterstation.sh --debug

            Erscheint diese Fehlermeldung: /bin/bash: V1.4.0 - 30.10.2020 (c) 2019-2020 SBorg: Datei oder Verzeichnis nicht gefunden

            Was mache ich falsch?

            Mit dem Ping-Befehl: ping IP-Adresse kommt was in Putty an, d.h. die Wetterstation ist erreichbar.

            Thomas Braun 1 Reply Last reply Reply Quote 0
            • Thomas Braun
              Thomas Braun Most Active @chrissi1 last edited by

              @chrissi1 Vermutlich stehst du nicht im Verzeichnis, in dem wetterstation.sh liegt.

              C 1 Reply Last reply Reply Quote 0
              • C
                chrissi1 @Thomas Braun last edited by

                @Thomas-Braun

                Doch eigentlich befinde ich mich im korrekten Verzeichnis.

                Unbenannt1.PNG

                Thomas Braun 1 Reply Last reply Reply Quote 0
                • Thomas Braun
                  Thomas Braun Most Active @chrissi1 last edited by

                  @chrissi1 Bitte keine Screenshots, sondern Text auch als Text in CodeTags einbetten.

                  Dann fehlt da vermutlich das Kommentarzeichen vor der Zeile mit dem Text
                  den ich jetzt (wegen Screenshot) nicht kopieren kann.

                  C 1 Reply Last reply Reply Quote 0
                  • C
                    chrissi1 @Thomas Braun last edited by

                    @Thomas-Braun ok, werde ich beim nächsten Mal beachten.

                    Aber welches Kommentarzeichen fehlt denn?

                    Thomas Braun 2 Replies Last reply Reply Quote 0
                    • Thomas Braun
                      Thomas Braun Most Active @chrissi1 last edited by

                      @chrissi1
                      Ein # wohl.

                      1 Reply Last reply Reply Quote 0
                      • Thomas Braun
                        Thomas Braun Most Active @chrissi1 last edited by

                        @chrissi1 Poste mal die ersten Zeilen des skriptes. Vollständig. In CodeTags.

                        C 1 Reply Last reply Reply Quote 0
                        • C
                          chrissi1 @Thomas Braun last edited by

                          @Thomas-Braun hier das Skript:

                          
                          # V1.4.0 - 30.10.2020 (c) 2019-2020 SBorg
                          #
                          # wertet ein Datenpaket einer WLAN-Wetterstation im Wunderground-Format aus, konvertiert dieses und überträgt
                          # die Daten an den ioBroker
                          #
                          # benötigt den 'Simple RESTful API'-Adapter im ioBroker, 'jq' (nur openSenseMap) und 'bc' unter Linux
                          #
                          # V1.4.0 / 30.10.2020 - + Support für openSenseMap
                          # V1.3.1 / 08.10.2020 - ~ Fix falls Leerzeichen im Verzeichnisnamen
                          # V1.3.0 / 19.06.2020 - + letztes Regenereignis und Regenmenge
                          #                       + Fehlermeldung bei falscher WS_ID / ID der Wetterstation
                          #                       + Sonnenscheindauer + Solarenergie vom Vortag
                          #                       ~ Änderung/Fix Sonnenscheindauer
                          # V1.2.0 / 20.04.2020 - + Firmwareupgrade verfügbar?
                          #                       + Firmwareversion
                          #                       + Sonnenscheindauer Heute, Woche, Monat, Jahr
                          #                       + UV-Belastung
                          #                       + Solarenergie Heute, Woche, Monat, Jahr
                          #                       + Vorjahreswerte von Regenmenge, Sonnenscheindauer und Solarenergie
                          # V1.1.0 / 03.04.2020 - + aktueller Regenstatus
                          #                       + Luftdrucktendenz, Wettertrend und aktuelles Wetter
                          # V1.0.0 / 12.03.2020 - + Berechnung Jahresregenmenge
                          #                       + Windrichtung zusätzlich als Text
                          #                       ~ Änderung "Regen Aktuell" in "Regenrate"
                          #                       ~ Splitt in conf- + sub-Datei
                          # V0.1.3 / 08.02.2020 - + Unterstützung für Datenpunkt "Regenmenge Jahr", zB. für Froggit WH4000 SE
                          #                       + Shell-Parameter -s (Klartextanzeige Passwort + Station-ID)
                          #                       + Shell-Parameter --data (zeigt nur das gesendete Datenpaket der Wetterstation an)
                          # V0.1.2 / 31.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="V1.4.0"
                           CONF_V="V1.4.0"
                           SUBVER="V1.4.0"
                          
                          
                           #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
                          
                           #Sub-Version prüfen
                            SUB_CONFIG=$(cat "${DIR}/wetterstation.sub"|grep '### Subroutinen'|cut -d" " -f3)
                            if [ $SUBVER != $SUB_CONFIG ]; then
                          	echo -e "wetterstation: \e[31mERROR #001 - Subroutinen-Version mismatch!\n"
                          	echo -e "benutzt: $SUB_CONFIG\t benötigt wird: $SUBVER$WE"
                          	exit 1
                            fi
                          
                          
                           #Konfiguration lesen + Subroutinen laden
                            . "${DIR}/wetterstation.conf"
                            . "${DIR}/wetterstation.sub"
                          
                          
                           #gibt es Parameter?
                            while [ "$1" != "" ]; do
                              case $1 in
                                  --debug )               debug=true   #override
                                                          ;;
                                  --osem_reg )            osem_register
                                                          exit
                                                          ;;
                                  -s | --show )           show_pwid=true
                                                          ;;
                                  -d | --data )           setup
                                                          ws_data
                                                          exit
                                                          ;;
                                  -v | --version )        version
                                                          exit
                                                          ;;
                                  -h | --help )           usage
                                                          exit
                                                          ;;
                                  * )                     usage
                                                          exit 1
                              esac
                              shift
                            done
                          
                           #Setup ausführen
                            setup
                          
                          
                          
                          
                          #Endlosschleife
                          while true
                           do
                          
                            #Kommunikation herstellen und Daten empfangen
                             get_DATA
                          
                            #KOM-Fehler?
                            if [ "$?" -eq "0" ]; then
                          
                             #DATA zerlegen (Messwerte Block #3-#22)
                             ii=2
                             for ((i=0; i<20; 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 "8" ]; then winddir; fi
                                if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi
                                if [ "$i" -ge "11" ] && [ "$i" -lt "16" ]; then convertInchtoMM; fi
                                if [ "$i" -eq "16" ]; then sonnenpuls; fi
                                if [ "$i" -eq "17" ]; then uv_belastung; 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&ack=true" >/dev/null 2>&1;fi
                            fi
                          
                          
                            #Debug eingeschaltet?
                             if [ $debug == "true" ]; then debuging; fi
                          
                            #Mitternachtjobs
                             if [ `date +%H` -ge "23" ] && [ `date +%M` -ge "58" ] && [ -z $MIDNIGHTRUN ]; then
                          	rain               #Jahresregenmenge
                          	firmware_check     #neue Firmware
                          	reset_zaehler      #Sonnenscheindauer, Solarenergie zurücksetzen (enthällt auch Speicherung Werte VorJahr)
                             fi
                             if [ `date +%H` -eq "0" ] && [ `date +%M` -le "3" ]; then unset MIDNIGHTRUN; fi
                          
                          
                            #Wetterprognose
                             DO_IT=`date +%M`
                             DO_IT=${DO_IT#0}
                             if [ $(( $DO_IT % 15 )) -eq "0" ] && [ `date +%s` -ge "$TIMER_SET" ]; then wetterprognose; fi
                          
                            #openSenseMap
                             if [ ${openSenseMap} == "true" ]; then opensensemap; fi
                           done
                          
                          ###EoF```
                          Thomas Braun 1 Reply Last reply Reply Quote 0
                          • Thomas Braun
                            Thomas Braun Most Active @chrissi1 last edited by

                            @chrissi1
                            Das fängt so an?
                            Da fehlt die shebang

                            Trag da mal als allererste Zeile ein:

                            #!/bin/bash
                            
                            Negalein 1 Reply Last reply Reply Quote 0
                            • Negalein
                              Negalein Global Moderator @Thomas Braun last edited by Negalein

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

                              Das fängt so an?

                              Nö, Originalscript

                              @chrissi1

                              #!/bin/bash
                              
                              # V1.4.0 - 30.10.2020 (c) 2019-2020 SBorg
                              #
                              # wertet ein Datenpaket einer WLAN-Wetterstation im Wunderground-Format aus, konvertiert dieses und überträgt
                              # die Daten an den ioBroker
                              #
                              # benötigt den 'Simple RESTful API'-Adapter im ioBroker, 'jq' (nur openSenseMap) und 'bc' unter Linux
                              #
                              # V1.4.0 / 30.10.2020 - + Support für openSenseMap
                              # V1.3.1 / 08.10.2020 - ~ Fix falls Leerzeichen im Verzeichnisnamen
                              # V1.3.0 / 19.06.2020 - + letztes Regenereignis und Regenmenge
                              #                       + Fehlermeldung bei falscher WS_ID / ID der Wetterstation
                              #                       + Sonnenscheindauer + Solarenergie vom Vortag
                              #                       ~ Änderung/Fix Sonnenscheindauer
                              # V1.2.0 / 20.04.2020 - + Firmwareupgrade verfügbar?
                              #                       + Firmwareversion
                              #                       + Sonnenscheindauer Heute, Woche, Monat, Jahr
                              #                       + UV-Belastung
                              #                       + Solarenergie Heute, Woche, Monat, Jahr
                              #                       + Vorjahreswerte von Regenmenge, Sonnenscheindauer und Solarenergie
                              # V1.1.0 / 03.04.2020 - + aktueller Regenstatus
                              #                       + Luftdrucktendenz, Wettertrend und aktuelles Wetter
                              # V1.0.0 / 12.03.2020 - + Berechnung Jahresregenmenge
                              #                       + Windrichtung zusätzlich als Text
                              #                       ~ Änderung "Regen Aktuell" in "Regenrate"
                              #                       ~ Splitt in conf- + sub-Datei
                              # V0.1.3 / 08.02.2020 - + Unterstützung für Datenpunkt "Regenmenge Jahr", zB. für Froggit WH4000 SE
                              #                       + Shell-Parameter -s (Klartextanzeige Passwort + Station-ID)
                              #                       + Shell-Parameter --data (zeigt nur das gesendete Datenpaket der Wetterstation an)
                              # V0.1.2 / 31.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="V1.4.0"
                               CONF_V="V1.4.0"
                               SUBVER="V1.4.0"
                              
                              
                               #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
                              
                               #Sub-Version prüfen
                                SUB_CONFIG=$(cat "${DIR}/wetterstation.sub"|grep '### Subroutinen'|cut -d" " -f3)
                                if [ $SUBVER != $SUB_CONFIG ]; then
                              	echo -e "wetterstation: \e[31mERROR #001 - Subroutinen-Version mismatch!\n"
                              	echo -e "benutzt: $SUB_CONFIG\t benötigt wird: $SUBVER$WE"
                              	exit 1
                                fi
                              
                              
                               #Konfiguration lesen + Subroutinen laden
                                . "${DIR}/wetterstation.conf"
                                . "${DIR}/wetterstation.sub"
                              
                              
                               #gibt es Parameter?
                                while [ "$1" != "" ]; do
                                  case $1 in
                                      --debug )               debug=true   #override
                                                              ;;
                                      --osem_reg )            osem_register
                                                              exit
                                                              ;;
                                      -s | --show )           show_pwid=true
                                                              ;;
                                      -d | --data )           setup
                                                              ws_data
                                                              exit
                                                              ;;
                                      -v | --version )        version
                                                              exit
                                                              ;;
                                      -h | --help )           usage
                                                              exit
                                                              ;;
                                      * )                     usage
                                                              exit 1
                                  esac
                                  shift
                                done
                              
                               #Setup ausführen
                                setup
                              
                              
                              
                              
                              #Endlosschleife
                              while true
                               do
                              
                                #Kommunikation herstellen und Daten empfangen
                                 get_DATA
                              
                                #KOM-Fehler?
                                if [ "$?" -eq "0" ]; then
                              
                                 #DATA zerlegen (Messwerte Block #3-#22)
                                 ii=2
                                 for ((i=0; i<20; 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 "8" ]; then winddir; fi
                                    if [ "$i" -eq "9" ] || [ "$i" -eq "10" ]; then convertLuftdruck; fi
                                    if [ "$i" -ge "11" ] && [ "$i" -lt "16" ]; then convertInchtoMM; fi
                                    if [ "$i" -eq "16" ]; then sonnenpuls; fi
                                    if [ "$i" -eq "17" ]; then uv_belastung; 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&ack=true" >/dev/null 2>&1;fi
                                fi
                              
                              
                                #Debug eingeschaltet?
                                 if [ $debug == "true" ]; then debuging; fi
                              
                                #Mitternachtjobs
                                 if [ `date +%H` -ge "23" ] && [ `date +%M` -ge "58" ] && [ -z $MIDNIGHTRUN ]; then
                              	rain               #Jahresregenmenge
                              	firmware_check     #neue Firmware
                              	reset_zaehler      #Sonnenscheindauer, Solarenergie zurücksetzen (enthällt auch Speicherung Werte VorJahr)
                                 fi
                                 if [ `date +%H` -eq "0" ] && [ `date +%M` -le "3" ]; then unset MIDNIGHTRUN; fi
                              
                              
                                #Wetterprognose
                                 DO_IT=`date +%M`
                                 DO_IT=${DO_IT#0}
                                 if [ $(( $DO_IT % 15 )) -eq "0" ] && [ `date +%s` -ge "$TIMER_SET" ]; then wetterprognose; fi
                              
                                #openSenseMap
                                 if [ ${openSenseMap} == "true" ]; then opensensemap; fi
                               done
                              
                              ###EoF
                              
                              Thomas Braun 1 Reply Last reply Reply Quote 0
                              • Thomas Braun
                                Thomas Braun Most Active @Negalein last edited by Thomas Braun

                                @Negalein
                                Sag ich doch... 🙂

                                Vermutlich beim copy&paste die shebang nicht mitkopiert.

                                1 Reply Last reply Reply Quote 0
                                • C
                                  chrissi1 last edited by

                                  So, es klappt jetzt soweit erstmal.

                                  Ich habe alle drei Dateien gelöscht und nochmal neu erstellt.

                                  Danach habe ich auf Github die drei Dateien angeklickt, aufgerufen und dort alles kopiert.

                                  Vorher habe ich das Projekt von Github als ZIP-Datei gedownloadet und die drei Dateien mit Notepad geöffnet, alles markiert, kopiert und in Putty eingefügt.

                                  Das scheint wohl nicht zu klappen.

                                  Jetzt führe ich laut Anleitung noch folgenden Punkt durch und hoffe das dann alles funktioniert.

                                  Einstellung als Autostart (Möglichkeit #1 per systemd)

                                  Ich danke euch.

                                  Thomas Braun Negalein 2 Replies Last reply Reply Quote 0
                                  • Thomas Braun
                                    Thomas Braun Most Active @chrissi1 last edited by

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

                                    mit Notepad

                                    Achtung, Windows Notepad nutzt andere Zeilenschaltungen als Linux.

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

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

                                      mit Notepad

                                      verwende dafür Notepad++

                                      C 1 Reply Last reply Reply Quote 0
                                      • C
                                        chrissi1 @Negalein last edited by

                                        @Negalein Notepad++ habe ich verwendet, aber naja. 🙄

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

                                          Immerhin scheinen doch wesentlich mehr das Projekt zu nutzen als die 10 Up-Votings im Eingangspost vermuten lassen. Stellenweise fragt man sich nämlich schon ob die viele Zeit sinnvoll verbraten ist 😉
                                          Leider kann ich über GitHub auch nicht die Anzahl der Downloads ermitteln. Was mir aber auffiel, seit ich mit OSEM-Programmierung anfing, kamen so 1-2 SenseBoxen pro Woche dazu.
                                          Erste Beta: +10 SenseBoxen
                                          offizielle Veröffentlichung der V1.4.0: binnen 6 Stunden +40 SenseBoxen
                                          ...und seit Beginn bis Heute insgesamt rund +80 SenseBoxen

                                          Ja ich könnte auch ein "NachHausefunken" implementieren und darüber die Anzahl der Installationen ermitteln, aber da bin ich kein Freund von (und ja, ich kann das auch fest einbauen damit man es nicht deaktivieren kann. Auch ein Shell-Skript lässt sich binär codieren...) und der "Nutzen" liegt dann genau wo?

                                          Vielleicht denkt also der stille User/Nutzer mal darüber nach 5 Sekunden Zeit zu investieren und im 1. Post ein Up-Vote da zulassen. Kostet nix, ich bekomme dafür auch nix, nur sehe ich halt, dass mehr Interesse besteht als nur der "harte Kern" der hier regelmäßig postet und ggf. eine angestiegene Anzahl von SenseBox-Registrierungen... 🙂

                                          wendy2702 da_Woody 2 Replies Last reply Reply Quote 2
                                          • wendy2702
                                            wendy2702 @SBorg last edited by

                                            @SBorg Up-Vote ist das kleinste Problem.

                                            🙂

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            940
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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