Irgendwie passt Dein Ansatz nicht zu der ursprünglichen Aufgabenstellung, deshalb mal mein Senf dazu:
1. Taster: Du hast ja schon rausgefunden, wie Du einen Button in die Sitemap bekommst. Eine "Rücksetz-Rule" ist aber komplett unnötig, wenn Du dem Item noch einen Parameter verpasst:
Code: Alles auswählen
Switch Aqua_Day "Tagbeleuchtung" <sun> ["Lighting" ] {mqtt=">[OH2mqtt:cmnd/BridgeOne/Backlog:command:*:RfSync 7330; RfLow 230; RfHigh 710; RfCode #BC6B70]", autoupdate="false" }
Das bewirkt, dass der Status des Items nicht gesetzt wird. Die Schaltfläche wird auch dann nutzbar sein, wenn sie fälschlich als aktiv gerendert wird.
2. Anzeige der Schaltstellung: Es gibt da ein kleines Problem, da Du keine Rückmeldung über den Schaltzustand hast, kannst Du auch nicht sicher sein, welchen Zustand das Licht hat. Wenn Du damit leben kannst, dass die Anzeige durchaus mal aus dem Tritt kommt, kannst Du Dir mit einer Rule und einem Number Item behelfen:
item:
Code: Alles auswählen
Number Zustand "Licht ist [MAP(stufen.map):%d]" // Item dient nur der Anzeige
transform/stufen.map:
rule:
Code: Alles auswählen
rule "Zustand weiter schalten"
when
Item Aqua_Day received command
then
if(!(Zustand.state instanceof Number)) { // Item noch nicht initialisiert?
Zustand.postUpdate(0) // dann mit 0 initialisieren
Thread::sleep(200) // openHAB etwas Zeit geben
}
var Number Zahl = Zustand.state as Number + 1 // aktuellen Stand hochzählen
if(Zahl > 3) Zahl = 0 // Bei Überlauf auf 0 setzen
Zustand.postUpdate(Zahl) // neuen Stand schreiben
end
Sitemap:
Im Zweifel sollte das Licht ausgeschaltet sein, wenn openHAB gestartet wird, damit der Zustand korrekt ist, sobald das Licht zum ersten mal geschaltet wird. Wenn die Anzeige aus dem Tritt gerät, kannst Du sie mit einem Update des Items auf den korrekten Wert wieder synchron machen. Das geht z.B. einfach über die Karaf Konsole mittels
smarthome update Zustand 2 (2 für mittlere Dimmstufe)
Die bessere Variante wäre aber zweifellos, eine gescheite Rückmeldung einzubauen, falls der Schalter das erlaubt. Wenn das nicht der Fall ist, hat er in einer Smarthome-Umgebung eigentlich nichts zu suchen
was dads Nicht-Schalten betrifft, tippe ich darauf, dass Du das Backlog noch ausführen musst. (Ich hab das bisher nicht eingesetzt, aber mir ist so...)