Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. WLAN-Wetterstation in ioBroker direkt einbinden

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    WLAN-Wetterstation in ioBroker direkt einbinden

    This topic has been deleted. Only users with topic management privileges can see it.
    • Latzi
      Latzi last edited by

      Hallo,

      ich verwende eine WLAN-Wetterstation Eurochron EFWS2900 (Conrad), welche baugleich mit vielen anderen ist (z.B.: Froggit WH3000/3500, Ambient Weather WS-2902, Chilitec CTW-902, Ventus W830,Sainlogic 10 in 1, ...) und würde gerne die Daten direkt in ioBroker, ohne Umweg und Zeitverzögerung via weatherunderground, speichern. Dazu habe ich einen interessanten Beitrag gefunden Sainlogic: Datenverkehr Port 80 auslesen, doch leider fehlt mir das nötige Wissen um dies umzusetzen.
      Hatte jemand von euch ähnliches Problem oder vielleicht sogar eine Lösung dafür?

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

        Hi,
        ich habe (noch) keine, aber die sendet die Daten als Klartext 👍
        Das kommt meinem Ziel schon am nächsten. Die Idee ist recht "simpel", die Umsetzung ohne Kenntnisse eher nicht. Da sie die Daten an WUG sendet, kann man diese auch abgreifen. Eine Möglichkeit wäre bspw. ein Raspberry PI. Der spannt ein WLAN xxx auf und ist per RJ-45 mit dem Netzwerk verbunden. Die Wetterstation verbindet man nun mit WLAN xxx. Nun richtet man auf dem PI mittels iptables eine Umleitung ein Port 80 (normaler Webverkehr) --> Port xxxxx
        Auf den Port xxxxx "lauscht" man dann und hat die Daten, man muss sie nur aus dem Klartext-String noch herausfiltern.
        Theoretisch sollte das sogar mit zwei Wemos oder NodeMCUs funktionieren die als AP/Sender fungieren (oder einem der direkt per USB am Rechner angeschlossen ist).

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

          @SBorg sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

          Eine Möglichkeit wäre bspw. ein Raspberry PI

          Das trifft sich schon mal gut, darauf läuft mein ioBroker 👍
          Leider sind dort meine System-Kenntnisse sehr bescheiden 😞 ich arbeite aber an einer Verbesserung

          Der spannt ein WLAN xxx auf und ist per RJ-45 mit dem Netzwerk verbunden

          In den Einstellungen der Wetterstation kann direkt eine IP-Adresse des "eigenen Servers" eingegeben werden (läuft parallel zu WUG), somit sendet die Station schon mal in die richtige Richtung und somit ist das Extra-WLAN am PI meiner Ansicht nicht nötig, oder?

          Leider verstehe ich beim Rest des von dir Gesagten nur Bahnhof 😵

          SBorg 1 Reply Last reply Reply Quote 0
          • OliverIO
            OliverIO last edited by

            @Latzi said in WLAN-Wetterstation in ioBroker direkt einbinden:

            Froggit

            Hier könnten Code Bestandteile entnommen werden oder den Umweg über mqtt nehmen.

            https://github.com/vigne/mqtt-weatherstation/blob/master/server.js

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

              Ich würde erst mal klein anfangen, denn
              @Latzi sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

              In den Einstellungen der Wetterstation kann direkt eine IP-Adresse des "eigenen Servers" eingegeben werden

              ist schon mal "easy going". Nur eine IP oder auch einen Port? Dann trage dort mal die IP (+ ggf. einen freien Port) deines PI ein. Am PI gibst du dann im Terminal mal ein:

              nc -lv Port
              

              Port = den du in der Station eingegeben hast, oder falls dies nicht möglich war, dann 80
              Also bspw: nc -lv 80
              Dann sollte nach spätestens 25 Sekunden ein Datenpaket kommen. Beendet sich das nicht (was es eigentlich nach einem Paket sollte) einfach STRG + C drücken.
              ...und ja, damit würde man sich WLAN + (extra)PI sparen 😁

              1 Reply Last reply Reply Quote 1
              • Latzi
                Latzi last edited by

                @SBorg sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                nc -lv Port

                @SBorg das ist ja Weltklasse!!! 🙌 💪

                Ich habe in den Einstellungen der Wetterstation die IP des Pi eingetragen und eine Station-ID sowie ein Passwort festgelegt, den Port hätte ich ändern können, hab ich einstweilen auf 80 belassen (Vorbelegung) auch das Sendeintervall ist einstellbar (derzeit 60 sek) und das geschah:

                Eingabe:

                sudo nc -lv 80
                

                Ergebnis:

                Listening on [0.0.0.0] (family 2, port 80)
                Connection from 10.0.0.35 1840 received!
                GET /weatherstation/updateweatherstation.php?ID=ITRAGW1&PASSWORD=LATZI&indoortempf=75.2&tempf=40.8&dewptf=39.0&windchillf=40.8&indoorhumidity=42&humidity=94&windspeedmph=2.9&windgustmph=4.5&winddir=236&absbaromin=28.308&baromin=30.095&rainin=0.000&dailyrainin=0.012&weeklyrainin=0.201&monthlyrainin=1.673&solarradiation=0.00&UV=0&dateutc=2019-12-25%2005:11:31&softwaretype=EasyWeatherV1.4.4&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0
                Host: 10.0.0.210
                Accept:*/*
                Connection: Close
                
                

                Scheint als werden die gesamten Daten übertragen, die Einheiten sind noch nicht umgerechnet, das ist jedoch das geringste Problem.

                Jetzt wird´s so richtig interessant für mich, stellt sich für mich die Frage, wie bekomme ich die empfangene Datenstruktur in den ioBroker????

                B 1 Reply Last reply Reply Quote 0
                • H
                  hitel last edited by

                  Das könnte eine Lösung sein:

                  FOSHKplugin

                  Dieses Plugin bindet verschiedene Wetterstationen des Hersteller Fine Offset Electronics (FOSHK) an einen Miniserver über UDP an.
                  Entwickelt wurde das Plugin für und mit einem Froggit DP1500 das baugleich auch unter dem Namen Ecowitt GW1000 verkauft wird.

                  https://www.loxwiki.eu/plugins/servlet/mobile?contentId=60557618#content/view/60557618

                  Oder

                  Weewx

                  http://www.weewx.com/ und Mqtt Plugin?

                  Was meint ihr dazu?

                  1 Reply Last reply Reply Quote 1
                  • OliverIO
                    OliverIO last edited by

                    wenn man kein mqtt möchte oder gar weitere tools einsetzen möchte, wird man einen Adapter bauen müssen, der die Serverfunktionalität anbietet und die Daten der Wetterstation annehmen kann.
                    Wahrscheinlich wird man sogar relativ viel code vom mqtt-plugin übernehmen können.

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

                      So habe ich mir das auch vorgestellt ^^
                      Man kann nun eine bash nutzen, ein Perl-, Python-Script (oä.), Telegraf oder what else.
                      bash wäre bspw. recht simpel:

                      #!/bin/bash   
                      
                      while true
                      do
                        DATA=`nc -lv 80|grep GET`
                        
                         TEMP_INNEN=$(echo ${DATA}|cut -d'&' -f3 | cut -d"=" -f2)
                         TEMP_INNEN=`echo "scale=2;(${TEMP_INNEN}-32)*5/9" | bc -l`
                         echo Temperatur Innen: $TEMP_INNEN °C
                      done
                      

                      Das liefert die Innentemperatur und rechnet sie in °C um. Mittels "curl" und dem ioB Simple-API-Adapter landet es dann als Datenpunkt im ioB.

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

                        @SBorg das klingt schon mal richtig interessant, mir ist zwar noch nicht klar, was in dem bash passiert - muss mich damit aber erst auseinandersetzen. Vielen Dank für deine bisherigen Bemühungen 👍 , ich werde da aber sich noch mit einigen Fragen anklopfen.

                        @SBorg sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                        ioB Simple-API-Adapter

                        Meinst du damit diesen Adapter?
                        f6406f83-2b1e-4465-925b-1c2041e7cb18-grafik.png

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

                          @SBorg schaut mit den Daten schon mal gut aus und es ist so simpel, dass den Code sogar ich verstehe 👍

                          Listening on [0.0.0.0] (family 2, port 80)
                          Connection from 10.0.0.35 21364 received!
                          Temperatur Innen: 24.00 °C
                          Temperatur Aussen: 2.72 °C
                          Taupunkt: 2.50 °C
                          Chill-Faktor: 2.72 °C
                          Luftfeuchte Innen: 41 %
                          Luftfeuchte Aussen: 99 %
                          Windgeschwindkeit: 0 km/h
                          max. Windgeschwindkeit: 0 km/h
                          Windrichtung: 270 °
                          Luftdruck absolut: 969.4218 hPa
                          Luftdruck relativ: 1029.9366 hPa
                          Regen aktuell: 0 mm
                          Regen Tag: 0 mm
                          Regen Woche: 0 mm
                          Regen Monat: 0 mm
                          Sonnenstrahlung: 50.28 W/m^2
                          UV-Index: 0
                          Listening on [0.0.0.0] (family 2, port 80)

                          Hast du noch einen weiterführenden Tipp für mich, wie ich die gesammelten Daten mit dem Simple-Adapter einbinden kann?

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

                            @Latzi Sag ja "easy going" und simpel. Wahrscheinlich hast du #7 + #8 nur dupliziert und "-f3" immer um eins hochgezählt. Hätte ich der Einfachheit halber auch gemacht. Normalerweise würde mein ein Array anlegen, eine Funktion erstellen, aber so ist es einfach einfacher 🙂

                            Adapter: Jepp, vergesse noch, dass der ab JS 2.0 nun Restful heißt 😉
                            Ich arbeite in meinen Scripten gerne mit Variablen, so muss ich nur bei Bedarf am Anfang des Scripts diese ändern, und nicht den ganzen Quellcode durchsuchen/ändern muss.

                            #!/bin/bash   
                            
                            ###Settings
                             debug=true            #[true/false]
                             IPP=192.168.x.xx:8082 #ioBroker-IP:Port
                             PRE_DP=javascript.0.Wetterstation #Datenpunkt
                             DP_TEMP_INNEN=${PRE_DP}.Innentemperatur
                             DP_TEMP_AUSSEN=${PRE_DP}.Aussentemperatur
                            
                            
                            while true
                            do
                            
                              DATA=`nc -lv 80|grep GET`
                              
                               TEMP_INNEN=$(echo ${DATA}|cut -d'&' -f3 | cut -d"=" -f2)
                               TEMP_INNEN=`echo "scale=2;(${TEMP_INNEN}-32)*5/9" | bc -l`
                               TEMP_AUSSEN=$(echo ${DATA}|cut -d'&' -f4 | cut -d"=" -f2)
                               TEMP_AUSSEN=`echo "scale=2;(${TEMP_AUSSEN}-32)*5/9" | bc -l`
                            
                             #Daten an ioB schicken
                                curl --data "${DP_TEMP_INNEN}=$TEMP_INNEN&${DP_TEMP_AUSSEN}=$TEMP_AUSSEN&prettyPrint" http://${IPP}/setBulk
                            
                             if [ $debug == "true" ]; then
                               echo Temperatur Innen: $TEMP_INNEN °C
                               echo Temperatur Aussen: $TEMP_AUSSEN °C
                             fi
                            done
                            

                            Ich weiß gerade nicht, ob man außerhalb des Javascript speichern kann, deswegen hier "javascript.0..." als Datenverzeichnis. MyOwnData wäre IMHO besser. Die Datenpunkte müssen vorher per Hand angelegt werden. ich habe ein allgemeines Javascript, dass nur alle anzulegenden Datenpunkte erzeugt. Im Falle des Falles starte ich das einmalig, schon sind alle DPs wieder da 😉

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

                              @SBorg vielen Dank läuft perfekt nachdem ich den Port auf 8087 geändert habe (8082 ist bei mir die vis). Die Datenpunkte per Hand anlegen war etwas mühsam, wie kann ich die DP´s per Javascript anlegen - klingt sehr vernünftig? Kann ich den RAW-Code der einzelnen DP´s dazu verwenden oder gibt´s ein kleines Beispiel? Es ist mein erstes Mal mit Javascript, sorry für die dumme Frage. Und noch eine dumme Frage, damit das Script zur Abfrage der Wetterstationsdaten automatisch nach jedem Start des Pi läuft reicht es wenn ich´s in /etc/rc.local eintrage?

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

                                @Latzi 8087 ist auch richtig 😉
                                Ich habe das ganze Script ungetestet direkt hier geschrieben (hab ja keine Wetterstation).
                                ...und es gibt keine dummen Fragen, nur dumme Antworten...
                                Nach rc.local würde ich es nicht legen, denn dann hängt dein PI fest. Er führt das Skript aus, wird aber aufgrund der Endlosschleife im Skript nie damit fertig und führt auch keine weiteren Schritte aus.

                                crontab -e
                                

                                dort einfach einfügen (wichtig: die letzte Zeile muss eine Leerzeile sein!):

                                @reboot /Pfad/name_des.skripts.sh &
                                

                                Durch das abschließende & läuft die Verarbeitung weiter, egal ob das Skript noch läuft oder nicht.

                                Einfach ein leeres JS anlegen, Ort und Name sind egal, Inhalt nach folgendem Muster:

                                createState('javascript.0.Wetterstation.Innentemperatur', '0', { name: "Temperatur im Haus",
                                								 type: "number",
                                								 role: "state",
                                								 unit: "°C",
                                								 read: true,
                                								 write: true
                                								});
                                

                                "Unit"," read" und "write" müssen nicht sein. Pauschal kannst du die möglichen Werte auch bei RAW des DPs sehen (wenn du sie grafisch mal angelegt hast). Wenn du das Skript dann startest werden die DPs angelegt. Danach kannst du es wieder stoppen. @paul53 hat auch einen Codeschnipsel gepostet mit dem es möglich ist DPs auch außerhalb von javascript.x anzulegen. Man kann sich natürlich auch die ganzen DPs als JSON exportieren 🙂

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

                                  @SBorg 👍 👍 👍 toller Support, alles läuft bestens - herzlichen Dank!!!

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

                                    @Latzi sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                                    @SBorg das ist ja Weltklasse!!! 🙌 💪

                                    Ich habe in den Einstellungen der Wetterstation die IP des Pi eingetragen und eine Station-ID sowie ein Passwort festgelegt, den Port hätte ich ändern können, hab ich einstweilen auf 80 belassen (Vorbelegung) auch das Sendeintervall ist einstellbar (derzeit 60 sek) und das geschah:

                                    Eingabe:

                                    sudo nc -lv 80
                                    

                                    Ergebnis:

                                    Listening on [0.0.0.0] (family 2, port 80)
                                    Connection from 10.0.0.35 1840 received!
                                    GET /weatherstation/updateweatherstation.php?ID=ITRAGW1&PASSWORD=LATZI&indoortempf=75.2&tempf=40.8&dewptf=39.0&windchillf=40.8&indoorhumidity=42&humidity=94&windspeedmph=2.9&windgustmph=4.5&winddir=236&absbaromin=28.308&baromin=30.095&rainin=0.000&dailyrainin=0.012&weeklyrainin=0.201&monthlyrainin=1.673&solarradiation=0.00&UV=0&dateutc=2019-12-25%2005:11:31&softwaretype=EasyWeatherV1.4.4&action=updateraw&realtime=1&rtfreq=5 HTTP/1.0
                                    Host: 10.0.0.210
                                    Accept:*/*
                                    Connection: Close
                                    
                                    

                                    Hallo Latzi und SBorg...

                                    Ich besitze eine WS3500 und kann über die APP (WSView auf Android) neben der Übersendung an WU auch eine customized-IP einstellen.
                                    In der Maske der APP habe ich folgende Daten eingetragen und doch noch einige Fragen:

                                    Als Protokolltyp habe ich es bei WU gelassen.
                                    Als ServerIP habe ich die IP meines MINT-Servers mit vorangestelltem "http://" eingetragen.
                                    Als Path habe ich es wie bei dir bei "/weatherstation/updateweatherstation.php?" gelassen.

                                    Die StationID, welche du eingetragen hast... Ist das die gleiche wie bei WU oder eine selber ausgedachte? Ich habe es hier sowohl mit Leerlassen, als auch mit der WU-ID versucht.
                                    Und Station-Key dürfte dann das Passwort sein, richtig? Auch hier habe ich das Feld sowohl mal leer gelassen, als auch mal mit einem Testpw versucht.

                                    Als Port habe ich es mit 8087 oder 8097 oder auch 80 versucht.
                                    Upload-Intervall habe ich testweise auf 20 sek runtergesetzt.

                                    Alles schön gespeichert und auf dem Server ebenfalls "sudo nc -lv PORTNUMMER" eingetragen. Warten, warten, warten, aber es kommt nichts rein.

                                    [nc] gibt mir z.B. aus: "Listening on [0.0.0.0] (family 0, port 8097)"

                                    Nur Nada an ankommenden Daten???

                                    Kann es sein, dass ich einen Denkfehler mache oder könnte mir in der Standardinstallation von Mint 19.2 etwas fehlen, was in Raspbian auf einem Raspberry vielleicht standardmäßig eingebunden wäre?

                                    [Hier zur Sicherheit beigefügt Foto der Maske in der APP]
                                    IMG_20191227_122133_bearbeitet.jpg

                                    SBorg Latzi 2 Replies Last reply Reply Quote 0
                                    • SBorg
                                      SBorg Forum Testing Most Active @Berchemer last edited by

                                      Hi,
                                      ich kann da auch nur raten (von wegen hab keine Station 😉 )
                                      @Berchemer sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                                      Als ServerIP habe ich die IP meines MINT-Servers mit vorangestelltem "http://" eingetragen.

                                      Zumindest würde ich als ServerIP implizieren, dass er hier xxx.xxx.xxx.xxx erwartet. http://xxx.xxx.xxx.xxx ist eine URL, dann sollte da auch ServerURL stehen wenn er dies erwartet (aber man weiß ja nie...).
                                      StationID ist IMO frei wählbar, nur dass man bei mehreren (oder von Nachbarn) diese unterscheiden kann. Wird hier aber, genauso wie das Passwort, später nicht ausgewertet/benötigt. Die Station sendet die Daten ja "freiwillig" (könnte man im bash-Skript aber auch evaluieren, nicht dass einer mal falsche Messdaten schickt 😉 ).
                                      Der Port ist nur der auf dem gesendet wird. Er muss auf deinem Mint frei sein und netcat (nc) muss dann auf diesem lauschen.

                                      Pauschal könnten auf dem Mint auch Ports geblockt sein, oder dein WLAN-AP/-Router reicht sie nicht weiter.

                                      Latzi 1 Reply Last reply Reply Quote 1
                                      • Latzi
                                        Latzi @Berchemer last edited by

                                        @Berchemer hier meine Einstellungen:
                                        5b4b5017-8aa8-4437-8c80-a7fd0e578d73-grafik.png
                                        Lasse das http weg und wähle einen anderen Port, da 8087 vom Simple-Adapter belegt sein wird.

                                        Path wie vorgegeben, StationID und Key kannst leer lassen, ich hab´s belegt - muss nicht sein.

                                        Versuchs mal, wenns klappt kann ich das Script reinstellen, ist zwar sicher verbesserungswürdig aber es läuft.

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

                                          @SBorg sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                                          Zumindest würde ich als ServerIP implizieren, dass er hier xxx.xxx.xxx.xxx erwartet. http://xxx.xxx.xxx.xxx ist eine URL

                                          Absolut richtig 👍

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

                                            @Latzi sagte in WLAN-Wetterstation in ioBroker direkt einbinden:

                                            Versuchs mal, wenns klappt kann ich das Script reinstellen, ist zwar sicher verbesserungswürdig aber es läuft.

                                            Schöner wäre natürlich ein Adapter, aber da habe ich schon x-mal angefangen, und genauso oft wieder aufgehört 😉
                                            Man könnte es natürlich auch optimieren, wie bspw. eine Funktion nutzen, um die wiederkehrende Konvertierung von °F nach °C durchzurechnen und, und, und...

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            858
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            adapter wlan-wetterstation
                                            21
                                            134
                                            31804
                                            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