Seite 1 von 1

[V4.0 IP9] Hilfe bei Dateninterpretation

Verfasst: So Apr 14, 2024 12:22 am
von 0lek
Hallo,

Ich bin auf keinen besseren Titel gekommen. Ich brauch etwas Hilfe bei der Interpretation von Daten aus einem HTTP-API und wie ich diese in die InfluxDB kriege.

Was will ich machen?
Daten aus einem PM10 (Smog) Sensor in die InfluxDB und weiter in Grafana bringen

Welche Daten
Ich bekomme die Daten ueber die API als Stunden-Durchschnitt. Hier der API-Link.

Code: Alles auswählen

{"key":"PM10","values":[{"date":"2024-04-14 00:00:00","value":null},{"date":"2024-04-13 23:00:00","value":null},{"date":"2024-04-13 22:00:00","value":47.1014},{"date":"2024-04-13 21:00:00","value":29.4315},{"date":"2024-04-13 20:00:00","value":26.969},{"date":"2024-04-13 19:00:00","value":19.2261},{"date":"2024-04-13 18:00:00","value":13.6227},{"date":"2024-04-13 17:00:00","value":17.4531},{"date":"2024-04-13 16:00:00","value":15.408},{"date":"2024-04-13 15:00:00","value":19.6642},{"date":"2024-04-13 14:00:00","value":22.4598},{"date":"2024-04-13 13:00:00","value":20.917},{"date":"2024-04-13 12:00:00","value":22.4817},{"date":"2024-04-13 11:00:00","value":26.0218},{"date":"2024-04-13 10:00:00","value":28.5203},{"date":"2024-04-13 09:00:00","value":30.0228},{"date":"2024-04-13 08:00:00","value":34.3197},{"date":"2024-04-13 07:00:00","value":39.7655},{"date":"2024-04-13 06:00:00","value":45.2811},{"date":"2024-04-13 05:00:00","value":40.2013},{"date":"2024-04-13 04:00:00","value":39.4061},{"date":"2024-04-13 03:00:00","value":39.4717},{"date":"2024-04-13 02:00:00","value":45.1994},{"date":"2024-04-13 01:00:00","value":53.3304},{"date":"2024-04-13 00:00:00","value":49.5936},{"date":"2024-04-12 23:00:00","value":44.5269},{"date":"2024-04-12 22:00:00","value":45.888},{"date":"2024-04-12 21:00:00","value":null},{"date":"2024-04-12 20:00:00","value":25.8567},{"date":"2024-04-12 19:00:00","value":30.6745},{"date":"2024-04-12 18:00:00","value":25.3573},{"date":"2024-04-12 17:00:00","value":25.2729},{"date":"2024-04-12 16:00:00","value":18.7357},{"date":"2024-04-12 15:00:00","value":21.3768},{"date":"2024-04-12 14:00:00","value":20.8551},{"date":"2024-04-12 13:00:00","value":17.1416},{"date":"2024-04-12 12:00:00","value":21.2267},{"date":"2024-04-12 11:00:00","value":30.914},{"date":"2024-04-12 10:00:00","value":43.5125},{"date":"2024-04-12 09:00:00","value":61.0938},{"date":"2024-04-12 08:00:00","value":65.0691},{"date":"2024-04-12 07:00:00","value":53.0703},{"date":"2024-04-12 06:00:00","value":50.2484},{"date":"2024-04-12 05:00:00","value":45.0144},{"date":"2024-04-12 04:00:00","value":44.6426},{"date":"2024-04-12 03:00:00","value":44.7471},{"date":"2024-04-12 02:00:00","value":42.7786},{"date":"2024-04-12 01:00:00","value":null}]}
Ich kriege die Daten ueber den Selektor

Code: Alles auswählen

values[1].value
auch raus.

