Ziel
Mit einem Schaltbefehl ein anderes Objekt mit Ein- oder Aussschalten. Der jeweilig andere Schaltzustand wird ignoriert. Anstonsten hätte ich ja ein Gruppenobjekt mehrfach zuordnen können.
Ich nutze die beiden Logiken z.B. im Badezimmer um die Rollladen herunterzufahren wenn der Bewegungsmelder das Licht einschaltet. Wenn ich dann manuell noch Zusatzlicht Einschalte, wird dieses automatisch vom Bewegungsmelder wieder mit dem Hauptlicht ausgeschaltet. Die Logik sendet jeweils ein 0 oder 1 an das mittels switchon oder switchon referenzierte Item. Somit können Lampen aus und Rollladen heruntergefahren werden.
Logik
Zuerst die beiden Logiken, die im logics Verzeichnis gespeichert werden.
switchoff.py
#!/usr/bin/env python
# get triggering item
trigger_source = trigger['source']
logger.debug('SwitchOff triggered by '+trigger_source)
trigger_item = sh.return_item(trigger_source)
if not trigger_item():
# switch off associated item
item_to_switchoff = sh.return_item(trigger_item.conf['switchoff'])
logger.info('Switching off '+str(item_to_switchoff))
item_to_switchoff(0)
else:
logger.debug('SwitchOff trigger item is switched on. Nothing to do.')
switchon.py
#!/usr/bin/env python
# get triggering item
trigger_source = trigger['source']
logger.debug('SwitchOn triggered by '+trigger_source)
trigger_item = sh.return_item(trigger_source)
if trigger_item():
# switch on associated item
item_to_switchon = sh.return_item(trigger_item.conf['switchon'])
logger.info('Switching on '+str(item_to_switchon))
item_to_switchon(1)
else:
logger.debug('SwitchOn trigger item is switched off. Nothing to do.')
In der Zentral.config habe ich Elemente definiert, die die ermittelten Werte aufnehmen.
logic.yaml
Registriert werden die beiden Logiken in der logic.yaml im ../etc Ordner von SmartHomeNG. Die Logiken werden auf alle Items registriert, die die Eigenschaften switchon/switchoff definiert haben.
SwitchOff:
filename: switchoff.py
watch_item: '*:switchoff'
SwitchOn:
filename: switchon.py
watch_item: '*:switchon'
Items
Die Zuordnung der Logiken zu Items geschieht in yaml-Dateien im items Ordner.
og:
badezimmer:
name: Badezimmer
sv_page: room
sv_img: scene_bathroom.svg
licht:
name: Badezimmer
spiegel:
name: Licht Spiegel
...
decke:
name: Licht
type: bool
...
switchon: og.badezimmer.rollo.fenster.lang
switchoff: og.badezimmer.licht.spiegel
Das Auslösende Element wird ermittelt und über ein zusätzliches Attribut das zugeordnete Objekt gefunden und geschaltet.
1 Kommentar
onkelandy · 31. März 2018 um 17:34
Erster Absatz: mittels switchon oder switchon müsste wohl ein Mal switchoff heißen 😉