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

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    WLAN-Wetterstation in ioBroker direkt einbinden

    This topic has been deleted. Only users with topic management privileges can see it.
    • 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
                  • B
                    Berchemer last edited by Berchemer

                    Habe mal auf Port 8096 geändert und das http:// weggelassen und habe tatsächlich Daten erhalten.
                    Danke 👍 👍 👏 👏 😀

                    Jetzt muss ich mal den Weg von Latzi nachverfolgen, um zu sehen, was ich noch umsetzen muss 😀

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

                      @Berchemer

                      hier mal das Script:

                      #!/bin/bash
                      
                      ###Settings
                      
                      debug=true                        #[true/false]
                      
                      IPP=10.0.0.210:8087               #ioBroker-IP:Port
                      
                      PRE_DP=javascript.0.Wetterstation #Datenpunkt
                      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_SONNE=${PRE_DP}.Sonnenstrahlung
                      DP_UV_INDEX=${PRE_DP}.UV_Index
                      DP_DATUM=${PRE_DP}.Datum
                      DP_ZEIT=${PRE_DP}.Zeit
                      
                      # Endlosschleife
                       
                      while true
                      do
                        #Datenzeile von Wetterstation abholen und Zeile mit GET am Anfang rausfiltern
                        DATA=`nc -lv 80|grep GET`
                      
                        #DATA zerlegen
                        #Innentemperatur:
                         TEMP_INNEN=$(echo ${DATA}|cut -d'&' -f3 | cut -d"=" -f2)
                         TEMP_INNEN=`echo "scale=2;(${TEMP_INNEN}-32)*5/9"|bc -l`
                        #Aussentemperatur:
                         TEMP_AUSSEN=$(echo ${DATA}|cut -d'&' -f4 | cut -d"=" -f2)
                         TEMP_AUSSEN=`echo "scale=2;(${TEMP_AUSSEN}-32)*5/9"|bc -l`
                        #Taupunkt:
                         TAUPUNKT=$(echo ${DATA}|cut -d'&' -f5 | cut -d"=" -f2)
                         TAUPUNKT=`echo "scale=2;(${TAUPUNKT}-32)*5/9"|bc -l`
                        #Chill-Faktor:
                         CHILL=$(echo ${DATA}|cut -d'&' -f6 | cut -d"=" -f2)
                         CHILL=`echo "scale=2;(${CHILL}-32)*5/9"|bc -l`
                        #Innenluftfeuchte:
                         FEUCHTE_INNEN=$(echo ${DATA}|cut -d'&' -f7 | cut -d"=" -f2)
                        #Aussenluftfeuchte:
                         FEUCHTE_AUSSEN=$(echo ${DATA}|cut -d'&' -f8 | cut -d"=" -f2)
                        #Windgeschwindigkeit:
                         WIND=$(echo ${DATA}|cut -d'&' -f9 | cut -d"=" -f2)
                         WIND=`echo "scale=2;${WIND}*16094/10000"|bc -l`
                        #Windgeschwindigkeit max:
                         WIND_MAX=$(echo ${DATA}|cut -d'&' -f10 | cut -d"=" -f2)
                         WIND_MAX=`echo "scale=2;${WIND_MAX}*16094/10000"|bc -l`
                        #Windrichtung:
                         WIND_DIR=$(echo ${DATA}|cut -d'&' -f11 | cut -d"=" -f2)
                        #Luftdruck absolut:
                         DRUCK_ABS=$(echo ${DATA}|cut -d'&' -f12 | cut -d"=" -f2)
                         DRUCK_ABS=`echo "scale=2;${DRUCK_ABS}*33864/1000"|bc -l`
                        #Luftdruck relativ:
                         DRUCK_REL=$(echo ${DATA}|cut -d'&' -f13 | cut -d"=" -f2)
                         DRUCK_REL=`echo "scale=2;${DRUCK_REL}*33864/1000"|bc -l`
                        #Regen aktuell:
                         REGEN_AKT=$(echo ${DATA}|cut -d'&' -f14 | cut -d"=" -f2)
                         REGEN_AKT=`echo "scale=1;${REGEN_AKT}*254/10"|bc -l`
                        #Regen Tag:
                         REGEN_TAG=$(echo ${DATA}|cut -d'&' -f15 | cut -d"=" -f2)
                         REGEN_TAG=`echo "scale=1;${REGEN_TAG}*254/10"|bc -l`
                        #Regen Woche:
                         REGEN_WOCHE=$(echo ${DATA}|cut -d'&' -f16 | cut -d"=" -f2)
                         REGEN_WOCHE=`echo "scale=1;${REGEN_WOCHE}*254/10"|bc -l`
                        #Regen Monat:
                         REGEN_MONAT=$(echo ${DATA}|cut -d'&' -f17 | cut -d"=" -f2)
                         REGEN_MONAT=`echo "scale=1;${REGEN_MONAT}*254/10"|bc -l`
                        #Sonnenstrahlung:
                         SONNE=$(echo ${DATA}|cut -d'&' -f18 | cut -d"=" -f2)
                        #UV-Index:
                         UV_INDEX=$(echo ${DATA}|cut -d'&' -f19 | cut -d"=" -f2)
                      
                        #Datum und Zeit abfragen
                         DAT_ZEIT=`timedatectl |grep Local`
                         DATUM=$(echo ${DAT_ZEIT}|cut -d' ' -f4)
                         UHRZEIT=$(echo ${DAT_ZEIT}|cut -d' ' -f5)
                      
                      #Daten an ioB schicken
                      
                         curl --data "${DP_TEMP_INNEN}=$TEMP_INNEN&${DP_TEMP_AUSSEN}=$TEMP_AUSSEN&${DP_TAUPUNKT}=$TAUPUNKT&${DP_CHILL}=$CHILL&${DP_FEUCHTE_INNEN}=$FEUCHTE_INNEN&${DP_FEUCHTE_AUSSEN}=$FEUCHTE_AUSSEN&${DP_WIND}=$WIND&${DP_WIND_MAX}=$WIND_MAX&${DP_WIND_DIR}=$WIND_DIR&${DP_DRUCK_ABS}=$DRUCK_ABS&${DP_DRUCK_REL}=$DRUCK_REL&${DP_REGEN_AKT}=$REGEN_AKT&${DP_REGEN_TAG}=$REGEN_TAG&${DP_REGEN_WOCHE}=$REGEN_WOCHE&${DP_REGEN_MONAT}=$REGEN_MONAT&${DP_SONNE}=$SONNE&${DP_UV_INDEX}=$UV_INDEX&${DP_DATUM}=$DATUM&${DP_ZEIT}=$UHRZEIT&prettyPrint" http://${IPP}/setBulk
                      
                      if [ $debug == "true" ]; then
                         # Datenfelder ausgeben
                         echo Temperatur Innen: $TEMP_INNEN °C
                         echo Temperatur Aussen: $TEMP_AUSSEN °C
                         echo Taupunkt: $TAUPUNKT °C
                         echo Chill-Faktor: $CHILL °C
                         echo Luftfeuchte Innen: $FEUCHTE_INNEN %
                         echo Luftfeuchte Aussen: $FEUCHTE_AUSSEN %
                         echo Windgeschwindkeit: $WIND km/h
                         echo max. Windgeschwindkeit: $WIND_MAX km/h
                         echo Windrichtung: $WIND_DIR °
                         echo Luftdruck absolut: $DRUCK_ABS hPa
                         echo Luftdruck relativ: $DRUCK_REL hPa
                         echo Regen aktuell: $REGEN_AKT mm
                         echo Regen Tag: $REGEN_TAG mm
                         echo Regen Woche: $REGEN_WOCHE mm
                         echo Regen Monat: $REGEN_MONAT mm
                         echo Sonnenstrahlung: $SONNE W/m^2
                         echo UV-Index: $UV_INDEX
                         echo Datum: $DATUM Zeit: $UHRZEIT
                      fi
                      
                      done
                      
                      

                      Zusätzlich sind die Datenpunkte anzulegen ( ich hab´s unter javascript.0.Wetterstation) und der Adapter (Simple RESTFul) zu installieren, sowie das Script im "Autostart" (crontab -e) zu platzieren (@SBorg hat das sehr schön beschrieben) - das war´s auch schon!

                      Bei der Umrechnung der Windgeschwindigkeiten bin ich mir noch nicht sicher, leider bläst gerade kein Wind 🙂

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

                        @Latzi

                        Ach ja... Da war noch das Bash-Script...
                        Muss jetzt erst mal nachschauen, wie ich das nochmal mache 😉

                        Datei erstellen, Skript hineinkopieren und als "/opt/iobroker/WS3500Abfrage.sh" abspeichern.

                        Dann "crontab -e" als Befehl eingeben, den Editor aussuchen und am Ende der Datei "@reboot /opt/iobroker/WS3500Abfrage.sh &" eingeben. Richtig?

                        Mache ich zumindest mal so...

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

                          @Berchemer

                          Ok... Soweit eingegeben und natürlich die IP im Skript geändert.
                          Und natürlich den Datenpunkt vergessen einzutragen.

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

                            @Berchemer
                            Ja genau so! Rechte beim Script beachten (wenn nicht root) und VORHER Datenpunkte anlegen

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

                              @Berchemer
                              Im Script beim Aufruf von nc den Port ändern (80 bei mir) nicht vergessen!

                              B 2 Replies Last reply Reply Quote 0
                              • B
                                Berchemer last edited by Berchemer

                                Habe also Datenpunkt unter javascript.0.Wetterstation angelegt.
                                Die Rechte des Eigentums und Ausführung des Skripts vergebe ich an iobroker und "Der Datei erlauben sie als Programm auszuführen" habe ich nicht angeklickt.
                                Muss ich eigentlich neu starten???

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

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

                                  @

                                  Stimmt hatte ich auch vergessen 🙄

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

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

                                    @Berchemer
                                    Im Script beim Aufruf von nc den Port ändern (80 bei mir) nicht vergessen!

                                    Stimmt hatte ich auch vergessen 🙄

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

                                      Musste ich eigentlich noch etwas im "simple-api"-Adapter anpassen???
                                      Ich habe ihn nur eingeschaltet, weil er bei mir bisher ausgeschaltet war.

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

                                        @Berchemer
                                        Nein, nur einschalten, Port (vermutlich 8087) mit Script vergleichen und reboot - fertig. Danach sollten die Daten reinflattern

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

                                          @Latzi Willst/kannst du noch etwas Zeit investieren? Ich würde es ggf. gerne noch optimieren und als Package auf GitHub stellen mit Installationsanleitung etc. "Hier" ist es doch etwas konfus, da es sich dynamisch entwickelt hat ^^

                                          Unabhängig davon würde mich aber die Prozesslast noch interessieren. Ich nenne das Skript mal ws.sh

                                          ps -A|grep ws.sh
                                          

                                          Da steht dann vorne eine Zahl (=PID), dann

                                          top -p ermittelte_Zahl_von_oben
                                          

                                          Wie sieht die CPU-Last im Idle aus, und wie wenn er ein Datenpaket empfängt und verarbeitet?
                                          Ggf. musst du auch anstelle von ws.sh noch auf nc prüfen.

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

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

                                            @Latzi Willst/kannst du noch etwas Zeit investieren?

                                            Ja, mach ich gerne, da lerne ich sicherlich etwas. Ich melde mich mit den Ergebnissen.

                                            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

                                            863
                                            Online

                                            31.9k
                                            Users

                                            80.1k
                                            Topics

                                            1.3m
                                            Posts

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