Seite 1 von 1
OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 3. Jul 2021 20:27
von d003232
Als Anfänger habe ich es recht schnell geschafft OH3 auf meinem Raspi zu installieren und meine Stromzählerstände von Powerfox mit einem http-thing zu übernehmen. Nun kämpfe ich jedoch schon seit Stunden mit den "Nachkommastellen" herum. Von Powerfox wird z.B. der Zählerstand "12345,678" kWh übergeben. Dieser landet nun als "12345678" in OH3. Da ich es nicht so genau benötige, würde ich "einfach" gerne die "12345" nach OH3 übernehmen und den Rest wegfallen lassen.
Wäre es nicht sinnvoll/möglich das irgendwie beim Thing anzupassen?
Ich könnte wohl ein neues Item anlegen und dann mit einer Rule die Umrechnung vom "Input-Item" auf das "Speicher-Item" vornehmen? Aber ist das nicht etwas umständlich? Werden dann nicht beide Werte dauerhaft in der Datenbank, d.h. doppelt gespeichert?
Ich würde mich freuen, wenn mich jemand auf die richtige Verständnisspur heben kann.
LG
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 3. Jul 2021 20:43
von udo1toni
Wie genau wird der Wert über http angeliefert (wie sieht die exakte Ausgabe aus)?
Es ist auf jeden Fall möglich, mittels Transformation Service umzuwandeln. welche Transformation die passende ist, ist dabei vom gelieferten Wert abhängig.
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 4. Jul 2021 16:53
von d003232
Der Code des Channels sieht aus wie folgt:
Code: Alles auswählen
channels:
- id: currentValue
channelTypeUID: http:number
label: Aktueller Leistungswert
description: ""
configuration:
stateTransformation: JSONPATH:$.Watt
- id: ZaehlerGesamt
channelTypeUID: http:number
label: Zählerstand Gesamt
description: ""
configuration:
stateTransformation: JSONPATH:$.A_Plus
- id: ZaehlerHT
channelTypeUID: http:number
label: Zählerstand NT
description: ""
configuration:
stateTransformation: JSONPATH:$.A_Plus_HT
- id: ZaehlerNT
channelTypeUID: http:number
label: Zählerstand HT
description: ""
configuration:
stateTransformation: JSONPATH:$.A_Plus_NT
Bei einem aktuellen Zählerstand von 12345,678 kWh bekomme ich in OH3 dann "12345678" geliefert und entsprechend in der Analyse/Grafik auch angezeigt.
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 4. Jul 2021 20:14
von udo1toni
Das heißt, in der Zahl ist kein Komma oder Dezimalpunkt enthalten? Nun ja...
Das Einfachste ist dann, eine weitere Transformation im Übergang Channel - Item vorzunehmen. Die Transformation kannst direkt in der UI mit konfigurieren (show advanced muss, denke ich, angehakt sein)
Du benötigst dann ein kleines JavaScript, welches den gelieferten Wert durch 1000 teilt. Da das für alle Channel identisch ist, brauchst Du das Script nur einmal und verlinkst es einfach in jedem Übergang.
Das Script speicherst Du im Ordner /etc/openhab/transform/ unter dem Namen divide1000.js ab:
Und im jeweiligen Übergang wählst Du als Transformation JS aus, mit dem Namen des Scripts als Parameter. Anschließend sollten die Zahlen korrekt im Item landen. Natürlich sind die bis dahin persitierten Werte um den Faktor 1000 verkehrt. Irgendwas ist ja immer...
Die JS Transformation muss natürlich installiert sein

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 5. Jul 2021 18:15
von d003232
Vielen vielen Dank. Es hat auf Anhieb funktioniert! Zum Mitschreiben für andere hier nochmal, was ich machen musste.
1. unter Einstellungen -> Add Ons - Transformations -> Javascript Transformation (installieren)
2. Das Script 'divide1000.js' im Ordner /etc/openhab/transform/ angelegt, mit dem Code:
3. Im jeweiligen Item für die Zählerstände als Profile "JS" auswählen (über Menüpunkt Item oder über Thing), dann in der Profile Configuration im Feld 'JavaScript Filename' das im Schritt 2. angelegte Script eintragen: divide1000.js
Perfekt. Nun wird aus dem übertragenen Zählerwert '12345678' ohne Komma der richtige Zählerstand '12345.678'.
Wichtig für mein Verständnis war, dass man für die Transformation von Input Werten die Profile benutzt. Mir war nicht klar, dass man über die Installation von Addons weitere Möglichkeiten hat, Profile zu erstellen. Ich schätze mal eine TRansformation mit REGEX wäre auch gegangen, um z.B. die letzen 3 Nummern '678' abzuschneiden.
Nochmal danke für den richtigen Weg.
JA, die alten Werte sind natürlich falsch. Ich müsste wohl das Item nochmal neu aufsetzen? Oder in irgend einer Datenbank die alten Werte verändern. Ist halt eine optische Unschönheit, wenn ich die Charts mit alten Werten ansehe.
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 5. Jul 2021 20:14
von udo1toni
d003232 hat geschrieben: ↑5. Jul 2021 18:15
JA, die alten Werte sind natürlich falsch. Ich müsste wohl das Item nochmal neu aufsetzen? Oder in irgend einer Datenbank die alten Werte verändern. Ist halt eine optische Unschönheit, wenn ich die Charts mit alten Werten ansehe.
Ich fürchte, es wird nicht so einfach werden, die Daten zu editieren. Wenn nichts anderes konfiguriert ist, nutzt openHAB rrd4j als Datenhalde, weil dies einen fixen Datenverbrauch hat (die ältesten Daten werden mit den neuen Daten überschrieben).
rrd4j gestattet in der üblichen Konfiguration einen Rückblick bis zu einem Jahr, wobei die Daten ungenauer werden, je älter sie sind (Daten werden zusammengefasst und der Mittelwert eines längeren Zeitraums gespeichert).
Du kannst mit der fehlerhaften Darstellung leben (irgendwann rutscht es ja aus dem Sichtfeld, solange man keine übermäßig langen Zeiträume betrachtet), die alten Daten löschen (natürlich mitsamt aller bisher korrekt erfassten Daten) oder Du nimmst ein Werkzeug wie rrdtool oder rrd editor zum Editieren der Daten - aber das ist nicht trivial und vermutlich auch nicht eben bequem - es gibt mit ziemlicher Sicherheit keine einfache Änderungsabfrage wie in SQL möglich.
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 6. Jul 2021 12:50
von d003232
Ich habe die Items mit neuem Namen angelegt. Auf die zwei Wochen alte Zählerstände kommt es auch nicht an und das ist in 2 Minuten erledigt ... statt mich näher mit RRD4J zu beschäftigen.
Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti
Verfasst: 7. Jul 2021 10:13
von udo1toni

Du hättest wie erwähnt auch einfach die Daten der Items löschen können… Aber mit neu Anlegen hast Du auf jeden Fall geordnete Verhältnisse.
Gesendet von iPad mit Tapatalk