Tibber - Preise von morgen in Diagramm

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Tibber - Preise von morgen in Diagramm

Beitrag von Backbe01 »

Hallo,

ich nutze seit kurzem Tibber. Add-On ist installiert und läuft meist 1A. Womit ich mir die Zähne ausbeiße sind die Preise von heute, bzw. morgen.

Wie schaffe ich es, diese Preise in ein Diagramm zu bekommen?

Die Preise liegen in einem String Item und liegen im Json format vor. Das ganze sieht so aus:

Code: Alles auswählen

[
  {
    "startsAt": "2022-09-27T00:00:00.000+02:00",
    "total": 3.8472
  },
  {
    "startsAt": "2022-09-27T01:00:00.000+02:00",
    "total": 3.0748
  },
  {
    "startsAt": "2022-09-27T02:00:00.000+02:00",
    "total": 2.2725
  },
  {
    "startsAt": "2022-09-27T03:00:00.000+02:00",
    "total": 2.026
  },
  
Hier der Link zum Binding: https://www.openhab.org/addons/bindings/tibber/

Ich hoffe es kann mich jemand unterstützen!

Vielen Dank,

Gerhard
OH 4.1.0M2 auf nuc in Docker

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Tibber - Preise von morgen in Diagramm

Beitrag von udo1toni »

Na, Du kannst den String mit dem jsonpath Transformation Service passend zerlegen.
Z.B. kannst Du das im Link zwischen Channel und Item einsetzen, dann verlinkst Du einfach für jeden Wert ein Item und trägst dort jeweils mit jsonpath den passenden Pfad ein. Da das gepostete JSON Objekt sicherlich weder aktuell noch vollständig ist, kann ich keinen exakten Pfad angeben.

Alternativ kann man das Ganze auch in einer Rule erledigen (für den Fall, dass der JSONpath dynamisch gesetzt werden muss).
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Backbe01
Beiträge: 123
Registriert: 19. Jul 2019 21:04
Answers: 0

Re: Tibber - Preise von morgen in Diagramm

Beitrag von Backbe01 »

Sorry für die späte Rückmeldung!!!

Was wäre dieses Forum ohne Dich!

Das was Du schreibst hört sich nach einer Lösung an. Leider habe ich noch nie mit jsonpath Transformation gearbeitet. Das ich für jede Stunde ein eigenes Item erstellen muss, war mit fast klar. Wie ich aber den Betrag, und vor allem diesen der richtigen Stunde zuordnen kann, erschließt sich mir nicht. Leider sind die aktuellen Preise für morgen noch nicht da. Die heutigen Preise liegen mir in diesem Format vor:

Code: Alles auswählen

[{"startsAt":"2023-11-07T00:00:00.000+01:00","total":0.2536},
{"startsAt":"2023-11-07T01:00:00.000+01:00","total":0.2505},
{"startsAt":"2023-11-07T02:00:00.000+01:00","total":0.2439},
{"startsAt":"2023-11-07T03:00:00.000+01:00","total":0.2406},
{"startsAt":"2023-11-07T04:00:00.000+01:00","total":0.2433},
{"startsAt":"2023-11-07T05:00:00.000+01:00","total":0.2589},
{"startsAt":"2023-11-07T06:00:00.000+01:00","total":0.2802},
{"startsAt":"2023-11-07T07:00:00.000+01:00","total":0.3178},
{"startsAt":"2023-11-07T08:00:00.000+01:00","total":0.3216},
{"startsAt":"2023-11-07T09:00:00.000+01:00","total":0.2964},
{"startsAt":"2023-11-07T10:00:00.000+01:00","total":0.278},
{"startsAt":"2023-11-07T11:00:00.000+01:00","total":0.2656},
{"startsAt":"2023-11-07T12:00:00.000+01:00","total":0.2623},
{"startsAt":"2023-11-07T13:00:00.000+01:00","total":0.2653},
{"startsAt":"2023-11-07T14:00:00.000+01:00","total":0.2757},
{"startsAt":"2023-11-07T15:00:00.000+01:00","total":0.2883},
{"startsAt":"2023-11-07T16:00:00.000+01:00","total":0.294},
{"startsAt":"2023-11-07T17:00:00.000+01:00","total":0.3225},
{"startsAt":"2023-11-07T18:00:00.000+01:00","total":0.3374},
{"startsAt":"2023-11-07T19:00:00.000+01:00","total":0.3173},
{"startsAt":"2023-11-07T20:00:00.000+01:00","total":0.2843},
{"startsAt":"2023-11-07T21:00:00.000+01:00","total":0.2703},
{"startsAt":"2023-11-07T22:00:00.000+01:00","total":0.2652},
{"startsAt":"2023-11-07T23:00:00.000+01:00","total":0.2479}]
Für ein Beispiel wäre ich seeeehr dankbar!!

Schönen Tag und

VG
Gerhard
OH 4.1.0M2 auf nuc in Docker

dcridaz
Beiträge: 18
Registriert: 20. Jun 2022 16:16
Answers: 0

Re: Tibber - Preise von morgen in Diagramm

Beitrag von dcridaz »

Guten Abend Zusammen,
seit gestern bin ich auch am rätseln, wie man so ein JSON Objekt "zerlegen" kann.
Es geht bei mir auch um die Tibber-Preise (aktuell) und die zukünftigen (morgen).
Die Daten kommen auch als JSONArray an, allerdings fehlt mir die Ahnung, wie ich daraus einen Wert "auswerten" kann.
Die Werte die als String über die API kommen sehen für den heutigen Tag (07.12.2023) so aus:

Code: Alles auswählen

[{"startsAt":"2023-12-07T00:00:00.000+01:00","total":0.2745},
{"startsAt":"2023-12-07T01:00:00.000+01:00","total":0.2729},
{"startsAt":"2023-12-07T02:00:00.000+01:00","total":0.2717},
{"startsAt":"2023-12-07T03:00:00.000+01:00","total":0.2657},
{"startsAt":"2023-12-07T04:00:00.000+01:00","total":0.2635},
{"startsAt":"2023-12-07T05:00:00.000+01:00","total":0.269},
{"startsAt":"2023-12-07T06:00:00.000+01:00","total":0.2952},
{"startsAt":"2023-12-07T07:00:00.000+01:00","total":0.3126},
{"startsAt":"2023-12-07T08:00:00.000+01:00","total":0.335},
{"startsAt":"2023-12-07T09:00:00.000+01:00","total":0.3203},
{"startsAt":"2023-12-07T10:00:00.000+01:00","total":0.3163},
{"startsAt":"2023-12-07T11:00:00.000+01:00","total":0.3209},
{"startsAt":"2023-12-07T12:00:00.000+01:00","total":0.3207},
{"startsAt":"2023-12-07T13:00:00.000+01:00","total":0.3211},
{"startsAt":"2023-12-07T14:00:00.000+01:00","total":0.3208},
{"startsAt":"2023-12-07T15:00:00.000+01:00","total":0.3207},
{"startsAt":"2023-12-07T16:00:00.000+01:00","total":0.3158},
{"startsAt":"2023-12-07T17:00:00.000+01:00","total":0.3095},
{"startsAt":"2023-12-07T18:00:00.000+01:00","total":0.2997},
{"startsAt":"2023-12-07T19:00:00.000+01:00","total":0.2804},
{"startsAt":"2023-12-07T20:00:00.000+01:00","total":0.2759},
{"startsAt":"2023-12-07T21:00:00.000+01:00","total":0.2719},
{"startsAt":"2023-12-07T22:00:00.000+01:00","total":0.2712},
{"startsAt":"2023-12-07T23:00:00.000+01:00","total":0.2601}]

Für den morgigen Tag (08.12.2023) sieht der String so aus:

Code: Alles auswählen

[{"startsAt":"2023-12-08T00:00:00.000+01:00","total":0.2601},
{"startsAt":"2023-12-08T01:00:00.000+01:00","total":0.2555},
{"startsAt":"2023-12-08T02:00:00.000+01:00","total":0.2534},
{"startsAt":"2023-12-08T03:00:00.000+01:00","total":0.2511},
{"startsAt":"2023-12-08T04:00:00.000+01:00","total":0.2517},
{"startsAt":"2023-12-08T05:00:00.000+01:00","total":0.26},
{"startsAt":"2023-12-08T06:00:00.000+01:00","total":0.2751},
{"startsAt":"2023-12-08T07:00:00.000+01:00","total":0.2841},
{"startsAt":"2023-12-08T08:00:00.000+01:00","total":0.2905},
{"startsAt":"2023-12-08T09:00:00.000+01:00","total":0.2975},
{"startsAt":"2023-12-08T10:00:00.000+01:00","total":0.2978},
{"startsAt":"2023-12-08T11:00:00.000+01:00","total":0.2969},
{"startsAt":"2023-12-08T12:00:00.000+01:00","total":0.2953},
{"startsAt":"2023-12-08T13:00:00.000+01:00","total":0.2895},
{"startsAt":"2023-12-08T14:00:00.000+01:00","total":0.2911},
{"startsAt":"2023-12-08T15:00:00.000+01:00","total":0.2973},
{"startsAt":"2023-12-08T16:00:00.000+01:00","total":0.2933},
{"startsAt":"2023-12-08T17:00:00.000+01:00","total":0.2969},
{"startsAt":"2023-12-08T18:00:00.000+01:00","total":0.2976},
{"startsAt":"2023-12-08T19:00:00.000+01:00","total":0.2821},
{"startsAt":"2023-12-08T20:00:00.000+01:00","total":0.281},
{"startsAt":"2023-12-08T21:00:00.000+01:00","total":0.2768},
{"startsAt":"2023-12-08T22:00:00.000+01:00","total":0.2775},
{"startsAt":"2023-12-08T23:00:00.000+01:00","total":0.2643}]
Mein "gescheiteter-Versuch" mit dem Ausdruck $startsAt.+01total war erfolglos.

Kann jemand helfen?

Liebe Grüße

Tim
Openhab3 auf einem Raspberry-PI4, Wemos D1 mini über MQTT, AVM Fritz!, Wifi LED, Diverse Shelly Produkte, Gardena Smart Produkte, Reolink-IP Cams, Wansview-IP Cams, Foscam-IP Cams.

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Tibber - Preise von morgen in Diagramm

Beitrag von udo1toni »

Der Ausdruck insgesamt könnte etwas knifflig werden, wenn wir aber davon ausgehen, dass immer 24 Werte geliefert werden und diese in zeitlich aufsteigender Reihenfolge vorliegen, sollte z.B. für 12 Uhr das hier passen:

Code: Alles auswählen

JSONPATH:$[12].total
Es handelt sich hier um eine unbenannte Liste, wir nehmen über das [12] den 13. Wert (der Index beginnt mit 0)
Eine weitere Möglichkeit wäre, explizit die Uhrzeit zu suchen:

Code: Alles auswählen

JSONPATH:$[?(@.startsAt == "2023-12-07T12:00:00.000+01:00")].total
Das Blöde daran: der String muss schon exakt übereinstimmen. Meines Wissens kann die openHAB Implementation von JSONPATH nicht mit Regular Expressions arbeiten. Man müsste die entsprechenden Filter also über eine Rule dynamisch erzeugen, da erscheint der Weg über den Index einfacher, wenn auch nicht so sicher.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

dcridaz
Beiträge: 18
Registriert: 20. Jun 2022 16:16
Answers: 0

Re: Tibber - Preise von morgen in Diagramm

Beitrag von dcridaz »

Guten Morgen udo1toni,

ich melde mich erst jetzt, da ich mehrere (erfolglose) Versuche gestartet habe, die Werte einzelnd und stündlich anzeigen zu lassen.
Leider bisher ohne Erfolg.
Aber nur zum Verständnis: Den Ausdruck

Code: Alles auswählen

JSONPATH:$[12].total
gebe ich als "JSONPath Ausdruck" und "State Format" bei der Verlinkung
eines Items im Chanel an.?
Openhab3 auf einem Raspberry-PI4, Wemos D1 mini über MQTT, AVM Fritz!, Wifi LED, Diverse Shelly Produkte, Gardena Smart Produkte, Reolink-IP Cams, Wansview-IP Cams, Foscam-IP Cams.

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Tibber - Preise von morgen in Diagramm

Beitrag von udo1toni »

Nein.
Du hast ein http Thing. Innerhalb dieses Things legst Du einen string Channel an. Einer der konfigurierbaren Parameter dieses Channels ist die Status-Transformation. Dort trägst Du den Ausdruck ein.
Die JSONPATH Transformation ist ein Addon, welches wie jedes andere Addon auch installiert werden muss, zu finden unter Addons->Other->Transformation Add-ons (oder Du suchst nach jsonpath über die Suchfunktion in den Addons)
Sobald es mit dem string Channel wie gewünscht funktioniert, kannst Du auch aus dem String Channel einen Number Channel machen und den Wert direkt als Zahl verwenden. UoM bietet allerdings keine Währungseinheiten an (wäre auch etwas aufwändiger, wenn openHAB im Nanosekundentakt alle Umrechnungskurse aller Börsen weltweit abfragen müsste, um stets eine korrekte Anzeige zu haben...) - Du musst also die Zahl "nackt" weiterreichen und anschließend in der Anzeige passend aufbereiten. Im Pattern der State Description kannst Du natürlich ohne Probleme z.B. %.4f €/kWh schreiben.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Mohrpheus78
Beiträge: 2
Registriert: 11. Dez 2023 15:56
Answers: 0

Re: Tibber - Preise von morgen in Diagramm

Beitrag von Mohrpheus78 »

Hallo zusammen,

ich habe exakt die gleiche Anforderung wie dcridaz. Ich komme hier aber auch nicht so recht weiter. In dem Tibber Binding ist ein Channel, der nennt sich "Prices for tomorrow as a JSON array". Daran hängt ein String Item, welches die stündlichen Werte als JSON ausgibt (so wie oben bereits dargestellt). Was müssen wir jetzt tun, um die Werte einzeln, am besten als Item zu bekommen? Muss ein neues http Thing erstellt werden? Leider sind meine Kenntnisse im Bereich JSON Transformation nicht sonderlich gut, daher bitte ich um Verständnis wenn ich so detailliert fragen muss. Ich weiß deine Antworten hier sehr zu schätzen und hoffe, dass du uns auf die Sprünge helfen kannst. Das Transformation Add-On habe ich jedenfalls installiert und benutze es auch schon für andere Dinge.

Danke und Gruß
Dennis

Benutzeravatar
udo1toni
Beiträge: 13989
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Tibber - Preise von morgen in Diagramm

Beitrag von udo1toni »

Ah. Wenn der Channel schon fest definiert vorliegt, kann man ohne Probleme auch im Link JSONPATH als Profile verwenden. Ein Channel kann gleichzeitig mit beliebig vielen Items verlinkt sein, genauso kann der Link jedes Items unterschiedlich zu den restlichen Links konfiguriert sein - hier also 24 unterschiedliche Paths für das Profile in der Form $[n].total (n = 0...23)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

dcridaz
Beiträge: 18
Registriert: 20. Jun 2022 16:16
Answers: 0

Re: Tibber - Preise von morgen in Diagramm

Beitrag von dcridaz »

udo1toni hat geschrieben: 12. Dez 2023 13:22 Ah. Wenn der Channel schon fest definiert vorliegt, kann man ohne Probleme auch im Link JSONPATH als Profile verwenden. Ein Channel kann gleichzeitig mit beliebig vielen Items verlinkt sein, genauso kann der Link jedes Items unterschiedlich zu den restlichen Links konfiguriert sein - hier also 24 unterschiedliche Paths für das Profile in der Form $[n].total (n = 0...23)
Mit dieser Transformation hat es geklappt. Vielen lieben Dank dafür.


Gruß Tim
Openhab3 auf einem Raspberry-PI4, Wemos D1 mini über MQTT, AVM Fritz!, Wifi LED, Diverse Shelly Produkte, Gardena Smart Produkte, Reolink-IP Cams, Wansview-IP Cams, Foscam-IP Cams.

Antworten