Re: item Wert persistieren und automatisch laden beim Openhab3 Start
Verfasst: 17. Jun 2023 17:23
Weil die Rule exakt die gleichen Fehler enthält wie schon die andere.
as Number ist nachrangig gegenüber dem +, Du musst den Wert klammern.
Also statt
müsste es
heißen.
Das Fronius Binding liefert UoM an, also solltest Du bei Berechnungen die Einheit entfernen, z.B. mit .floatValue, also
Da gehört kein Semikolon hin, niemals. Also
Was macht Dich so sicher, dass beim Aufruf der Rule gültige Zahlenwerte vorliegen? Also vorher prüfen:
Warum triggerst Du auf received update? Das ist unnötig! Einen Wert berechnet man lediglich dann neu, wenn sich Eingangswerte geändert haben
Also statt:
lieber
Zu guter Letzt (nur eine optische Sache) handelt es sich bei dem Namen der Rule um einen freien String, er muss lediglich eindeutig sein.
Also statt
lieber
as Number ist nachrangig gegenüber dem +, Du musst den Wert klammern.
Also statt
Code: Alles auswählen
PV_Current_all.postUpdate(PV_Current.state as Number + PV_Current_gen24.state as Number);
Code: Alles auswählen
PV_Current_all.postUpdate((PV_Current.state as Number) + (PV_Current_gen24.state as Number));
Das Fronius Binding liefert UoM an, also solltest Du bei Berechnungen die Einheit entfernen, z.B. mit .floatValue, also
Code: Alles auswählen
PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue);
Code: Alles auswählen
PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue)
Code: Alles auswählen
if(!(PV_Current.state instanceof Number) || !(PV_Current_gen24.state instanceof Number))
return; // dies ist die einzige Stelle, wo in der openHAB Rules DSL ein Semikolon gebraucht wird!
PV_Current_all.postUpdate((PV_Current.state as Number).floatValue + (PV_Current_gen24.state as Number).floatValue)
Also statt:
Code: Alles auswählen
Item PV_Current received update
Code: Alles auswählen
Item PV_Current changed
Also statt
Code: Alles auswählen
rule "current_all"
Code: Alles auswählen
rule "current all"