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.
    • Sugomojawe
      Sugomojawe last edited by

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

      kann ich das deutsche Wetterstationsforum empfehlen

      Danke das werde ich mir mal ansehen.

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

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

        @sborg mal eine Frage zur INflux DB und der Retention Time

        Reicht hier eine Retention Time der Werte von 31 Tage

        Natürlich speichere ich die Daten in eine andere Influxdb über Tasks hier werden die Daten dann auf alle 15 minuten gedownsamplet.

        Danke für deine Auskunft.

        Kann man/ich nicht so pauschal beantworten. Es kommt ganz darauf an was du mit den Daten anstellen willst. Wenn du einen Grafana-Chart über 3 Monate exakt darstellen möchtest, nein. Willst du das nicht bzw. genügen dir die aggregierten Werte, dann ja. Es kann ja auch sein, dass du ein Blockly für xyz nutzt und da die Daten unbedingt brauchst. Deswegen kann ich schlecht ja oder nein sagen, das hängt zu stark vom User ab. Pauschal für die meisten Anwender aber ja 😉
        Nimmst du das Beispiel-Grafana genügen die 31 Tage.
        Mir genügt ebenfalls ein 15 Minutendurchschnitt. Reduziert die Datenflut maßgeblich und wer braucht schon vom 18.05.2023 um 23:12 Uhr die genaue Temperatur? Der Wert von 23:00 Uhr bis 23:15 Uhr wird sich eh nur wenig oder gar nicht geändert haben, und selbst wenn gibt es ja dafür dann den aggregierten Wert der das berücksichtigt.

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

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

          @sborg
          Ich habe nur Bodenfeuchte-Sensoren DP100 für Bewässerungssteuerung.
          Ich denke AWEKAS interessiert sich auch nicht für die Temperatur und Feuchte im Tomatenhaus...

          AWEKAS nicht unbedingt, aber du fährst in Urlaub und dein Bruder soll währenddessen auf deine Tomaten aufpassen. Du (ich zumindest nicht) willst aber nicht dein SmartHome ins Inet stellen. Da wäre es doch praktisch er könnte die Bodenwerte in AWEKAS ablesen. Oder, oder ...
          Du wirst sie nicht übertragen müssen, dass wird jedem User überlassen werden ob er das will oder nicht. Aktuell wäre es halt gut wenn eine Handvoll zumindest zum testen mal mit macht.

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

          Ich glaube nicht dass die Sensoren gepaired werden.

          Deswegen auch "ähnlich". Wie bei BT werden sie nicht "fest" und nur pro Device/Gerät verbunden, sie werden aber gekoppelt (der Begriff fiel mir gestern nicht ein). Sonst könnte ich ja bspw. denken "Ups, muss meinen Pool heizen, der ist ja ar*ch kalt", dabei empfange ich gerade nicht mein Thermometer, sondern das vom Nachbarn.
          Ich habs wieder vergessen, aber da war was mit x Sekunden Reset am Sensor drücken und irgendwas für x Sekunden am Display/Station (GWs weiß ich überhaupt nicht).

          ...und nein, ich habe weder das Thermometer, noch den/einen Pool, nicht mal ein Plantschbecken 😉

          H Boronsbruder 2 Replies Last reply Reply Quote 0
          • B
            babl @SBorg last edited by

            @sborg jepp so sehe ich das auch, ich meinte nur obe es von dir her reicht mit deinem Statistik Addon

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

              @babl Der nimmt was er kriegt. Bekommt er 5 Werte der Temperatur macht er da min/max/avg daraus, bekommt er 500 dann eben aus den 500 😉
              Ist jetzt zwar extrem abstrakt, aber genau so isses halt. Mit mehr Werten ist es halt etwas genauer, aber irgendwann wird es auch durch mehr Werte nicht mehr genauer (und die rund 3k Werte pro Tag der Station sind dafür wirklich nicht nötig). Für den Tagesverlauf genügen da die 96 Werte völlig und rückwirkend reden wir hier auch von Temperaturen von vor 30 Tagen und mehr.
              ...und wozu sollte man sich da den Kopf zerbrechen ob es am 03. Juni nun tatsächlich 28.21°C oder 28.12°C waren, wenn die Drift und Genauigkeit des Temperatursensors sowieso +/- 0.5°C beträgt...

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

                Hallo Zusammen,
                nach 3 Tagen ausprobieren bin ich kurz vorm Aufgeben.
                Bin vor 3 Wochen auf Influx v2.7 umgestiegen. Nach IOBroker Daten umscheffeln von V1.8 mit ack/q/from als fields in tags war der letzte offene Punkt, dass ich seit dem Umstieg auf V3.1.1 des Wetterstation.sh keine min/max/365t_... mehr bekomme.
                Im IOBroker sehen die Objekte so aus:
                b0010674-b9be-4829-9230-0b48a4088e7b-grafik.png

                Ein Wetterstation.sh --influx_test liefert komischer Weise die Temperaturen doppelt, bzw. eine leicht erhöhte Regenmenge...:

                pi@rpi-heizung:~/wetterstation $ ./wetterstation.sh --influx_test
                Testing InfluxDB... min/max Aussentemperatur 24h: 16.27
                16.27°C 32
                32°C
                pi@rpi-heizung:~/wetterstation $ ./wetterstation.sh --metsommer
                
                 Daten vom 01.06.2023 bis 31.08.2023 wurden ermittelt...
                
                         Ø-Temperatur: 19.697241893242822000 °C
                         Regenmenge  : 20230831235959 l/m²
                
                pi@rpi-heizung:~/wetterstation $
                
                

                Die Influx Abfrage scheint generell also zu funktionieren.
                Zuerst hatte ich die Umlaute in Verdacht, da bei obigem Test nicht °C sondern  ... stand.
                Aber nachdem ich das berichtigt hatte landeten immer noch keine richtigen Werte in den Objekten?!

                In den Objekten stehen als Einheiten die °C richtig drin. Grafana zeigt mir auch einen hübschen Graphen der Außentemperatur.

                Hat jemand weitere Ideen?
                Im Tausch kann ich gerne mein Bash-Script zum automatischen umscheffeln der V1.8 IOBroker-Daten (mit Fields) in V2.7 (mit Tags) anbieten (natürlich in einem gesonderten Thread). Auch wenn das dank meiner nur rudimentären Programmierkenntnisse bestimmt nicht allzu professionell ist... (aber es funktioniert ;o) )

                Gruß
                Hefo

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

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

                  und dein Bruder soll währenddessen auf deine Tomaten aufpassen

                  Ich hab nen Bruder? Cool 🤣

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

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

                    Ich hab nen Bruder? Cool 🤣

                    Logo, heißt doch Boron... 😂
                    ...so, und jetzt kannst du mal paar Tomaten rüber wachsen lassen... 😎


                    @Hefo Wie sieht den deine Datenstruktur genau aus? Taggen der Werte unterstütze ich aktuell nämlich nicht, da dies auch vom ioB nur recht rudimentär aktuell umgesetzt ist. Das würde zu deinem Fehlerbild passen. Der Test baut einfach nur eine Verbindung zu Influx auf und ließt dann einen Wert aus. Somit ist einfach sichergestellt, dass Port, IP, Bucket usw. korrekt sind.
                    Bild 001.png

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

                      @sborg
                      Oh Mann, da hätte ich doch auch selbst drauf kommen können. Ich war in einem anderen Zusammenhang schon über Mehrfachwerte bei Flux-Abfragen gestolpert...

                      Aber OK, der Reihe nach.

                      Ich habe beim Umstieg auf Influx 2.7 eine neue IOBroker DB "iobroker2/global" angelegt. Die alten "iobroker/global" und "iobroker/autogen wurden ja automatisch beim Influx-Umstieg migriert.

                      Im IOBroker habe ich dann im Influx-Adapter das Häkchen für "Verwende Tags, anstelle von Feldern,..." gesetzt, da es mir immer spanisch vorkam, dass die als Felder geschrieben wurden (passte nicht zu der Erklärung in der Influx-Doku).
                      Ich hatte auch die Hoffnung, dass das den Arbeitsspeicherhunger der Influx etwas bändigen könnte, an der Stelle hat es aber nicht geholfen, die gönnt sich immer noch 50% mehr als vor dem Umstieg die 1.8.x.
                      Dafür ist, nach umkopieren der alten "iobroker/global" in die neue "iobroker2/global" die Datenbank auf der SSD keine 1,6GB mehr groß sondern nur noch 600MB.

                      Allerdings zum eigendlichen Problem:
                      Eine Abfrage in Flux liefert die Ergebnisse dann immer sortiert in "tables". Die Tables haben immer die identischen Werte der Tags gruppiert.
                      D.h. alles was an Tags q=0, ack=true, from=system.adapter.influxdb.0 hat landet in einem Table. Alles was q=0, ack=true, from=system.adapter.simple-api.0 im nächsten. Wenn q nicht gleich 0 oder ack=false gibt es weitere tables.

                      Heißt, man muß diese Tables vor dem min/max/mean, bzw. generell vor dem Weiterverarbeiten, erstmal zusammenführen.

                      Das habe ich bei dem oben genannten "anderen Zusammenhang" durch ein zwischengeschaltetes:

                      |> drop(columns: ["ack", "from", "q"]) |> sort(columns: ["_time"])
                      

                      gemacht.
                      Was natürlich die Gefahr birgt, dass der Influx-Adapter in Zukunft mal weitere Tags einführt...

                      Es ginge auch mit einem:

                      |> keep(columns: ["_value"]) |> sort(columns: ["_time"])
                      

                      dann ist die Ausgabe aber anders formatiert.

                      Beispiele:
                      Die Ursprungs-query aus der wetterstation.sub "influx_query()" Funktion liefert dieses Ergebnis:

                      influx query 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> max()'
                      Result: _result
                      Table: keys: [_start, _stop, _field, _measurement, ack, from, q]
                                         _start:time                      _stop:time           _field:string                          _measurement:string              ack:string                from:string                q:string                      _time:time                  _value:float
                      ------------------------------  ------------------------------  ----------------------  -------------------------------------------  ----------------------  -------------------------  ----------------------  ------------------------------  ----------------------------
                      2023-08-19T11:50:41.246763433Z  2023-08-20T11:50:41.246763433Z                   value  javascript.0.Wetterstation.Aussentemperatur                    true  system.adapter.influxdb.0                       0  2023-08-19T12:16:26.633000000Z                         31.22
                      Table: keys: [_start, _stop, _field, _measurement, ack, from, q]
                                         _start:time                      _stop:time           _field:string                          _measurement:string              ack:string                  from:string                q:string                      _time:time                  _value:float
                      ------------------------------  ------------------------------  ----------------------  -------------------------------------------  ----------------------  ---------------------------  ----------------------  ------------------------------  ----------------------------
                      2023-08-19T11:50:41.246763433Z  2023-08-20T11:50:41.246763433Z                   value  javascript.0.Wetterstation.Aussentemperatur                    true  system.adapter.simple-api.0                       0  2023-08-19T12:15:26.615000000Z                         31.22
                      

                      Ergänzt mit dem "drop" und "sort" nur noch ein Table:

                      influx query 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> drop(columns: ["ack", "from", "q"]) |> sort(columns: ["_time"]) |> max()'
                      Result: _result
                      Table: keys: [_start, _stop, _field, _measurement]
                                         _start:time                      _stop:time           _field:string                          _measurement:string                      _time:time                  _value:float
                      ------------------------------  ------------------------------  ----------------------  -------------------------------------------  ------------------------------  ----------------------------
                      2023-08-19T11:57:11.324077570Z  2023-08-20T11:57:11.324077570Z                   value  javascript.0.Wetterstation.Aussentemperatur  2023-08-19T12:15:26.615000000Z                         31.22
                      

                      Das sieht dann meiner Meinung nach so aus, wie dass, was Deine Abfrage liefert (hier an einer anderen meiner DBs, die keine Tags hat, probiert):

                      influx query 'from(bucket: "vito2/autogen") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "vito" and r._field == "TempAtp") |> max()'    Result: _result
                      Table: keys: [_start, _stop, _field, _measurement]
                                         _start:time                      _stop:time           _field:string     _measurement:string                      _time:time                  _value:float
                      ------------------------------  ------------------------------  ----------------------  ----------------------  ------------------------------  ----------------------------
                      2023-08-19T12:03:41.255250302Z  2023-08-20T12:03:41.255250302Z                 TempAtp                    vito  2023-08-19T12:35:00.000000000Z                          28.6
                      

                      Nur zur Ergänzung: die Ausgabe mit dem "keep" sieht völlig anders (und viel übersichtlicher) aus:

                      influx query 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> keep(columns: ["_value"]) |> sort(columns: ["_time"]) |> max()'
                      Result: _result
                      Table: keys: []
                                      _value:float
                      ----------------------------
                                             31.22
                      

                      Was ich jetzt noch nicht ausprobiert habe ist, ob das Resultat identisch aussieht, wenn man anstatt der influx-cli zum Abfragen curl nimmt (wie in Deinem Script)?!

                      Und was ich so ad hoc auch nicht absehen kann: Ob ein Ergänzen der Query in der Funktion influx_query() um das "drop" und "sort" an anderer Stelle eine negative Auswirkung hat?!

                      NaJa, Versuch macht kluch... ich baue es mal in die .sub ein und teste mit --influx_test und --metsommer

                      Gruß
                      Hefo

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

                        @SBorg
                        Schade, das war wohl zu einfach gedacht...

                        pi@rpi-heizung:~/wetterstation $ ./wetterstation.sh --influx_test
                        Testing InfluxDB... min/max Aussentemperatur 24h: 18.77°C 29.61°C
                        pi@rpi-heizung:~/wetterstation $ ./wetterstation.sh --metsommer
                        (standard_in) 12: illegal character: :
                        (standard_in) 12: syntax error
                        (standard_in) 12: illegal character: :
                        
                         Daten vom 01.06.2023 bis 31.08.2023 wurden ermittelt...
                        
                                 Ø-Temperatur:  °C
                                 Regenmenge  : 20230831235959 l/m²
                        

                        Die min & max bekommt er so hin, den mean anscheinend nicht... (Regen ist klar, ist ja eine andere Abfrage im sub).

                        Warum auch immer ist die Sortierung der Felder eine andere bei mean als bei min/max und bei min/max ist auch noch der Zeitpunkt des min/max dabei:

                        curl -sk --request POST "1.2.3.4:8086/api/v2/query?org=HomeData" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token MeinToken==" --data 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> drop(columns: ["ack", "from", "q"]) |> sort(columns: ["_time"]) |> min()'
                        ,result,table,_start,_stop,_time,_value,_field,_measurement
                        ,_result,0,2023-08-19T19:04:42.48857557Z,2023-08-20T19:04:42.48857557Z,2023-08-20T02:08:35.984Z,18.77,value,javascript.0.Wetterstation.Aussentemperatur
                        
                        curl -sk --request POST "1.2.3.4:8086/api/v2/query?org=HomeData" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token MeinToken==" --data 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> drop(columns: ["ack", "from", "q"]) |> sort(columns: ["_time"]) |> mean()'
                        ,result,table,_start,_stop,_field,_measurement,_value
                        ,_result,0,2023-08-19T19:04:46.528387642Z,2023-08-20T19:04:46.528387642Z,value,javascript.0.Wetterstation.Aussentemperatur,23.941339648173376
                        

                        Mit dem "keep" wären beide Results gleich formatiert, nur halt etwas anders / kürzer als bis jetzt in Deinem Script:

                        curl -sk --request POST "1.2.3.4:8086/api/v2/query?org=HomeData" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token MeinToken==" --data 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> keep(columns: ["_value"]) |> sort(columns: ["_time"]) |> mean()'
                        ,result,table,_value
                        ,_result,0,23.941460117170056
                        
                        curl -sk --request POST "1.2.3.4:8086/api/v2/query?org=HomeData" --header 'Content-Type: application/vnd.flux' --header 'Accept: application/csv' --header "Authorization: Token MeinToken==" --data 'from(bucket: "iobroker2/global") |> range(start: -1d, stop: now()) |> filter(fn: (r) => r._measurement == "javascript.0.Wetterstation.Aussentemperatur" and r._field == "value") |> keep(columns: ["_value"]) |> sort(columns: ["_time"]) |> max()'
                        ,result,table,_value
                        ,_result,0,29.61
                        
                        

                        Gruß
                        Hefo

                        H 1 Reply Last reply Reply Quote 0
                        • 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            937
                                            Online

                                            31.6k
                                            Users

                                            79.4k
                                            Topics

                                            1.3m
                                            Posts

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