An welcher Stelle schaust Du? Welche Version von openHAB läuft?
Grundsätzlich ist die Rule prima, allerdings etwas umständlich
Code: Alles auswählen
rule "Gesamtwert + Last"
when
Item GESWatt changed
then
val Number nLast = if(Lastwert.state instanceof Number) (Lastwert.state as Number) else 0
var Number nErg = if( GESWatt.state instanceof Number) ( GESWatt.state as Number) else 0
if(Last1.state == ON)
nErg = nErg + nLast
GesLastwert.postUpdate(test)
end
Natürlich vorausgesetzt, Du willst nicht zusätzlich noch andere Dinge mit den Werten anstellen

Der Punkt ist aber, dass
nErg der Anteil ist, der ohnehin eingetragen werden soll. Also kann man den Wert auch ebenso gut direkt in der Variablen speichern.
Der Anteil
nLast muss nur hinzugezählt werden, falls der Schalter auf
ON steht.
Beachte auch, dass
nLast als
val definiert ist, während
nErg als
var definiert ist.
val ist eine Konstante,
var ist eine Variable. Da
nLast nach der Definition nicht mehr verändert wird, reicht es, eine Konstante zu erzeugen (das spart Rechenzeit).
sendCommand() sendet einen Befehl. Du möchtest aber den Status des Items beeinflussen, das geschieht mit
postUpdate().
openHAB versucht allerdings, den wahrscheinlichen Status eines Items anhand des gesendeten Befehls zu "erraten", was letztlich bedeutet, dass ein
sendCommand() als Normalverhalten ein
postUpdate() mit passendem Wert nach sich zieht. Bei Number Items ist das gewöhnlich exakt der gleiche Wert, z.B. ein Dimmer Item kennt aber die Befehle
ON und
OFF, welche jedoch nicht zum Status
ON oder
OFF führen, sondern zum Status
100 bzw.
0. Wenn Du versuchst, per
postUpdate(ON) in einen Dimmer zu schreiben, sollte es eine Fehlermeldung geben (kann aber sein, dass sie abgefangen wird...), weil der Dimmer diesen Status nicht annehmen kann. Bei vielen modernen Dimmern kann man auch ein Einschaltlevel < 100 definieren, so dass ein
sendCommand(ON) nicht zum Status
100 führt. Mindestens in diesen Fällen ist es dann besser, die Funktion
autoupdate zu deaktivieren, da man sonst ständig falsche Statusmeldungen bekommt - und wenn es doof läuft, hat der Dimmer schon vorher seinen neuen Status gesendet, so dass openHAB anschließend den richtigen mit dem falschen Wert überschreibt.
Die Formatierung ist nur meine Macke
Gewöhnlich sollte ein
postUpdate() unmittelbar eine Änderung der Anzeige zur Folge haben, aber es gibt verschiedene Situationen, in denen das nicht der Fall ist, z.B. wenn etwas an der Sitemap geändert wurde, muss openHAB neu gestartet werden, damit der Refresh der Sitemap wieder funktioniert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet