Da nun an der Tastatur und nicht per Handy, etwas ausführlicher
Du hast das Item so definiert, dass
autoupdate="false" gesetzt ist. Das Item ist ansonsten mit keinem Binding gekoppelt.
Wenn Du in der Sitemap ein Item betätigst, wird
immer ein Kommando gesendet. Gewöhnlich löst dieses Kommando auch eine Änderung des Status aus, da Du das aber explizit abgeschaltet hast, unterbleibt das Update des Status.
Du reagierst in der Rule auf ein Kommando. Nun sollte Dich nicht der
Status eines Items (zufälligerweise das selbe, wie das, von dem das Kommando kommt) interessieren, sondern das
Kommando. Dieses steht mit der impliziten Variablen
receivedCommand zur Verfügung.
Deine Rule sähe also besser so aus:
Code: Alles auswählen
rule "Rollo X"
when
Item Rollo_X_Zustand received command
then
logInfo("test", "Empfangenes Kommando für Rollo_X_Zustand: {}",receivedCommand)
end
Jetzt komme ich aber gleich mit einer wichtigen Frage: Das X deutet für mich an, dass es um mehrere Rollos geht. Wenn das so ist, solltest Du von Anfang an darauf achten, die Rule allgemein zu fassen.
Du möchtest nicht zehn Rules anlegen, die bis auf das triggernde Item und das beeinflusste Item identisch sind. Stattdessen sollte die Rule auf alle betroffenen Items triggern und anschließend selbst bestimmen, auf welches Item sie einwirken soll.
Um so eine Rule zu entwickeln, muss aber schon konkret bekannt sein, was die Rule machen soll. Bezogen auf das Beispiel oben: Packe alle Items Rollo_X_Zustand in eine Gruppe gRollo_Zustand. Anschließend sieht die Rule so aus:
Code: Alles auswählen
rule "Rollo X"
when
Member of gRollo_Zustand received command
then
logInfo("test", "Empfangenes Kommando für {}: {}",triggeringItem.name,receivedCommand)
end
Es hat sich also (fast) nichts geändert. Lediglich der Trigger ist nun ein anderer und im logInfo wird eine zweite implizite Variable verwendet,
triggeringItem ist das Item, welches die Rule ausgelöst hat, es handelt sich um einen Zeiger auf das Original Item, somit verhält sich triggeringItem exakt wie das Original.