OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
d003232
Beiträge: 5
Registriert: 3. Jul 2021 20:14
Answers: 0

OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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

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

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

d003232
Beiträge: 5
Registriert: 3. Jul 2021 20:14
Answers: 0

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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.

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

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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:

Code: Alles auswählen

(function(i) {
    return parseFloat(i) / 1000;
})(input)
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 ;)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

d003232
Beiträge: 5
Registriert: 3. Jul 2021 20:14
Answers: 0

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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:

Code: Alles auswählen

(function(i) {
    return parseFloat(i) / 1000;
})(input)
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.

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

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

d003232
Beiträge: 5
Registriert: 3. Jul 2021 20:14
Answers: 0

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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.

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

Re: OH3 Zählerstand Strom in vollen kWh abspeichern / Übernahme von Powerfox poweropti

Beitrag 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
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten