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


. Aber für die Zukunft ist das natürlich schicker.
Kommentar