Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Hefo

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    H
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 26
    • Best 1
    • Groups 1

    Hefo

    @Hefo

    Starter

    1
    Reputation
    19
    Profile views
    26
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Hefo Follow
    Starter

    Best posts made by Hefo

    • RE: Test Adapter influxdb 2.0

      @schtallone @Sputnik24

      Auch wenn der Thread schon etwas älter ist...
      Ich stand vor ein paar Wochen vor dem selben Problem beim Umstieg von InfluxDB 1.8.x auf 2.7.

      Wollte meine 1,6GB Datenbank des IOBrokers nicht einfach wegschmeißen, wollte mir aber auch noch keine Gedanken über ein Downsampling machen. Und irgendwie kam es mir immer komisch vor, dass der IOBroker Influx-Adapter die "Meta-Infos" als Fields speicherte und nicht als Tags. In der Doku der Influx stand auch, dass sowas besser in Tags aufgehoben sei wegen Geschwindigkeit, Speicherplatz, ...

      Also mußte ein kleines Bash-Script her, dass die alten Daten in eine neue DB kopiert und dabei die 3 Fields ack, q und from in Tags umwandelt/schreibt. Parallel lief die neue DB schon und wurde parallel auch fleißig vom IOBroker weiter befüllt.

      Ich bin nun wahrlich kein Programmierer und dementsprechend ist das Script bestimmt auch für Profis zum Haare raufen, aber es tut was es soll...

      Zum Script:

      • Es ist nicht wirklich parametrierbar gemacht, d.h. der alte und der neue DB-name stehen des öfteren in den einzelnen Zeilen. Bei mir waren es alt: iobroker/global und neu: iobroker2/global. Wer es anders benötigt muß es anpassen...
      • Man braucht die Influx-cli und sie muß konfiguriert sein (so dass man nicht immer Token und Org mit angeben muß)
      • Das Script arbeitet immer einzelne Batches ab, deren Größe ist oben im Script anpassbar. Solange die Daten relativ kontinuierlich in der DB sind gibt es kein Problem, ich hatte einige Measurements, in denen ich 15 Minuten-Werte meiner alten Wetterstation hatte und dann seit 1,5 Jahren mit einer neuen Wetterstation alle X Sekunden einen Wert. Da mußte ich dann die Batch-Größe stark runterschrauben...
      • Vor dem Abarbeiten jedes neuen Batches prüft das Script, ob noch genug Arbeitsspeicher vorhanden ist (700MB war bei mir ein guter Wert und der steht in der "while" Schleife in Zeile 60). Wenn nicht wartet es 10 Sekunden und testet dann erneut, bis irgendwann wieder genug vorhanden ist...
      • Wenn man das Script mal abbricht, fängt es wieder von vorne mit dem ersten verfügbaren Measurement an. In den Fällen habe ich dann vor dem Neustart des Scripts die übertragenen Daten geprüft und die schon abgearbeiteten Measurements aus der alten DB gelöscht
      • Wenn einem Datenpunkt der alten DB mal eins der 3 Fields/Tags fehlt wird für q=0 gesetzt, für ack=false und für from=manual (ich hatte einige Werte mal manuell "nachgetragen" ohne die Fields auch zu schreiben...)

      Nach dem Umkopieren war die DB dann nicht mehr 1,6GB groß sondern nur noch 600MB. Beim Arbeitsspeicher hat es leider nichts gebracht, der ist seit dem Umstieg von 1.8 auf 2.7 von ca. 1GB auf ca. 1,5GB für die Influx gestiegen...

      Hier das Script:
      IOBroker_copy_db

      Gruß
      Hefo

      posted in Tester
      H
      Hefo

    Latest posts made by Hefo

    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @negalein @DGR könnte es sein, dass Ihr beim Export nur Sekunden-genaue Werte exportiert?
      In der CSV sehe ich nichts mit Millisekunden?!
      Der IOBroker schreibt bei mir aber mit 3 Nachkommastellen nach den Sekunden:
      ,,1,2023-08-04T10:09:21.662Z,vw-connect.0.TM
      Dann hast Du Dir jetzt ein paar Punkte "verdoppelt" beim Import...

      Du mußt beim Export rechts im Bild die Aggregate Function "mean" abhaken (und evtl. das "Window Period" herunter setzen, wobei das ja dann eigentlich keinen Einfluß mehr haben sollte)

      Mit der influx query wie oben von DGR sollten die Millisekunden aber mitkommen...

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    • RE: Test Adapter VW Connect für VW, ID, Audi, Seat, Skoda

      @tombox Besten Dank!
      Heute morgen drüber-installiert, der Neustart brachte dann noch einmal beide Meldungen, über Tag kamen die dann nicht mehr. Gerade die Instanz dann noch 2 mal neugestartet, da kam bei beiden Starts dann nur noch einmal jeweils die Meldung zu "air-conditioning/active-ventilation". Die zu "air-conditioning/auxiliary-heating" kam nicht mehr.

      Jetzt kommen nur noch "MQTT Connection closed" Meldungen in sehr regelmäßigen 56 Minuten Intervallen, aber damit kann ich leben ;o)

      Danke noch mal!
      Hefo

      posted in Tester
      H
      Hefo
    • RE: Test Adapter VW Connect für VW, ID, Audi, Seat, Skoda

      @Hant0r @ichderarnd habt Ihr die "Server not available" Info-Meldungen weg bekommen?
      Bekomme diese beiden Meldungen:

      2025-05-05 17:52:22.907 - info: vw-connect.0 (2340677) Server not available. For endpoint air-conditioning/active-ventilation Please try again later:"Internal server error"
      2025-05-05 17:52:23.034 - info: vw-connect.0 (2340677) Server not available. For endpoint air-conditioning/auxiliary-heating Please try again later:"Internal server error"
      

      alle 15 Minuten ins Log geschrieben für unseren Skoda Superb IV (von 2022).

      Bin von 0.7.9 zurück auf 0.7.7, da Du, @Hant0r schriebst, dass Du das gemacht hättest (aber wohl nicht wegen diesem "Schönheitsfehler").
      Danach wieder zurück auf 0.7.9 und alle paar Tage per Katze neu installiert, ohne Erfolg.
      Gestern auch noch mal die Instanz beendet, Instanz und Adapter deinstalliert und dann neu installiert, auch ohne Erfolg.

      Selbst gerade die Installation von 0.7.11 hat nichts geändert.

      Alles Andere funktioniert, ein großes DANKE dafür an tombox und die anderen Fleißigen!

      Gruß
      Hefo

      posted in Tester
      H
      Hefo
    • RE: Test Adapter influxdb 2.0

      @apollon77 Einziger Unterschied zu einer Konfiguration des Influx Adapters für eine InfluxDB 2 mit Fields war eigentlich nur der Haken auf der Experten-Seite der Adapter-Config:
      af234c73-a5c3-4003-afac-481b76d702bb-grafik.png

      Man muß / sollte nur etwas auf die Reihenfolge achten, um ein Mischmasch von Fields und Tags in einer DB zu vermeiden.
      Bzw. wollte ich es nicht drauf ankommen lassen herauszufinden, ob der Adapter beim Setzen des Hakens meckert, wenn schon Daten ohne Tags in der DB sind. Das gilt wahrscheinlich vor allem für Nutzer, die schon auf V2.x umgestiegen sind, aber bei den Fields geblieben sind.

      Vor setzen des Hakens bei "Verwende Tags..." sollte man die Influx auf 2.x (2.7 in meinem Fall) migriert haben. Dabei werden alle Datenbanken mit migriert. Bei mir gab es etwas Probleme durch den komischen Aufbau/Inhalt des Debian-Pakets von Influx, so dass im ersten Versuch alles in meinem User-home landete, beim zweiten Mal dann in /var/lib/influx/.influx... 😒 Das konnte ich dann aber ganz am Ende noch auf Dateisystem-Ebene hin- und herschieben...

      Wenn man dann auf 2.x ist, einen Token für den IOBroker angelegt hat und der IOBroker wieder/weiter in seine DB schreibt, legt man eine neue DB an (in meinem Fall die iobroker2/global). Dem IOBroker-User dann auch Zugriff auf die neue DB gewähren!

      Dann Influx-Adapter stoppen, auf der "DB Settings"-Seite des Adapters die neue DB angeben und auf der "Experteneinstellungen" Seite den Haken setzen.
      Dann den Adapter wieder starten.
      Mehr habe ich in Hinsicht "Konfiguration" nicht gemacht.

      Dass ich das "/global" mitschleppe hängt eigendlich nur daran, dass ich meine ganzen Grafana-Dashboards nicht über den Haufen schmeißen wollte, bzw. mir den Anpassungsaufwand ersparen wollte. Ein neues / geändertes DBRP-Mapping in der Influx hätte es wohl auch getan, so fand ich es aber übersichtlicher...

      Für diejenigen, die schon mehr als eine Datenbank des Influx-Adapters haben, z.B. weil sie beim Umstieg von 1.8 auf 2.x eine Neue angelegt haben: Auch hier kann man das Script nehmen, dann muß man es halt zwei Mal anwenden. Einmal um die 1.8er Daten umzuscheffeln, einmal um die 2.x umzuscheffeln.
      Wichtig in dem Zusammenhang: Das Script geht davon aus, dass keine Tags in der DB vorhanden sind. Was es macht, falls doch welche drin sind? Keine Ahnung, ich habe es nicht ausprobiert. Im besten Fall meckert es nicht und schreibt nur, da es keine passenden Fields findet, in alle Tags die "Manuellen" Werte (s.o.) rein. Die "richtigen" Tags würden dann überschrieben.

      Gruß
      Hefo

      posted in Tester
      H
      Hefo
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @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

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    • RE: Test Adapter influxdb 2.0

      @schtallone @Sputnik24

      Auch wenn der Thread schon etwas älter ist...
      Ich stand vor ein paar Wochen vor dem selben Problem beim Umstieg von InfluxDB 1.8.x auf 2.7.

      Wollte meine 1,6GB Datenbank des IOBrokers nicht einfach wegschmeißen, wollte mir aber auch noch keine Gedanken über ein Downsampling machen. Und irgendwie kam es mir immer komisch vor, dass der IOBroker Influx-Adapter die "Meta-Infos" als Fields speicherte und nicht als Tags. In der Doku der Influx stand auch, dass sowas besser in Tags aufgehoben sei wegen Geschwindigkeit, Speicherplatz, ...

      Also mußte ein kleines Bash-Script her, dass die alten Daten in eine neue DB kopiert und dabei die 3 Fields ack, q und from in Tags umwandelt/schreibt. Parallel lief die neue DB schon und wurde parallel auch fleißig vom IOBroker weiter befüllt.

      Ich bin nun wahrlich kein Programmierer und dementsprechend ist das Script bestimmt auch für Profis zum Haare raufen, aber es tut was es soll...

      Zum Script:

      • Es ist nicht wirklich parametrierbar gemacht, d.h. der alte und der neue DB-name stehen des öfteren in den einzelnen Zeilen. Bei mir waren es alt: iobroker/global und neu: iobroker2/global. Wer es anders benötigt muß es anpassen...
      • Man braucht die Influx-cli und sie muß konfiguriert sein (so dass man nicht immer Token und Org mit angeben muß)
      • Das Script arbeitet immer einzelne Batches ab, deren Größe ist oben im Script anpassbar. Solange die Daten relativ kontinuierlich in der DB sind gibt es kein Problem, ich hatte einige Measurements, in denen ich 15 Minuten-Werte meiner alten Wetterstation hatte und dann seit 1,5 Jahren mit einer neuen Wetterstation alle X Sekunden einen Wert. Da mußte ich dann die Batch-Größe stark runterschrauben...
      • Vor dem Abarbeiten jedes neuen Batches prüft das Script, ob noch genug Arbeitsspeicher vorhanden ist (700MB war bei mir ein guter Wert und der steht in der "while" Schleife in Zeile 60). Wenn nicht wartet es 10 Sekunden und testet dann erneut, bis irgendwann wieder genug vorhanden ist...
      • Wenn man das Script mal abbricht, fängt es wieder von vorne mit dem ersten verfügbaren Measurement an. In den Fällen habe ich dann vor dem Neustart des Scripts die übertragenen Daten geprüft und die schon abgearbeiteten Measurements aus der alten DB gelöscht
      • Wenn einem Datenpunkt der alten DB mal eins der 3 Fields/Tags fehlt wird für q=0 gesetzt, für ack=false und für from=manual (ich hatte einige Werte mal manuell "nachgetragen" ohne die Fields auch zu schreiben...)

      Nach dem Umkopieren war die DB dann nicht mehr 1,6GB groß sondern nur noch 600MB. Beim Arbeitsspeicher hat es leider nichts gebracht, der ist seit dem Umstieg von 1.8 auf 2.7 von ca. 1GB auf ca. 1,5GB für die Influx gestiegen...

      Hier das Script:
      IOBroker_copy_db

      Gruß
      Hefo

      posted in Tester
      H
      Hefo
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @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

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @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

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      @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

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    • RE: [Linux Shell-Skript] WLAN-Wetterstation

      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

      posted in Praktische Anwendungen (Showcase)
      H
      Hefo
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo