-
Notifications
You must be signed in to change notification settings - Fork 91
Einfache Szenensteuerung für SmartHome.py mit 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.
Die aktuellen Release Notes und die Release Notes der zurückliegenden Versionen sind in der Dokumentation im Abschnitt Release Notes zu finden.