ich habe mir ein Skript gebaut, welches den Verbrauch der Waschmaschine messen soll. Dazu speicher ich mir zu Beginn den Gesamtverbrauch in einer Variablen zwischen und substrahiere es nach Beendigung mit dem neuen Gesamtverbrauch. Das klappt leider nicht, da dann immer null in der Variablen steht.. Wenn ich die Werte aber bei jeder Leistungsänderung logge, funktioniert es plötzlich und die Variable merkt sich den Wert

Hier meine Regel:
Code: Alles auswählen
// Temporäre Variablen für Durchlauf
var Number var_Durchlauf_Verbrauch_Start_kwh
var Number var_Durchlauf_Verbrauch_kwh
var Number var_Durchlauf_Kosten_eur
rule "Durchlauf Aktionen Waschmaschine"
when
Item Waschmaschine_Status changed
then
if (Waschmaschine_Status.state == MODE_ACTIVE) {
// Merke Start-Verbrauchsstand
var_Durchlauf_Verbrauch_Start_kwh = Waschmaschine_Gesamtverbrauch_kwh.state as DecimalType
logInfo("WASCHMASCHINE_KOSTEN_LOG", "BERECHNUNG GESTARTET - Startverbrauch: " + var_Durchlauf_Verbrauch_Start_kwh + " kWh - Gesamt: " + Waschmaschine_Gesamtverbrauch_kwh.state + " kWh")
sendTelegram("mich", "Die Waschmaschine wurde gestartet.")
} else if (Waschmaschine_Status.state == MODE_STANDBY) {
sendTelegram("mich", "Die Waschmaschine wurde angeschaltet.")
} else if (Waschmaschine_Status.state == MODE_OFF) {
// Berechne Verbrauch des Durchlaufs mittels Startwert und aktuellem Gesamtwert
var_Durchlauf_Verbrauch_kwh = Waschmaschine_Gesamtverbrauch_kwh.state as DecimalType - var_Durchlauf_Verbrauch_Start_kwh
// Berechne Durchlaufskosten
var_Durchlauf_Kosten_eur = var_Durchlauf_Verbrauch_kwh * ESSL_KWH
logInfo("WASCHMASCHINE_KOSTEN_LOG", "BERECHNUNG BEENDET - Startverbrauch: " + var_Durchlauf_Verbrauch_Start_kwh + " kWh - Gesamt: " + Waschmaschine_Gesamtverbrauch_kwh.state + " kWh")
sendTelegram("mich", "Die Waschmaschine wurde ausgeschaltet. Der Durchlauf hat " +
var_Durchlauf_Verbrauch_kwh + " kWh verbraucht und " +
String::format("%.2f", var_Durchlauf_Kosten_eur.floatValue()) + " € gekostet.")
}
end
Code: Alles auswählen
logInfo("WASCHMASCHINE_KOSTEN_LOG", "Startverbrauch: " + var_Durchlauf_Verbrauch_Start_kwh + " kWh; Aktuell: " + Waschmaschine_Gesamtverbrauch_kwh.state + " kWh")
Code: Alles auswählen
2018-11-18 16:32:59.876 [INFO ] [odel.script.WASCHMASCHINE_KOSTEN_LOG] - BERECHNUNG GESTARTET - Startverbrauch: 3.97 kWh - Gesamt: 3.97 kWh
[... einige Minuten später, ich habe die entsprechende Zeile in den Code kopiert...]
2018-11-18 16:36:19.898 [INFO ] [odel.script.WASCHMASCHINE_KOSTEN_LOG] - Startverbrauch: null kWh; Aktuell: 3.97 kWh
Vielen Dank schon mal für eure Hilfe!
Grüße, Raptor