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.
    • H
      Hefo @Hefo last edited by

      @SBorg
      So, ich glaube, jetzt klappt es...

      Die Funktionen influx_query und metsommer sehen bei mir jetzt so aus und liefern richtige Werte:

      influx_query() {
         #1 Timerange start
         #2 Timerange stop
         #3 Measurement
         #4 min,max,mean
      
              IFS=","
              ii=0
              local TMP_DATA=$(curl -sk --request POST "${INFLUX_WEB}://${INFLUX_API}/api/v2/query?org=${INFLUX_ORG}" --header 'Content-Type: application/vnd.flux' \
              --header 'Accept: application/csv' --header "Authorization: Token ${INFLUX_TOKEN}" \
              --data 'from(bucket: "'${INFLUX_BUCKET}'") |> range(start: '$1', stop: '$2') |> filter(fn: (r) => r._measurement == "'${PRE_DP}'.'$3'" and r._field == "value") |> keep(columns: ["_value", "_time"]) |> sort(columns: ["_time"]) |> '$4'()')
      
              local TDATA=(${TMP_DATA[*]})
              echo ${TDATA[-1]}|tr -d '\t\r\n'
              unset TDATA
              unset TMP_DATA
      }
      

      Geändert nur die Zeilen 11 & 14 und ein paar Zeilen gelöscht.

      metsommer() {
           if [ ! -z ${INFLUX_BUCKET} ]; then
            if [ $(date +%m) -ge "6" ] && [ $(date +%m) -le "8" ] || [ ! -z ${metsom_override} ]; then
              if [ $(date +%m) -le "5" ]; then echo -e "\n ${RE}Eine Berechnung der meteorologischen Sommerwerte kann für das aktuelle Jahr $(date +%Y) erst ab dem 01. Juni durchgeführt werden!${NO}\n";exit 1; fi
              local FLUXSTART=$(date +%Y-06-01)"T00:00:00Z"
              local FLUXENDE=$(date +%Y-08-31)"T23:59:59Z"
      
              MET_SOMMER_TEMP_AVG=$(influx_query "${FLUXSTART}" "${FLUXENDE}" "Aussentemperatur" "mean")
              if [ -z "${MET_SOMMER_TEMP_AVG}" ]; then
                SAPI "Single" "set/${DP_MET_SOMMER_TEMP}?value=99.99&ack=true"
               else
                MET_SOMMER_TEMP_AVG=$(round ${MET_SOMMER_TEMP_AVG} 2)
                SAPI "Single" "set/${DP_MET_SOMMER_TEMP}?value=${MET_SOMMER_TEMP_AVG}&ack=true"
              fi
      
              local TMP_REGEN=$(curl -sk --request POST "${INFLUX_WEB}://${INFLUX_API}/api/v2/query?org=${INFLUX_ORG}" --header 'Content-Type: application/vnd.flux' \
              --header 'Accept: application/csv' --header "Authorization: Token ${INFLUX_TOKEN}" \
              --data 'from(bucket: "'${INFLUX_BUCKET}'") |> range(start: '${FLUXSTART}', stop: '${FLUXENDE}') |> filter(fn: (r) => r._measurement == "'${PRE_DP}'.Regen_Tag" and r._field == "value") |> keep(columns: ["_value", "_time"]) |> sort(columns: ["_time"]) |> aggregateWindow(every: 1d, fn: max) |> sum()')
      
              local IFS=","
              local TDATA=(${TMP_REGEN[*]})
      
              MET_REGEN=$(echo ${TDATA[-1]} | tr -cd [:digit:]\.)
              echo $MET_REGEN
              if [ -z "${MET_REGEN}" ]; then
                SAPI "Single" "set/${DP_MET_SOMMER_REGEN}?value=999.9&ack=true"
               else
                SAPI "Single" "set/${DP_MET_SOMMER_REGEN}?value=${MET_REGEN}&ack=true"
              fi
      
      
              if [ ! -z ${metsom_override} ]; then
                echo -e "\n Daten vom 01.06.$(date +%Y) bis 31.08.$(date +%Y) wurden ermittelt...\n"
                echo -e "\t Ø-Temperatur: ${GR}${MET_SOMMER_TEMP_AVG} °C${NO}"
                echo -e "\t Regenmenge  : ${GR}${MET_REGEN} l/m²${NO}\n"
              fi
              unset metsom_override
      
            fi
           fi
      }
      

      Geändert nur die Zeilen 18 & 23

      Ich lasse es mal ein paar Tage laufen und melde mich dann mit einem Ergebnis...

      Gruß
      Hefo

      SBorg 1 Reply Last reply Reply Quote 0
      • N
        nhet last edited by nhet

        Moinsen,
        meine Station (Bresser 7003500) zeichnet laut Beschreibung ua. folgende Werte auf:

        • Lichtintensität (W/m²)
        • UV-Level

        Kann man daraus irgendwie den Lux / Lumen Wert errechnen?

        Danke im Voraus und LGe

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

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

          W/m²

          Goggle findet:
          Ambient Weather Support
          Why Is The Lux To W / M^ 2 Conversion Factor 126.7?

          Da spielt nämlich ein Lichtspektrum rein...
          Und die Stationen rechnen das auch nur um, weil sie Lux messen. siehe hier

          Bei Ecowitts kann man auch umstellen, welche Einheit man möchte klux oder W/m2 oder Kfc (wobei ich nicht so auf Hähnchen stehe 🤣 )
          evtl auch bei Bresser

          Zitat aus der Bedienungsanleitung:

          Hinweis:
          Die folgenden Details sind so aufgelistet wie sie auf dem Display angezeigt werden oder 
          ablaufen.
          Lichtintensitätseinheit    Klux, Kfc and W/m²
          Anzeigebereich             0 ~ 200Klux
          Auflösung                  Klux, Kfc und W/m²  (2 Dezimalstelle
          
          1 Reply Last reply Reply Quote 0
          • SBorg
            SBorg Forum Testing Most Active @Hefo last edited by

            @hefo
            Na, da warst du aber fleißig 🙂

            Sieht soweit auch gut aus, nur den

            echo $MET_REGEN

            würde ich bald raus nehmen, da wir hier auf Betriebssystemebene sind und du dir sonst das Syslog mit den Regenwerten voll müllst.

            H 1 Reply Last reply Reply Quote 0
            • Rene55
              Rene55 last edited by

              @sborg Ich hab mich jetzt auch mal bei Awekas angemeldet und wollte mittesten. In der Config habe ich jetzt Benutzernamen und Passwort eingetragen und auf true gestellt. In den Datenpunkten im ioBroker sehe ich aber immer noch 'awekas_at = false'. Ich habs dann mal im --debug laufen lassen: hier sah ich dann beim "https://ws.awekas.at/weatherstation/updateweatherstation.php?ID=MeinUser&PASSWORD=&dateutc=2023..." das hier kein Password zu sehen ist. Ist das so richtig oder muss das Password irgendwie "behandelt" werden?

              Was hat es denn mit der API auf sich? Und was genau soll der neue Adapter von Awekas machen? (Fragen über Fragen).

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

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

                Was hat es denn mit der API auf sich? Und was genau soll der neue Adapter von Awekas machen? (Fragen über Fragen).

                Erstmal das einfache: der Adapter kann sich Wetterdaten von AWEKAS ziehen. Nützlich für Leute ohne Wetterstation die aber in ihrer Nähe eine haben die Daten an AWEKAS sendet 😉

                Nein, das Passwort sollte da im Klartext stehen. Deine conf sieht wahrscheinlich so aus ?

                 #############################################################################################
                 ###    AWEKAS - Einstellungen (nur nötig falls AWEKAS benutzt werden soll)                ###
                 #############################################################################################
                
                  #AWEKAS aktivieren [true/false] / default: false
                   use_awekas=false
                
                  #AWEKAS Login Username und Passwort
                   AWEKAS_USER=
                   AWEKAS_PW=
                
                 #############################################################################################
                 ###    AWEKAS - Ende der Einstellungen    ###################################################
                 #############################################################################################
                

                ...dann ev. Sonderzeichen "(?%#)" im Passwort? Das geht wg. der URL-Codierung dann in die Hose.

                Da ist die API dann im Vorteil, denn hier wird das Passwort MD5 verschlüsselt. Damit ist es nicht mehr als Klartext und Sonderzeichen sind dann auch erlaubt. Die API hat dann für AWEKAS noch geringe Vorteile, für "uns", dass ich so ziemlich alles an Wetterdaten schicken kann was es gibt (also hauptsächlich Messwerte von Zusatzsensoren). Eine Schneehöhe kriegen wir halt aktuell nicht gemessen, aber es sind so aus dem Kopf heraus 126 mögliche Messwerte.
                Aber immer optional, die API ist dann zwar bindend (hat aber sonst keinerlei Auswirkungen), man kann dann aber seine Zusatzwerte übertragen, muss aber nicht.

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

                  @sborg So sieht die Config ohne Awekas aus - meine ist schon mit den richtigen Werten befüllt. Aber bei den Sonderzeichen wird wohl der Hase im Pfeffer liegen. Ich hab mich an die Vorgaben von Awekas gehalten

                  Awekas_Password.png
                  und natürlich auch Sonderzeichen drin. Kann ich das PW kaschieren oder soll ich versuchen das Password zu ändern?

                  EDIT: ich antworte mal auf die letzte Frage: Ich hab das Password geändert (ohne Sonderzeichen) und schon wird der Datenpunkt Awekas_at true und die Daten sind auch auf dem Awekas-Dashboard sichtbar.
                  Super & Danke.

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

                    @sborg danke für den Hinweis, ja, das war noch vom Testen drin...

                    Habe die Änderung jetzt ein paar Tage beobachtet und es sah jeden Abend passend aus. Insofern mache ich erstmal einen Haken dahinter.

                    Mein oben erwähntes Script zum Umkopieren der alten Daten mit Fields in eine neue Influx 2.7 mit Tags habe ich an den folgenden etwas älteren Thread angehangen, in dem schonmal danach gefragt wurde:
                    https://forum.iobroker.net/topic/46098/test-adapter-influxdb-2-0/286?_=1692988111319

                    Gruß
                    Hefo

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

                      @sborg

                      Hallo

                      Edit: hat sich von selber erledigt!

                      Meine Werte in 0_userdata.0.Wetterstation.Regen_Jahr_kumuliert werden seit heute Vormittag nicht mehr befüllt.
                      Hatten gut 15 Std. Stromausfall. 😞

                      13c42c35-b911-48e3-81c7-c03190ea551f-image.png

                      dietpi@DietPi:~$ sudo systemctl status wetterstation
                      ● wetterstation.service - Service für ioBroker Wetterstation
                         Loaded: loaded (/etc/systemd/system/wetterstation.service; enabled; vendor preset: enabled)
                         Active: active (running) since Sun 2023-08-27 15:19:29 CEST; 4min 45s ago
                       Main PID: 6204 (wetterstation.s)
                          Tasks: 3 (limit: 264)
                         Memory: 3.5M
                         CGroup: /system.slice/wetterstation.service
                                 ├─6204 /bin/bash /home/iobroker/wetterstation.sh
                                 └─8536 curl -s http://wow.metoffice.gov.uk/automaticreading?siteid=f6488701-411a-ee11-913a-201642ba599e&siteAuthenticationKey=290175&dateutc=2023-08-27+23:37:08&tempf=58.1&dewptf=57.83&softwaretype=EasyWeatherV1.6.5&humidity=99&win
                      ddir=216&baromin=29.888&windspeedmph=0.9&dailyrainin=0.020&rainin=0.000
                      
                      Aug 27 15:19:29 DietPi systemd[1]: Started Service für ioBroker Wetterstation.
                      Aug 27 15:19:29 DietPi wetterstation.sh[6204]: Connection to 10.0.1.202 8087 port [tcp/*] succeeded!
                      

                      8f5a3aad-6870-412c-aa48-c8ac0ea1b21c-image.png

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

                        Da keine offensichtlichen Fehler aufgetreten sind:

                        Neues Release des Wetterstation WLAN-Skriptes auf GitHub V3.2.0

                        • + Support für WeatherObservationsWebsite (WOW)

                        Wie immer zu finden im GitHub


                        Update-Routine von Vorgängerversion:

                        • aktuellen WS-Updater nutzen (Download falls älter als V2.12.1: wget -O ws_updater.sh https://raw.githubusercontent.com/SBorg2014/WLAN-Wetterstation/master/ws_updater.sh)
                        • ./ws_updater.sh im Installationsverzeichnis ausführen
                        • Menüpunkt "4" wählen und die Fragen beantworten
                        • wetterstation.js muss ebenfalls im JavaScript-Adapter ersetzt und einmalig ausgeführt werden (neuer Datenpunkt .Info.WOW); bei aktivierter Rest-API wird der Datenpunkt automatisch im ioB angelegt (1)

                        (1) es empfiehlt sich danach den Simple-API-Adapter neu zu starten (entweder per WebIF oder einfach iob restart simple-api.0)


                        Update sollte durchgeführt werden, gerade wenn man AWEKAS (kein Tippfehler, hier gab es auch eine interne Änderung) nutzt oder man eben zukünftig WOW nutzen möchte.

                        Die Release-Version ist nicht mit dem letzten Beta-Release identisch! Betatester tauschen bitte die ".sh" und ".sub" aus und restarten den Service.

                        M 1 Reply Last reply Reply Quote 4
                        • M
                          mctom @SBorg last edited by

                          @sborg

                          Hallo zusammen,

                          ich habe ein kleines Problem mit der Statistik. Und ich bin mir nicht sicher ob ich was falsch mache oder wo ich noch was suchen könnte.
                          Und zwar wir bei mir die Anzahl der Regentage falsch angezeigt. Diesen MOnat werden schon 6 Regentage angezeigt. Obwohl die letzten Tage kein Regen gefallen ist. In der InfluxDB sind auch keine Einträge.
                          Jetzt habe ich schon an verschiedenen Stellen geschaut.
                          Ein Thema ist mir aufgefallen und ich bin mir unsicher ob es damit zu tun hat. Wenn ich mir die Logs zu dem Statistik Script anschaue kommt als letzter Eintrag aus der Datenbank:

                          {
                          "result": "_result",
                          "table": 0,
                          "_start": "2023-09-05T22:00:00Z",
                          "_stop": "2023-09-06T21:59:59Z",
                          "_time": "2023-09-06T21:53:38.247Z",
                          "_value": 16.7,
                          "_field": "value",
                          "_measurement": "0_userdata.0.wetter.wetterstation.Aussentemperatur",
                          "ts": 1694037218247
                          }

                          Ich finde die Zeiten etwas komisch und warum kommt kein Eintrag mit dem Ergebnis Regen.Tag.
                          Kann mir hier jemand helfen ?

                          Vielen Gruß

                          Michael

                          SBorg 1 Reply Last reply Reply Quote 0
                          • S
                            schittl last edited by

                            Ich habe einen neuen DP30 erworben und in meinen DP1500 eingebunden. Wird auch in WSView und Ecowitt angezeigt. Leider liefert dieser nur Temperatur und keine Luftfeuchte. Im Datastring wird er als DP50 interpretiert. Hier Auszug Datastring:

                            ......totalrainin=32.862&temp1f=66.20&humidity1=68 &temp2f=74.84 &soilmoisture1=13......

                            Es wird kein humidity2 geliefert nur temp2f.

                            Kann man dieses eventuell noch einbauen? Bei mir ist es der CH2.

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

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

                              Ich finde die Zeiten etwas komisch

                              Das kommt schon hin. Influx ist in Zulu-Time (siehst du am "Z" im Zeitstempel). Sind aktuell zu uns -2h wg. Sommerzeit.

                              Damit wäre Zulu plus 2h UTC

                              • Start: 06.09.2023 um 0:00 Uhr
                              • Stop: 06.09.2023 um 23:59:59 Uhr

                              also genau ein ganzer Tag, nämlich der 06.09. 😉

                              Die Statistik macht nichts anderes als den Max-Wert der Regenmenge (der Stand addiert sich auf) des Tages aus der InfluxDB zu ermitteln. Bei größer "0" = Regentag und Gesamtregentage = alter Stand Regentage + 1

                              Leider der Satz den man nicht hören mag: das funktioniert soweit tadellos, ist ein lokales Problem bei dir... 😇
                              Vermutlich loggst du die Regenmenge nicht genau in das Bucket und/oder Instanz die du im Statistik-Script angegeben hast?

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

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

                                Kann man dieses eventuell noch einbauen?

                                Wenn "man" nicht ich bin... 😊

                                Jepp, mach ich, kann aber aktuell auch ein paar Tage dauern. Batteriestatus oä. liefert er nicht?

                                1 Reply Last reply Reply Quote 0
                                • Boronsbruder
                                  Boronsbruder @schittl last edited by Boronsbruder

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

                                  Ich habe einen neuen DP30 erworben

                                  @schittl
                                  Du weisst aber schon, dass der DP 30 nur ein Temperatursensor und kein Temp& Hum ist?

                                  7 Spezifikationen
                                  Energie: 2 x 1,5V AA Batterien (nicht im Lieferumfang enthalten)
                                  Frequenz: 868Mhz
                                  Temperaturbereich: -40°C – 50°C
                                  Auflösung: 0.1°C
                                  Genauigkeit: +/- 1°C
                                  

                                  Oder geht darum, dass er im Skript dann mit Luftfeuchte geführt wird?

                                  1 Reply Last reply Reply Quote 0
                                  • S
                                    schittl last edited by

                                    @SBorg
                                    Vielen Dank. Dein Script ist ansonsten so super und funktioniert seit paar Jahren zuverlässig. Auch wenn ab und zu neue Sensoren dazu kommen. Batteriewerte liefert er. Das ist auf jedenfall nicht eilig.

                                    @Boronsbruder
                                    Das ist mir bekannt. Liefert nur Temperatur und Batterie.

                                    Im Ecowittportal werden die Daten korrekt angezeigt.

                                    Danke für Eure Mühe.

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

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

                                      Batteriewerte liefert er

                                      Da bräuchte ich dann den Teil des Strings noch 😉

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

                                        @sborg
                                        Ich vermute bei der Übertragung prüfst Du, ob Temp und Humi vorhanden sind im String. Das müsstest Du nur "aufweichen" und auch einzeln übertragen oder nur auch bei einer Temp.

                                        Im String sollte es dann genauso aus wie bei DP50 😉

                                        Ich komme leider erst am Freitag wieder dazu Dir den Data-String nochmals zu schicken 😞

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

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

                                          Ich vermute bei der Übertragung prüfst Du, ob Temp und Humi vorhanden sind im String.

                                          Nein 🙂
                                          Anhand der Vorauswahl per "conf" wird dann selektiv geprüft. Sonst müsste ich bei jedem Datenpaket auf alle Sensoren prüfen. Viele (bspw. ich habe überhaupt keinen) haben aber nur wenige oder gar keine Zusatzsensoren.

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

                                          Im String sollte es dann genauso aus wie bei DP50

                                          Dürfte eigentlich nicht, denn wenn du bspw. dann DP35 und DP50 hast, ließe sich nicht mehr unterscheiden welcher Sensor denn nun was ist. Der String geht ja so auch an andere Wetterdienste.

                                          S Rene55 2 Replies Last reply Reply Quote 0
                                          • S
                                            schittl @SBorg last edited by

                                            @sborg

                                            Hier der aktuelle Data-String:

                                            Listening on [0.0.0.0] (family 2, port 1081)
                                            Connection from xxx.xxx.xxx.xxx 24659 received!
                                            PASSKEY=xxxx&stationtype=xxxx&runtime=13729033&dateutc=2023-09-14+09:33:00&tempinf=53.06&humidityin=65&baromrelin=28.175&baromabsin=28.175&tempf=52.88&humidity=93&winddir=24&windspeedmph=0.22&windgustmph=1.12&maxdailygust=9.17&solarradiation=117.44&uv=1&rainratein=0.000&eventrainin=0.150&hourlyrainin=0.000&dailyrainin=0.043&weeklyrainin=0.150&monthlyrainin=0.673&yearlyrainin=33.012&totalrainin=33.012&temp1f=67.64&humidity1=68&temp2f=75.20&soilmoisture1=4&soilmoisture2=50&soilmoisture3=18&soilmoisture4=37&soilmoisture5=43&lightning_num=0&lightning=10&lightning_time=1692962277&leak_ch1=0&tf_ch1=73.40&wh65batt=0&batt1=0&batt2=0&soilbatt1=1.5&soilbatt2=1.5&soilbatt3=1.5&soilbatt4=1.5&soilbatt5=1.5&wh57batt=5&leakbatt1=5&tf_batt1=1.58&freq=868M&model=xxxx
                                            

                                            DP30 ist temp2f & batt2 meines Erachtens

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            982
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

                                            linux shell-script wetterstation wlan-wetterstation
                                            141
                                            5399
                                            2911221
                                            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