Hallo Forum,
ich habe eine einfache Logik für Szenensteurung, die ich mit euch teilen möchte: In smartVISU können ein bis maximal zehn Szenentasten platziert werden, die nach Betätigung eine Sekunde lang mit alternativer Hintergrundfarbe dargestellt werden, wie z.B wie folgt (Abbildung beigefügt):
Die Funktion szenen.py ist wie folgt:
die Items müssen dem Muster *.sN folgen, wobei N eine Ziffer 0-9 darstellt, wie z.B.:
und werden in logic.conf eingebunden:
die auszuführenden Befehlen können dann in den beiden folgenden Dateien geschrieben werden:
enforce_updates wird nur gebraucht, wenn die Szene 0 verwendet wird. Ein Kritikpunkt könnte sein, dass die Funktion nicht sehr robust implementiert ist, wodurch das Muster sehr genau wie gezeigt eingehalten werden muss. Sollte sich jemand damit beschäftigen und es eleganter implementieren, freue ich mich natürlich über eine Rückmeldung.
Viele Grüße,
Jan
ich habe eine einfache Logik für Szenensteurung, die ich mit euch teilen möchte: In smartVISU können ein bis maximal zehn Szenentasten platziert werden, die nach Betätigung eine Sekunde lang mit alternativer Hintergrundfarbe dargestellt werden, wie z.B wie folgt (Abbildung beigefügt):
Code:
<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>
Code:
#!/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')
Code:
[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
Code:
[og_bad_szenen] filename = szenen.py watch_item = og.bad.szenen.* [og_schlafen_szenen] filename = szenen.py watch_item = og.schlafen.szenen.*
Code:
/usr/smarthome/scenes/og.bad.szenen.conf /usr/smarthome/scenes/og.schlafen.szenen.conf
Viele Grüße,
Jan
Kommentar