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.

 

Kategorien: Tipps & Tricks

1 Kommentar

onkelandy · 31. März 2018 um 17:34

Erster Absatz: mittels switchon oder switchon müsste wohl ein Mal switchoff heißen 😉

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert