JavaScript: Hast Du die Rules mittels Blockly erstellt? Dann bitte einmal die Rule in der UI öffnen und neu speichern.
Ansonsten auf die Schnelle:
1. statt itemRegistry schreibst Du items (also statt alt
itemRegistry.getItem("P_PV_Haus") jetzt
items.getItem("P_PV_Haus"))
2. Ein Status ist ein Status ist ein Status.
Das war schon immer so

aber bisher hat openHAB sich oftmals extrem gnädig gezeigt und stillschweigend wo möglich entsprechende Typwandlungen vorgenommen.
Jetzt solltest Du (bei Number Items) statt
.getState() besser
.numericState verwenden (und wenn es um den Status als solchen geht, statt
.getState() nun
.state)
3. postUpdate und sendCommand nicht mehr als Action nutzen:
Was die Persistence betrifft, scheint das eine Zeile aus einer DSL Rule zu sein...
Vermutlich fehlen da noch Informationen, um das zu klären... Welcher Itemtyp ist gPower? Welche Persistence wird verwendet?
Eventuell bezieht sich die Fehlermeldung auch gar nicht auf die Persistence, sondern auf den vorherigen Vergleich, denn, siehe oben (2.). Mutmaßlich müsstest Du hier eher
Code: Alles auswählen
if((PV_Battery_SOC.state as QuantityType<Dimensionless>) > 65|% && gPower.averageSince(now.minusMinutes(5)).intValue > 1500)
schreiben, ist aber nur geraten.
Falls
gPower ein QuantityType Item ist (z.B.
Group:Number:Power) wird auch hier (vor .intValue) die Einheit mit übergeben,
.intValue sollte diese ganz normal strippen, so dass der Vergleich dann klappt, andererseits braucht es das .intValue ja gar nicht, wenn man die Einheit wie im ersten Teil des Vergleichs mit angibt:
Code: Alles auswählen
if((PV_Battery_SOC.state as QuantityType<Dimensionless>) > 65|% && gPower.averageSince(now.minusMinutes(5)) > 1.5|kW)