Persistence Item Wert in der Vergangenheit setzen

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

Persistence Item Wert in der Vergangenheit setzen

Beitrag von laoli »

Halo zusammen,

habe jetzt einen ESP32 im Einsatz der mir meinen Wasserzähler mit Bilderkennung ausliest.
Funktioniert auch super, gerade wenn man bedenkt dass es auf diesem MC läuft.
Stunden, Tages, Wochen und Jahreswerte habe ich mir auch errechnet und die Werte sind schon interessanter als ich dachte.

Um einer Chart zu erstellen, habe ich mir zwei Items angelegt (Wasser_chart_stunde, Wasser_chart_tag).
Da update ich immer kurz vor Ende der aktuellen Stunde, bzw. des aktuellen Tages, die Werte rein.
Das funktioniert an sich auch super, nur dass der Chart halt entsprechend um eine Stunde verschoben ist...

Gibts da eine Möglichkeit, dass Item zu einer bestimmten Zeit (in der Vergangenheit, also zum Anfang der aktuellen bzw. letzten Stunde) zu aktualisieren (per JS, bzw. ECMA)?
Nutze momentan nur die Standardvariante über RRD4j, was mir vorher vollkommen unbekannt war.
Nativ per Zugriff auf bspw. MySQL wäre das für mich klar, aber weiß nicht wie OH da wieder mit umgeht.
Will auch nicht zu viel vermischen und anderseits den Weg über das Item gehen, damit wäre das ja auch allgemeiner und ein DB/Persistenz-Service Wechsel wäre auch egal (da es ja über das Item läuft).

Ist es überhaupt möglich, oder muss ich mir das selber entsprechend loggen (in welcher DB auch immer, wobei dann wieder die Frage ist wie ich es in ein OH Chart bekomme. Anderseits will ich nicht mehrere Datenbanken haben. Mit einem einmaligen Wechsel zu einer bekannten DB Form hätte ich aber kein Problem).

Die ganzen Verbiegungen nerven mich etwas, seit ich mit OH angefangen habe, nativ wäre das in vielen Sachen leichter (auch wenn OH einem andere Sachen natürlich sehr erleichtert).
Irgendwie muss es aber mit den OH Mitteln zu machen sein (hoffe ich jedenfalls).

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

Re: Persistence Item Wert in der Vergangenheit setzen

Beitrag von udo1toni »

Ich weiß ehrlich gesagt nicht, was Du damit meinst. Du kannst Dir jederzeit z.B. die Differenz zum Wert der letzten Stunde ausgeben lassen, um daraus den Verbrauch der letzten Stunde zu bestimmen, aber das ist ja dann auch der Verbrauch in der Vergangenheit, was willst Du da in der Vergangenheit an den Daten noch verändern?

Tatsächlich ist es so, dass openHAB Mittler der Welten ist, es soll möglichst viele proprietäre (oder auch offene, aber zueinander inkompatible) Standards miteinander verbinden, so dass man beliebige Produkte im Haus miteinander verbinden kann. Die Persistence ist dabei ein nicht unwichtiger Aspekt, aber nicht so sehr, um tiefgehende Analysen durchzuführen, da gibt es andere spezialisierte Produkte.
Selbst die Darstellung der Verläufe ist nur ein Abfallprodukt, Grafana z.B. löst das wesentlich flexibler. Da openHAB InfluxDB für die Persistence unterstützt, und Grafana wiederum InfluxDB hervorragend nutzen kann, ist Grafana auch erste Wahl bei der Visualisierung der Daten (tatsächlich wurde die Unterstützung für InfluxDB exakt wegen Grafana eingebaut, welches damals nur InfluxDB unterstützte).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

laoli
Beiträge: 15
Registriert: 7. Feb 2022 19:58
Answers: 0

Re: Persistence Item Wert in der Vergangenheit setzen

Beitrag von laoli »

Das mit Grafana zu machen, wäre natürlich auch eine Option (nutze das auf der Arbeit, ist halt grafisch schon sehr schön aufbereitet).
Wenn sich die Grafana Graphen gut in OH Seiten einbinden lassen (inklusive Steuerung, bzw. Zeitwahl etc.), fände ich das auch die bessere Lösung als diese Verbiegung.

Grundproblem ist dass ich die Werte, wie im angehangenen Screenshot, bei jeder Aktualisierung durch die ESP Cam ausrechne (aktuell alle 3 Minuten).
Am Ende einer Stunde und am Ende eines Tages läuft jeweils ein Cronjob (in OH), der dass dann in ein separates Item loggt.
Aus dem Tages_chart und Stunden_chart Item mache ich dann einfach ein Chart.

Wenn man sich den Chart ansieht (auch angehangen), hat man dann natürlich eine Stunde Versatz, da ich den Wert erst bspw. um 23:59 aktualisieren.

Dann zeigt der Graph von 23:59-00:59 (bis zur nächsten Aktualisierung) den Wert an, der eigentlich zwischen 22:59-23:59 verbraucht wurde.

Eine Aktualisierung des Items in der Vergangenheit schien mir da die leichteste Lösung, aber ich werde mich mal mit Grafana im Zusammenhang mit OH beschäftigten

OH3 scheint mir aber eher dieses (mir leider unbekannte, stört mich etwas...) RRD4j per default zu nutzen.
Glaube eine Influx DB habe ich gerade gar nicht, aber muss mir das mal genauer ansehen (Zeitlich momentan leider immer schwer...)
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

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

Re: Persistence Item Wert in der Vergangenheit setzen

Beitrag von udo1toni »

rrd4j -> RoundRobinDatabase for Java. Großer Vorteil von rrd4j ist, dass die Dateigröße fix ist, da die ältesten Werte jeweils mit den neuesten überschrieben werden (in mehreren Stufen, die zeitliche Auflösung ändert sich über das Alter der Daten). Deshalb ist die Wahl als default Persistence naheliegend.
Du erstellst stündlich einen Wert und speicherst ihn. In der Datenbank ist der Zeitpunkt des Speicherns ausschlaggebend, nicht, wie alt die Daten sind, aus denen Du den neuen wert errechnet hast. Man kann in openHAB grundsätzlich keine Zeitstempel zum Speichern angeben, es wird immer der aktuelle Zeitpunkt verwendet. Wie gesagt ist die Persistence für openHAB nur ein Nebenschauplatz, und vor dem Hintergrund, wann die Daten erfasst werden, ist die Anzeige vollkommen korrekt. :)

InfluxDB ist im Gegensatz zu rrd4j extern. Das heißt, Du musst InfluxDB installieren (Grafana natürlich auch...).
Grafana kann auf verschiedene Arten in openHAB eingebunden werden, eine sehr gute Anleitung findest Du hier: https://community.openhab.org/t/influxd ... hing/13761, wobei sich die Anleitung auf openHAB2 bezieht und wir inzwischen auch ganz andere Versionen von InfluxDB und Grafana, abear ein paar Details dürften nach wie vor stimmen :D
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten