-
Notifications
You must be signed in to change notification settings - Fork 68
Einfachen Szenensteuerung für SmartHome.py smartVISU
Mit möglichst wenig Aufwand weitere Szenensteuerungen in SmartHome.py/smartVISU zu erstellen.
Mit der Logik können in smartVISU ein bis maximal zehn zusammengehörigen Szenentasten platziert werden, die nach Betätigung eine Sekunde lang mit alternativer Hintergrundfarbe dargestellt werden, wie z.B wie folgt:
<span data-role="controlgroup" data-type="horizontal">
{{ basic.dual('szene_schlafen_s1', 'og.schlafen.szenen.s1', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
{{ basic.dual('szene_schlafen_s2', 'og.schlafen.szenen.s2', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
{{ basic.dual('szene_schlafen_s3', 'og.schlafen.szenen.s3', icon1~'light_light_dim_100.png', icon0~'light_light_dim_100.png', 1, 0, 'midi') }}
{{ basic.dual('szene_schlafen_s0', 'og.schlafen.szenen.s0', icon1~'audio_rec.png', icon0~'audio_rec.png', 1, 0, 'midi') }}
</span>
#!/usr/bin/env python
szenen_item = sh.match_items(str(logic.watch_item[0])[:-2])[0]
if trigger['value'] == True:
szenen_item(int(trigger['source'][-1:]))
for item in sh.match_items(str(logic.watch_item[0])):
if str(item) != trigger['source']:
item('Off')
else:
item.timer(1, 'Off')
die Items müssen dem Muster *.sN folgen, wobei N eine Ziffer 0-9 darstellt, wie z.B.:
[og]
[[bad]]
[[[szenen]]]
type = scene
enforce_updates = true
[[[[s0]]]]
type = bool
[[[[s1]]]]
type = bool
[[[[s2]]]]
type = bool
[[[[s3]]]]
type = bool
[[schlafen]]
[[[szenen]]]
type = scene
enforce_updates = true
[[[[s0]]]]
type = bool
[[[[s1]]]]
type = bool
[[[[s2]]]]
type = bool
[[[[s3]]]]
type = bool
und werden in logic.conf eingebunden:
[og_bad_szenen]
filename = szenen.py
watch_item = og.bad.szenen.*
[og_schlafen_szenen]
filename = szenen.py
watch_item = og.schlafen.szenen.*
die auszuführenden Befehlen können dann auf SmartHome art konfiguriert werden. Für die gezeigte Konfiguration mussen die Befehle in den folgenden Dateien geschrieben werden:
/usr/smarthome/scenes/og.bad.szenen.conf
/usr/smarthome/scenes/og.schlafen.szenen.conf
enforce_updates wird nur gebraucht, wenn die Szene 0 verwendet wird.
Wer zu faul ist für jeden Raum die Einträge in logig.conf einzutragen, kann vereinfachen in dem er mit eine logik die szenen für alle Räume behandelt:
#!/usr/bin/env python
szenen_name = str(trigger['source'])[:-3]
szenen_item = sh.match_items(szenen_name)[0]
if trigger['value'] == True:
szenen_item(int(trigger['source'][-1:]))
for item in sh.match_items(str(szenen_name + ".*")):
if str(item) != trigger['source']:
item('Off')
else:
item.timer(1, 'Off')
und nur einen Eintrag in logic.conf
[szenen]
filename = szenen.py
watch_item = *.szenen.*
Dabei darf natürlich kein unbeteiligten item das Suchmuster *.szenen.* erfüllen.