Mathe-Funktion in Blockly

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mccoy
Beiträge: 2
Registriert: 25. Mai 2024 18:40
Answers: 0

Mathe-Funktion in Blockly

Beitrag von mccoy »

Liebe Gemeinde,

ich monitore mit Openhab 4.1.2 meine PV Anlage und allgemein meinen Stromverbrauch.
Hierzu gibt es ein Shelly Plug S mit dem Channel "Gesamtverbrauch" in kWh, gespeichert wird in eine Influx Datenbank. Um den Verbrauch der letzten 24 Stunden zu ermitteln, habe ich ein Blockly Script geschrieben:

Code: Alles auswählen

var a, b, c;
var thread = Java.type('java.lang.Thread')

a = items.getItem('PVShelly01_Gesamtverbrauch').history.historicState(time.ZonedDateTime.now().minusDays(1))?.state;
b = items.getItem('PVShelly01_Gesamtverbrauch').state;
c = items.getItem('PVShelly01_Gesamtverbrauch').state;
console.info(a);
console.info(b);
console.info(c);
c = b - a;
thread.sleep(1000);
console.info('c:');
console.info(c);
"b" und "c" weise ich den gleichen Wert zu in der Hoffnung "c" so zu initialisieren.

Das führt zu folgendem Ergebnis:
2024-05-25 18:57:26.308 [INFO ] [hab.automation.script.ui.Verbrauch24] - 20.34 kWh
2024-05-25 18:57:26.311 [INFO ] [hab.automation.script.ui.Verbrauch24] - 24.324 kWh
2024-05-25 18:57:26.312 [INFO ] [hab.automation.script.ui.Verbrauch24] - 24.324 kWh
2024-05-25 18:57:27.315 [INFO ] [hab.automation.script.ui.Verbrauch24] - c:
2024-05-25 18:57:27.317 [INFO ] [hab.automation.script.ui.Verbrauch24] - NaN
Mein Verdacht ist, dass ich ein Problem mit den Einheiten kWh habe..
So richtig habe ich aber keine Ahnung wo ich suchen soll bzw. wo mein Fehler liegt!

Viele Grüße
Rolf

Harka
Beiträge: 334
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Mathe-Funktion in Blockly

Beitrag von Harka »

Moin,
ja, mit deiner Vermutung liegst Du schon recht nah. Das Stichwort ist UoM #Units of Measurements
Mit solchen (String-)Werten kann Javascript nicht vernünftig rechnen. Du brauchst die oben verlinkten UoM-Funktionen. Alternativ ginge auch noch die Verwendung der reinen Zahlenwerte mit get_numeric_state_of_item und/oder dem Number-Block aus dem Math-Verzeichnis

mccoy
Beiträge: 2
Registriert: 25. Mai 2024 18:40
Answers: 0

Re: Mathe-Funktion in Blockly

Beitrag von mccoy »

Code: Alles auswählen

c = (Quantity(b).subtract(Quantity(a)));
Das hat das Problem gelöst!

Vielen Dank und allen ein schönes Wochenende!

Antworten