Hier das Beispiel zur Nutzung der relativen Item Adressierung:
Im ersten Schritt habe ich die Item Struktur etwas angepasst (noch ohne relative Adressierung), so dass der Raum nur noch in einem Item Namen vorkommt:
Nun können die absoluten Referenzen (Test.Buero) durch die relative Referenz auf ein Geschwister-Item (..sister) angepasst werden Dabei wird aus Test.Buero.v ..v.
Zu beachten ist, dass im eval wo ja ein sh. vorangestellt werden muss dann 3 Punkte stehen, also sh...v()
Nun kann der gesamte Block unterhalb von Buero: unter einen anderen Raum kopiert werden, ohne dass nachfolgend noch etwas angepasst werden muss.
Im ersten Schritt habe ich die Item Struktur etwas angepasst (noch ohne relative Adressierung), so dass der Raum nur noch in einem Item Namen vorkommt:
Code:
Test: Buero: v: type: num knx_dpt: 1 knx_cache: 4/1/5 visu_acl: rw g: type: num knx_dpt: 1 knx_cache: 4/1/6 visu_acl: rw zu: type: bool enforce_updates: yes eval: True if sh.Test.Buero.v() == 1 and sh.Test.Buero.g() == 1 else False eval_trigger: - Test.Buero.g - Test.Buero.v gekippt: type: bool enforce_updates: yes eval: True if sh.Test.Buero.g() == 1 and sh.Test.Buero.v() == 0 else False eval_trigger: - Test.Buero.g - Test.Buero.v offen: type: bool enforce_updates: yes eval: True if sh.Test.Buero.g() == 0 and sh.Test.Buero.v() == 0 else False eval_trigger: - Test.Buero.g - Test.Buero.v
Zu beachten ist, dass im eval wo ja ein sh. vorangestellt werden muss dann 3 Punkte stehen, also sh...v()
Code:
Test: Buero: v: type: num knx_dpt: 1 knx_cache: 4/1/5 visu_acl: rw g: type: num knx_dpt: 1 knx_cache: 4/1/6 visu_acl: rw zu: type: bool enforce_updates: yes eval: True if sh...v() == 1 and sh...g() == 1 else False eval_trigger: - ..g - ..v gekippt: type: bool enforce_updates: yes eval: True if sh...g() == 1 and sh...v() == 0 else False eval_trigger: - ..g - ..v offen: type: bool enforce_updates: yes eval: True if sh...g() == 0 and sh...v() == 0 else False eval_trigger: - ..g - ..v
Kommentar