Was ist denn dann das Problem?
Vielleicht ist es nur ein Verstaendnissproblem. Soll ich nur den "value" in die Influxdb schreiben? Und den Timestamp generiert die DB? Oder lieber beides? Aber kann ich dann diesen Timestamp fuer die Zeitachse bei Grafana nutzen?
Oder einfach besser die Transaktion alle 60 Minuten laufen lassen, und dann so getimed dass es zur vollen Stude ist? Dann waeren die Timestamps aus dem JSON und in der InfluxDB ja mehr oder weniger synchronisiert.

Danke fuer Eure Hilfe!
Aleksander

Re: [V4.0 IP9] Hilfe bei Dateninterpretation

Verfasst: So Apr 14, 2024 6:35 am
von gbglace
In der TWS-Instanz Influxdb kannst Du nur den Value speichern. Die Randattribute ergeben sich dabei selbst.

Wenn Du eine eigene Influxdb in einem Container hostest, kannst Du es auch zu einem eigenen definierten Zeitstempel speichern.

Die Lösung ist TWS nativ, ein stündlich getriggerter API Abruf.

Re: [V4.0 IP9] Hilfe bei Dateninterpretation

Verfasst: Di Apr 16, 2024 11:13 am
von 0lek
@gbglace Danke. War auch mein Verstaendniss.

Ich habe hier noch einen Fall. Ich wuerde das mal in dem Topic belassen, weil es auf dem vorher aufbaut. Und zwar habe ich folgende
Daten.

Das sind Strahlenwerte. Ich habe leider kein API-Dokumentation dazu gefunden. Ich kann die Daten nach bestimmten Zeitraeumen (mit "dateFrom" und "dateTo" in URL) begrenzen.

Wie wuerde ich jetzt vorgehen, wenn ich das in die Influx schreiben moechte? Die Wette gibt es ja stuendlich, aber wie kann ich eine "dynamische" URL generieren fuer HTTP Abfrage?

Wuerde ich das in Python umsetzen, wuerde ich wahrscheinlich sowas machen, wie: bei "dateFrom" now - 1h und bei "dateTo" now, dann CURL laufen lassen. Klar, kann ich das machen, aber wuerde es lieber nativ auf dem TWS umsetzen.

Oder vielleicht mal etwas generischer gefragt: Wie gehe ich mit APIs um, die mir nicht den aktuellen Wert sondern eine Zeitreihe geben?

Danke!

Re: [V4.0 IP9] Hilfe bei Dateninterpretation

Verfasst: Di Apr 16, 2024 11:54 am
von gbglace
Das ist eine ähnliche Aufgabe wie gezielt die Stundenpreise aus der Tibber-API abzufragen. Wobei Du das hier in einer Logik vor dem API-Aufruf basteln musst, beim Tibber brauchst das um den passenden Wert aus dem Antwort-JSON zu extrahieren.

Bei solchen JSON Arrays wo man eine fixe Anzahl an Objekten bekommt, musst eigentlich nur wissen die wievielte Stunde des Tages ist JETZT, dann kennst eigentlich immer die genaue Position im Array und kannst die passenden Werte dann aus der Gesamt-Antwort einfach selektieren.

Die Kunst besteht dann eigentlich immer nur eine Build-In Funktion zu haben, die einem als quasi einfache Zahl die laufende Sekunde/Minute/Stunde/Tag/Monat/Jahr liefert.
Aus einem String geht das dann noch mit Substrings usw. und da hat der TWs ja passende Logikbausteine um Stringsoperationen durchzuführen. nur seinen eigenen internen Unix-Zeitstempel bekommst eben so nicht zerlegt. Daher läuft das bei mir noch im NR.

Re: [V4.0 IP9] Hilfe bei Dateninterpretation

Verfasst: Di Apr 16, 2024 12:06 pm
von MrWilson
aber wie kann ich eine "dynamische" URL generieren fuer HTTP Abfrage?
Du setzt den Wert für dateFrom und dateTo in der URI in <> mit einem Namen und erstellst dann zwei Abfragen, die Start- und Endzeit aus einer Logik z.B. kommend, an die URI übergeben.