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

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [Linux Shell-Skript] WLAN-Wetterstation

    This topic has been deleted. Only users with topic management privileges can see it.
    • C
      Christian 3 @Rand last edited by

      @rand Besten Dank für Deine Hinweise.
      Zunächst habe ich es mit droppen probiert, Datenbanken sind nicht so ganz mein Ding.
      Da weiterhin Fehlermeldung im Log zu sehen waren und ich so recht nicht wusste, wie und wo, habe ich eine weitere Datenbank installiert. Und dieses Mal hatte ich Glück, der erste Wert war wohl gut genug, diese zweite Datenbank wird nun mit Daten gefüllt.
      Tolle Sache, Danke.

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

        @christian-3 Ne, Glück war das diesmal nicht 🙂
        Du hast Influx dazu "gezwungen" es als "Zahl" anzulegen, da du in den Einstellungen "Number" definiert hast. Steht es da auf "Automatic", dann brauchst du Glück 😁

        Man kann sich auch den entsprechenden Typ anschauen. Dabei muss halt ein Zahlenwert "float" sein, ein Text eben "string":
        Bild 2.png
        ...aber wie erwähnt, sollte hier bspw. bei der Aussentemperatur dann string stehen, hilft nur droppen...
        Deswegen am besten nie den "Automatic"-Modus wählen, schließlich wisst(*) ihr was in dem Datenpunkt stehen wird.

        (*)... und nu? Das ist doch aber String: 18 °C
        Bild 1.png
        Steht doch auch beim Maus-Over als "Wert"...
        ...Noppe, hier wird gleichzeitig die "Unit" (=Einheit des DPs) mit angezeigt. Es hilft also im Zweifelsfall wirklich nur ein Klick auf den Wert des Datenpunktes, dann sieht man tatsächlich nur den reinen Inhalt des DPs: 18 (und das ist eben eine Zahl)

        ...und bevor jemand auf die Idee kommt: Nein, das hat speziell mit diesem Projekt hier nichts zu tun, dass gilt ioB übergreifend und ist immer so 😊

        1 Reply Last reply Reply Quote 1
        • W
          west last edited by west

          Hallo ich kriege keine Daten aus meiner Wetterstation WS3500.

          pi@raspberrypi:~/WLAN-Wetterstation $ sudo ./wetterstation.sh --debug
          Connection to 192.168.178.12 8087 port [tcp/*] succeeded!
          Listening on [0.0.0.0] (family 2, port 1080)
          
          
          Messwerteblock: 
          
          
          Nicht alle Werte werden unterstützt (abhängig vom Modell der Wetterstation und dem verwendeten Protokoll)!
          
          Temperatur Innen	:  °C
          Temperatur Aussen	:  °C
          Taupunkt		:  °C
          Gefühlte Temperatur	:  °C
          Luftfeuchte Innen	:  %
          Luftfeuchte Aussen	:  %
          Windgeschwindkeit	:  km/h
          Windböengeschwindkeit	:  km/h
          max. Windböe		:  km/h
          Windrichtung		:  °
          Windrichtung		: 
          Luftdruck absolut	:  hPa
          Luftdruck relativ	:  hPa
          Regenrate		:  mm/h
          Regenstatus		: 
          Regen seit Regenbeginn	:  mm
          Regen Stunde		:  mm
          Regen Tag		:  mm
          Regen Woche		:  mm
          Regen Monat		:  mm
          Regen Jahr		:  mm
          Regen Gesamt		:  mm
          Sonnenstrahlung		:  W/m²
          UV-Index		: 
          Zeitstempel		: 
          Firmware		: 
          Batteriestand:		: 
          Gateway-Modell		: 
          
          Zusatzsensoren:
          
          
          
          Datenstring für ioBroker:
          
          
          
          DATA von Wetterstation:
          
          
          
          Debug VAR:
          Installationsverzeichnis: /home/pi/WLAN-Wetterstation
          IPP: 192.168.178.12:8087	WS_PORT: 1080		WS_POLL: 16		PRE_DP: javascript.0.Wetterstation
          WEB: HTTP		WS_PROT: Ecowitt	DP50/60/70/100/200: 0 | 0 | 0 | 0 | 0 
          Script-Version: V2.5.0	Config-Version: V2.5.0	Sub-Version: V2.5.0
          
          Kommunikationsfehler!
          
          

          wetterstation.conf

           ### Settings V2.5.0 -----------------------------------------------------------
           #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.12:8087
          
           #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=Sainlogic Profi / default: 1
            WS_PROTOKOLL=2
          
           #Anzahl der vorhandenen Zusatzsensoren / default: 0
            ANZAHL_DP50=0
            ANZAHL_DP60=0
            ANZAHL_DP70=0
            ANZAHL_DP100=0
            ANZAHL_DP200=0
          
           #Protokoll (HTTP oder HTTPS) / default: HTTP
            WEB=HTTP
           
           #User-Authentifizierung falls benutzt; sonst leer lassen
            AUTH_USER= 
            AUTH_PASS=
          
           #Port der Wetterstation
            WS_PORT=1080
          
           #Pollintervall der Wetterstation in Sekunden (minimal 16 Sekunden)
            WS_POLL=16
          
           #Name/ID der Wetterstation
            WS_ID=ZuHause
          
           #wo sollen die Datenobjekte abgelegt werden
            PRE_DP=javascript.0.Wetterstation
          
           #InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen
            #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx]
             INFLUX_API=
            #Name, User und Passwort der InfluxDB-Datenbank
             INFLUX_DB=
             INFLUX_USER=
             INFLUX_PASSWORD=
          
           #letztes Regenereignis als [DATUM], [UNIX]-Timestamp oder [DIFF]erenz ("vor xx Tagen")
           # DATUM = 28.04.2020 13:12
           # UNIX  = 1588074964
           # DIFF  = gerade eben / vor einer Stunde / vor 23 Stunden / vor einem Tag / vor 12 Tagen
          
            LAST_RAIN=DIFF
           
           #Text-Format für Datenpunkte "Sonnenschein_[Tag|Woche|Monat|Jahr]_Text"
           # zweistellig wird ggf. mit einer führenden "0" aufgefüllt
           # d = Tag(e) 0...n ein- und mehrstellig / h = Stunden 0...n ein- oder mehrstellig
           # hh = Stunden zweistellig (00...23) / mm = Minuten zweistellig (00...59) / ss = Sekunden zweistellig (00...59)
           #
           # Beispiel: 68 Stunden, 2 Minuten und 15 Sekunden
           #
           # Auswahl                            | Ausgabe im Datenpunkt
           # ----------------------------------------------------------------------------
           # [0] = h Std. mm Min. ss Sek.       | 68 Std. 02 Min. 15 Sek.
           # [1] = h:mm                         | 68:02
           # [2] = d Tag/e h Std.               | 2 Tage 20 Std.
           # [3] = d Tag/e, h Std, m Min        | 2 Tage, 20 Std, 2 Min (Anzeige Tage erst bei >0)
            
            SONNENSCHEIN_TXTFORMAT=3
          
          
          
           #############################################################################################
           ###    openSenseMap - Einstellungen (nur nötig falls openSenseMap benutzt werden soll)    ###
           ###                                                                                       ###
           ###    Für die Registrierung muss "openSenseMap" auf "false" eingestellt sein!            ###
           ###    Erst wenn auch Sensoren angelegt wurden, darf auf "true" umgestellt werden!        ###
           #############################################################################################
            
            #openSenseMap aktivieren [true/false] / default: false
             openSenseMap=false
          
            #SenseBox-User
             senseBox_USER=
          
            #SenseBox-Password
             senseBox_PWD=
          
            #ID der senseBox (24-stellig)
             senseBox_ID=
          
            #Security-Token der Box
             BOX_TOKEN=
          
          
          
            ### Die restlichen Einstellungen für OpenSenseMap werden vom System generiert/benutzt ######
            ### Änderungen sind hier nicht nötig, außer man weiß ganz genau was man tut! ###############
          
            #Sensor-IDs (wird automatisch anhand der Sensoren erzeugt)
             SENSEBOX_IDSENSOR=()
          
            #Sensor-Bezeichnung (Reihenfolge muss zur Sensor-ID identisch sein!)
             SENSEBOX_IDNAME=("Temperatur" "Luftfeuchte" "Luftdruck relativ" "Luftdruck absolut" "Taupunkt" "gefühlte Temperatur" "Sonnenstrahlung" "Windgeschwindigkeit" "Windrichtung" "UV-Index" "Regenrate")
          
            #Messwertezuordnung (Reihenfolge muss zur Sensor-ID identisch sein!)
             SENSEBOX_IDMESSWERT=(1 5 10 9 2 3 16 6 8 17 11)
          
            #Sensorendefinitionen
             ICONS=(osem-thermometer osem-humidity osem-barometer osem-barometer osem-thermometer osem-thermometer osem-brightness osem-particulate-matter osem-particulate-matter osem-brightness osem-umbrella)
             UNITS=('°C' '%H' 'hPa' 'hPa' '°C' '°C' 'W/m²' 'km/h' '°' 'Index' 'mm/h')
          
           #############################################################################################
           ###    openSenseMap - Ende der Einstellungen    #############################################
           #############################################################################################
          
          
          ###  Ende Usereinstellungen  
          ###EoF
          
          
          
          wendy2702 R 2 Replies Last reply Reply Quote 0
          • wendy2702
            wendy2702 @west last edited by

            @west Und die Wetterstation ist richtig konfiguriert?

            W 1 Reply Last reply Reply Quote 0
            • R
              Rand @west last edited by

              @SBorg

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

              Hallo ich kriege keine Daten aus meiner Wetterstation WS3500.

              Was mich daran erinnert, wenn man ein Gateway ohne Sensoren einbindet ist die Stringlänge <200 und (zumindestens ältere Versionen) schmeisst einen Fehler; was einen als Anfänger doch etwas irritiert...

              SBorg 1 Reply Last reply Reply Quote 0
              • W
                west @wendy2702 last edited by

                @wendy2702 Screenshot_20210221-191032.jpg

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

                  @west
                  sollte da nicht mehr in PATH stehen?
                  Bei mir steht: /weatherstation/updateweatherstation.php?

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

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

                    sollte da nicht mehr in PATH stehen?

                    @west

                    definitiv

                    siehe Wiki

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

                      @rand Nicht mehr, ist seit ( ? ) auf <150 geändert.

                      @Latzi , @Negalein Nicht mehr, wenn man "Ecowitt" nutzt braucht man den Pfad nicht mehr + ein "/" genügt 😉
                      @west "35" ist die IP auf dem das Skript läuft? Was bringt denn ein ./wetterstation.sh --data ?

                      W R 2 Replies Last reply Reply Quote 0
                      • W
                        west @Negalein last edited by

                        @negalein
                        Wenn man das Wunderground-Protokolle verwendet ja.

                        Screenshot_20210221-194010.jpg

                        ### Settings V2.5.0 -----------------------------------------------------------
                         #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.12:8087
                        
                         #Protokoll der Wetterstation [1/2/9] / 1=Wunderground ; 2=Ecowitt ; 9=Sainlogic Profi / default: 1
                          WS_PROTOKOLL=1
                        
                         #Anzahl der vorhandenen Zusatzsensoren / default: 0
                          ANZAHL_DP50=0
                          ANZAHL_DP60=0
                          ANZAHL_DP70=0
                          ANZAHL_DP100=0
                          ANZAHL_DP200=0
                        
                         #Protokoll (HTTP oder HTTPS) / default: HTTP
                          WEB=HTTP
                         
                         #User-Authentifizierung falls benutzt; sonst leer lassen
                          AUTH_USER= 
                          AUTH_PASS=
                        
                         #Port der Wetterstation
                          WS_PORT=8084
                        
                         #Pollintervall der Wetterstation in Sekunden (minimal 16 Sekunden)
                          WS_POLL=16
                        
                         #Name/ID der Wetterstation
                          WS_ID=ZuHause
                        
                         #wo sollen die Datenobjekte abgelegt werden
                          PRE_DP=javascript.0.Wetterstation
                        
                         #InfluxDB-Konfiguration / ohne InfluxDB alles leer lassen
                          #IP und Port der API [xxx.xxx.xxx.xxx:xxxxx]
                           INFLUX_API=
                          #Name, User und Passwort der InfluxDB-Datenbank
                           INFLUX_DB=
                           INFLUX_USER=
                           INFLUX_PASSWORD=
                        
                         #letztes Regenereignis als [DATUM], [UNIX]-Timestamp oder [DIFF]erenz ("vor xx Tagen")
                         # DATUM = 28.04.2020 13:12
                         # UNIX  = 1588074964
                         # DIFF  = gerade eben / vor einer Stunde / vor 23 Stunden / vor einem Tag / vor 12 Tagen
                        
                          LAST_RAIN=DIFF
                         
                         #Text-Format für Datenpunkte "Sonnenschein_[Tag|Woche|Monat|Jahr]_Text"
                         # zweistellig wird ggf. mit einer führenden "0" aufgefüllt
                         # d = Tag(e) 0...n ein- und mehrstellig / h = Stunden 0...n ein- oder mehrstellig
                         # hh = Stunden zweistellig (00...23) / mm = Minuten zweistellig (00...59) / ss = Sekunden zweistellig (00...59)
                         #
                         # Beispiel: 68 Stunden, 2 Minuten und 15 Sekunden
                         #
                         # Auswahl                            | Ausgabe im Datenpunkt
                         # ----------------------------------------------------------------------------
                         # [0] = h Std. mm Min. ss Sek.       | 68 Std. 02 Min. 15 Sek.
                         # [1] = h:mm                         | 68:02
                         # [2] = d Tag/e h Std.               | 2 Tage 20 Std.
                         # [3] = d Tag/e, h Std, m Min        | 2 Tage, 20 Std, 2 Min (Anzeige Tage erst bei >0)
                          
                          SONNENSCHEIN_TXTFORMAT=3
                        
                        
                        
                         #############################################################################################
                         ###    openSenseMap - Einstellungen (nur nötig falls openSenseMap benutzt werden soll)    ###
                         ###                                                                                       ###
                         ###    Für die Registrierung muss "openSenseMap" auf "false" eingestellt sein!            ###
                         ###    Erst wenn auch Sensoren angelegt wurden, darf auf "true" umgestellt werden!        ###
                         #############################################################################################
                          
                          #openSenseMap aktivieren [true/false] / default: false
                           openSenseMap=false
                        
                          #SenseBox-User
                           senseBox_USER=
                        
                          #SenseBox-Password
                           senseBox_PWD=
                        
                          #ID der senseBox (24-stellig)
                           senseBox_ID=
                        
                          #Security-Token der Box
                           BOX_TOKEN=
                        
                        
                        
                          ### Die restlichen Einstellungen für OpenSenseMap werden vom System generiert/benutzt ######
                          ### Änderungen sind hier nicht nötig, außer man weiß ganz genau was man tut! ###############
                        
                          #Sensor-IDs (wird automatisch anhand der Sensoren erzeugt)
                           SENSEBOX_IDSENSOR=()
                        
                          #Sensor-Bezeichnung (Reihenfolge muss zur Sensor-ID identisch sein!)
                           SENSEBOX_IDNAME=("Temperatur" "Luftfeuchte" "Luftdruck relativ" "Luftdruck absolut" "Taupunkt" "gefühlte Temperatur" "Sonnenstrahlung" "Windgeschwindigkeit" "Windrichtung" "UV-Index" "Regenrate")
                        
                          #Messwertezuordnung (Reihenfolge muss zur Sensor-ID identisch sein!)
                           SENSEBOX_IDMESSWERT=(1 5 10 9 2 3 16 6 8 17 11)
                        
                          #Sensorendefinitionen
                           ICONS=(osem-thermometer osem-humidity osem-barometer osem-barometer osem-thermometer osem-thermometer osem-brightness osem-particulate-matter osem-particulate-matter osem-brightness osem-umbrella)
                           UNITS=('°C' '%H' 'hPa' 'hPa' '°C' '°C' 'W/m²' 'km/h' '°' 'Index' 'mm/h')
                        
                         #############################################################################################
                         ###    openSenseMap - Ende der Einstellungen    #############################################
                         #############################################################################################
                        
                        
                        ###  Ende Usereinstellungen  
                        ###EoF
                        
                        
                        1 Reply Last reply Reply Quote 0
                        • W
                          west @SBorg last edited by west

                          @sborg

                          /wetterstation.sh --data

                          pi@raspberrypi:~/WLAN-Wetterstation $ ./wetterstation.sh --data
                          Connection to 192.168.178.12 8087 port [tcp/*] succeeded!
                          
                          
                          Warte maximal 38 Sekunden auf Datenpaket der Wetterstation...
                          
                          Listening on [0.0.0.0] (family 2, port 8084)
                          
                          

                          Habe vor ein paar Tage ein Firmware Update gemacht.

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

                            @sborg Danke für das Update v2.5! Müssen eigentlich nicht verwendete Datenpunkte zwingend angelegt werden? Ich nutze bspw. keine InfluxDB und bräuchte demnach Min/Max/Avg Außentemperatur vor einem Jahr nicht als DPs. Grundsätzlich ist das Anlegen ja kein Problem, aber muss das oder läuft das Skript auch ohne, solange man die Conf nicht entsprechend setzt?

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

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

                              @rand Nicht mehr, ist seit ( ? ) auf <150 geändert.

                              Super 🙂

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

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

                                Grundsätzlich ist das Anlegen ja kein Problem, aber muss das oder läuft das Skript auch ohne, solange man die Conf nicht entsprechend setzt?

                                Ne, brauchst du nicht. Selbst wenn die DPs nicht existieren und du aktivierst es, kann er halt nichts in den Nichtexistenten-DP schreiben. Mehr passiert dann auch nicht.
                                Ich könnte es zwar auch im wetterstation.js konfigurierbar machen (ähnlich der DP-Sensoren), wollte dann aber nicht noch eine Einstellmöglichkeit mehr haben. Sind so jetzt eigentlich schon genug 😉

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

                                  @west Hmm, da kommt mal gar nichts...

                                  Du hattest noch nicht darauf geantworter: "....35" ist die IP des Rechners auf dem das Skript läuft?
                                  Setz mal den "WS_POLL" auf 60 damit er länger auf ein Datenpaket wartet, dann nochmals mittels "--data" testen.

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

                                    @sborg

                                    192.168.178.35 ist ein Pi 4 mit Influxdatenbank mit Grafana
                                    192.168.178.12 ist ein Pi 4 mit ioBroker

                                    pi@raspberrypi:~/WLAN-Wetterstation $ sudo ./wetterstation.sh --data
                                    Connection to 192.168.178.12 8087 port [tcp/*] succeeded!
                                    
                                    
                                    Warte maximal 126 Sekunden auf Datenpaket der Wetterstation...
                                    
                                    Listening on [0.0.0.0] (family 2, port 8084)
                                    
                                    
                                    SBorg 1 Reply Last reply Reply Quote 0
                                    • SBorg
                                      SBorg Forum Testing Most Active @west last edited by

                                      @west Blöde Frage, aber hast du jetzt beim Ecowitt auch den Port auf 8084 geändert? Eingangs warst du noch mit 1080 unterwegs.
                                      Kannst du die IP der Wetterstation anpingen?

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

                                        @sborg

                                        Habe jetzt mal Wunderground

                                        Anpingen geht

                                        pi@raspberrypi:~/WLAN-Wetterstation $ ping 192.168.178.6
                                        PING 192.168.178.6 (192.168.178.6) 56(84) bytes of data.
                                        64 bytes from 192.168.178.6: icmp_seq=1 ttl=128 time=65.6 ms
                                        64 bytes from 192.168.178.6: icmp_seq=2 ttl=128 time=84.6 ms
                                        64 bytes from 192.168.178.6: icmp_seq=3 ttl=128 time=106 ms
                                        64 bytes from 192.168.178.6: icmp_seq=4 ttl=128 time=27.6 ms
                                        64 bytes from 192.168.178.6: icmp_seq=5 ttl=128 time=2.65 ms
                                        64 bytes from 192.168.178.6: icmp_seq=6 ttl=128 time=3.02 ms
                                        64 bytes from 192.168.178.6: icmp_seq=7 ttl=128 time=2.88 ms
                                        ^C
                                        --- 192.168.178.6 ping statistics ---
                                        7 packets transmitted, 7 received, 0% packet loss, time 15ms
                                        rtt min/avg/max/mdev = 2.654/41.693/105.521/40.020 ms
                                        
                                        

                                        ja ich habe den Port geändert

                                        R 1 Reply Last reply Reply Quote 0
                                        • R
                                          Rand @west last edited by Rand

                                          @west

                                          Du hast das Script auf 12 laufen (IO Broker host), schickst aber die Daten nach 35 (Influx) ... das kann doch nicht gehen 😉

                                          Oder bin ich da jetzt durcheinander gekommen mit deinen pi's ?;)
                                          Die beiden Pi's heissen aber nicht beide "raspberrypi" oder?

                                          W 1 Reply Last reply Reply Quote 0
                                          • W
                                            west @Rand last edited by west

                                            @rand Das Skript läuft auf 35 nicht auf 12 wo der ioBroker läuft.

                                            Connection to 192.168.178.12 8087 port [tcp/*] succeeded!
                                            

                                            Der 192.168.178.35 holt die Daten von der Wetterstation und der 192.168.178.12 (ioBroker) von 192.168.178.35

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            587
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            143
                                            5478
                                            3284242
                                            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