das folgende Verhalten ist in meinen Augen falsch, zumindest überraschend.
Für jeden Raum und das gesamte Haus habe ich KNX-seitig jeweils einen mehrstufigen Zentral-Aus (nur Lichter aus, Steckdosen und Lichter aus, Steckdosen, Lichter und Geräte aus). Jede Stufe hat eigene 1-Bit-GAs.
Die Zentral-Aus triggere ich bisher über KNX-Taster. Dies soll nach wie vor möglich sein. Zusätzlich möchte ich einen Zentral-Aus über OH schicken können.
Dazu habe ich Paare von Channels und Items definiert, etwa:
Code: Alles auswählen
Thing knx:device:bridge:Anwesenheit "Anwesenheit" (knx:ip:bridge) [
fetch=false
] {
Type switch : Grg_Anw_Stufe_1 "Anwesenheit Stufe 1 Garage" [ ga="0/1/5" ]
Type switch-control : Grg_Anw_Stufe_1_Ctrl "Anwesenheit Stufe 1 Garage" [ ga="0/1/5" ]
...
Code: Alles auswählen
Switch Anw1_Grg "Anwesenheit Stufe 1 Garage [%s]" { channel="knx:device:bridge:Anwesenheit:Grg_Anw_Stufe_1" }
Switch Anw1_Grg_Ctrl "Anwesenheit Stufe 1 Garage [%s]" { channel="knx:device:bridge:Anwesenheit:Grg_Anw_Stufe_1_Ctrl", autoupdate="false" }
Durch eine zentrale Rule werden Updates auf Items, die ein Ctrl-Item haben, auch auf das Ctrl-Item geschickt, um es aktuell halten zu halten (leider macht das OH nicht selbst).
Auf Grund des Anw1_Grg.sendCommand(OFF) wird daher automatisch ein
Code: Alles auswählen
Anw1_Grg_Ctrl.postUpdate(OFF)
Code: Alles auswählen
rule
when
Item Anw1_Grg_Ctrl received update
then
...
Beim Switch läuft es offensichtlich anders. Das obige Anw1_Grg_Ctrl.postUpdate(OFF) führt zu einem GroupValueWrite auf dem KNX-Bus:
Das ist meines Erachtens aus mehreren Gründen falsch, zumindest so nicht spezifiziert:
- Ein postUpdate() sollte nicht auf den KNX-Bus durchschlagen. Nur sendCommand() schickt auf den KNX-Bus.
- Nach meinem Verständnis sollte ein Control-Item nur auf ein GroupValueRead reagieren. Ein GroupValueWrite wird - zumindest bei den RollerShutterItems - durch das autoupdate="false" verhindert.