Die beiden Testrules lassen sich bequem als eine Rule definieren:
Code: Alles auswählen
rule "Test1"
when
Item eg_wohnzimmer_licht_fenster received command
then
eg_wohnzimmer_subwoofer.sendCommand(receivedCommand)
end
Was die erste Version betrifft, so gibt es mindestens eine Schwachstelle, nämlich, wenn beide Geräte (tv und avr) eingschaltet sind, und nun eines der Geräte ausgeschaltet wird. Der Subwoofer wird abgeschaltet, obwohl noch eines der beiden Geräte eingeschaltet ist. Wenn ohnehin immer beide Geräte eingeschaltet sein sollen oder keines, braucht es keinen 2. Trigger, ansonsten muss man sicherstellen, dass nur abgeschaltet wird, wenn beide Items OFF sind:
Code: Alles auswählen
//Subwoofer AN und AUS
rule "Subwoofer an und aus"
when
Item eg_wohnzimmer_avr changed or // AVR AN
Item eg_wohnzimmer_tv changed // TV AN
then
eg_wohnzimmer_subwoofer.sendCommand(if(eg_wohnzimmer_avr.state == ON || eg_wohnzimmer_tv.state == ON) ON else OFF)
end
Die Rule triggert auf beide Items, in beide Richtungen. Falls eines der beiden Items den Status ON aufweist, sendet es ON an das subwoofer Item, sonst OFF. In diesem Fall bietet sich der ternäre Operator als nette Abkürzung an, statt
Code: Alles auswählen
if(eg_wohnzimmer_avr.state == ON || eg_wohnzimmer_tv.state == ON)
eg_wohnzimmer_subwoofer.sendCommand(ON)
else
eg_wohnzimmer_subwoofer.sendCommand(OFF)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet