Bei mqtt gibt es die Retention um den Zustand auf mqtt-Ebene zu sichern.
Wenn Retention auf true gesetzt ist (das muss der Sender tun, also z.B. ein Sonoff Relais), wird der Broker den Zustand speichern.
Der Witz dabei ist, dass die Retention auch einen Neustart des Brokers überlebt.
openHAB erfährt beim Abbonieren der Topics automatisch den aktuellen Status.
Der "Alles An" Knopf geht aber natürlich auch, allerdings sollte man den Einschaltstrom im Auge behalten (je nach Größe des Objekts kommt ja schon einiges zusammen).
Man kann auch einfach nur alle Lampen ausschalten. Es gibt bei dynamischen Icons nicht nur jeweils eines für ON und OFF, sondern auch ein "default" Icon, welches angezeigt wird, wenn kein gültiger Status anliegt (also z.B. NULL) Es sollte also ausreichen, einfach alle Items auf off zu setzen (mit postUpdate).
Weiterhin könntest Du auch einfach mapdb verwenden, um den letzten bekannten Zustand wiederherzustellen. Wohlgemerkt geht es dabei ausschließlich um die Anzeige in openHAB, es werden keine Befehle nach mqtt gesendet.
Als Panikschaltung könnte man das Licht in Stufen einschalten, also z.B. so:
Code: Alles auswählen
// globale Variablen werden immer zu Beginn der Rules-Datei definiert!
var Timer tPanik = null
rule "Panik"
when
Item Paniktaster received command ON
then
tPanik?.cancel
tPanik = createTimer(now.plusMillis(100),[|
if(gPanikLicht.members.filter[l | l.state != ON].size > 0) {
gPanikLicht.members.filter[l | l.state != ON].head.sendCommand(ON)
tPanik.reschedule(now.plusMillis(750))
} else
tPanik = null
])
end
Der Code wird getriggert, sobald das Item Paniktaster ein ON empfängt. Anschließend wird ein Timer gestartet, der alle nicht eingeschalteten Lichter nacheinander einschaltet, mit jeweils 750 Millisekunden Abstand. Die einzuschaltenden Lichter müssen zur Gruppe gPanikLcht gehören.
Solange noch nicht alle Lichter eingeschaltet sind, wird auch das Auschalten eines Lichts nicht funktionieren, da es fast unmittelbar wieder eingeschaltet wird.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet