Es gibt keinen Datentyp number
Außerdem solltest Du das Casting in Klammern schreiben.
openHAB arbeitet intern immer mit der englischen Notation von Zahlen, also ein Punkt statt eines Kommas als Trennungder Einer von den Zehnteln.
Und zu guter Letzt wäre es besser, auf Typenkonsistenz zu achten, so:
Code: Alles auswählen
rule "Einsparung Eigennutzung"
when
Item Sungrow_WR_PV_Stromerzeugung_heute_Value_as_Number changed
then
if(!(newState instanceof Number)) { // newState = Sungrow_WR_PV_Stromerzeugung_heute_Value_as_Number.state
logWarn("calcSavings","Da ist was schiefgelaufen. Item liefert ungültigen Wert! ({})",newState)
return;
}
EinsparungEigennutzung.postUpdate((newState as Number) * 0.3845) // Achtung, Dezimaltrenner ist der Punkt!
end
Die Abfrage beendet die Rule, falls das Item einen ungültigen Wert liefert.
received update wird in 99 % der Fälle nicht gebraucht, stattdessen sollte man lieber changed als Trigger nutzen (reduziert im Zweifel die Systemlast).
Wenn eine Rule mit changed getriggert wird, steht außerdem die implizite Variable newState zur Verfügung - genau wie previousState (bitte nicht verwechseln mit der Persistence Funktion .previousState - der Punkt davor...), wobei wir den Vorwert hier nicht brauchen, aber ich kann es nicht lassen, abzuschweifen...
Wie erwähnt gibt es kein number, wohl aber Number. openHAB ist hochgradig case sensitive

immer sklavisch drauf achten, dass jedes einzelne Zeichen korrekt ist...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet