Skip to content
Snippets Groups Projects
btn_relay_labo.py 2.78 KiB
from xaal.lib import Engine
from xaal.schemas import devices
from xaal.monitor import Monitor
import platform

PKG_NAME = 'btn_relay_labo'

LAMPS=['ccc44227-d4fc-46eb-8578-159e2c47da03','ccc44227-d4fc-46eb-8578-159e2c47da04','ccc44227-d4fc-46eb-8578-159e2c47da05',
       'ccc44227-d4fc-46eb-8578-159e2c47da06','ccc44227-d4fc-46eb-8578-159e2c47da07','ccc44227-d4fc-46eb-8578-159e2c47da08']

# Edisio labo
BTNS=['743034ca-c2f0-11e8-9485-a40074bcb601','743034ca-c2f0-11e8-9485-a40074bcb603','743034ca-c2f0-11e8-9485-a40074bcb605',
      '743034ca-c2f0-11e8-9485-a40074bcb607','743034ca-c2f0-11e8-9485-a40074bcb608']

# Aquara sw1
AQUARA=['1ec6bbd0-20b5-11e9-b352-a4badbf92500']

# Edisio bureau
#BTNS = ['c4b33536-c314-11e8-a5d6-000673742b01','c4b33536-c314-11e8-a5d6-000673742b03','c4b33536-c314-11e8-a5d6-000673742b05',
#        'c4b33536-c314-11e8-a5d6-000673742b07','c4b33536-c314-11e8-a5d6-000673742b08']


SHUTERS=['e4b05165-be5d-46d5-acd0-4da7be1158ed','2fe70f46-3ece-44d1-af34-2d82e10fb854']

LAMPS_A = [LAMPS[0], LAMPS[2], LAMPS[5]]
LAMPS_B = [LAMPS[1], LAMPS[3], LAMPS[4]]

mon = None

def send(targets,action,body=None):
    global mon
    engine = mon.dev.engine
    engine.send_request(dev,targets,action,body)

def search_for_light(lamps):
    for l in lamps:
        dev = mon.devices.get_with_addr(l)
        if dev:
            light = dev.attributes.get('light',None)
            if light:
                return True
    return False

def on_off_light(lamps):
    if search_for_light(lamps):
        send(lamps,'off')
        return False
    else:
        send(lamps,'on')
        return True

def handle_msg(msg):
    if not msg.is_notify():
        return
    # search for the buttons 
    if msg.action == 'click':
        if msg.source == BTNS[0]:
            on_off_light(LAMPS_A)

        if msg.source == BTNS[1]:
            on_off_light(LAMPS_B)

        # btn du milieu / on éteint tout
        if msg.source == BTNS[2]:
            on_off_light(LAMPS)
            #send(SHUTERS,'stop')

        if msg.source in AQUARA:
            if on_off_light(LAMPS):
                #send([SHUTERS[0],],'up')
                #send([SHUTERS[1],],'up')
                pass
            else:
                #send([SHUTERS[0],],'down')
                #send([SHUTERS[1],],'down')
                pass

    if msg.action == 'double_click':
        if msg.source in AQUARA:
            send([SHUTERS[0],],'stop')
            send([SHUTERS[1],],'stop')
            
                
def main():
    global dev
    global mon
    dev = devices.basic()
    dev.info = '%s@%s' % (PKG_NAME,platform.node())
    engine = Engine()
    engine.add_device(dev)
    engine.add_rx_handler(handle_msg)
    mon = Monitor(dev)
    engine.run()

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        print('Bye bye')