Newer
Older
pyenergenie / src / control_both.py
# control_both.py  15/05/2016  D.J.Whale
#
# A simple demo of combining both FSK (MiHome) and OOK (green button legacy)
#
# NOTE: This is only a test harness.
# If you really want a nice way to control these devices, wait for the 'device classes'
# issues to be implemented and tested on top of the raw radio interface, as these
# will be much nicer to use.

import time
from energenie import OpenThings, radio, TwoBit, Devices

# build FSK messages for MiHome purple

OpenThings.init(Devices.CRYPT_PID)

PURPLE_ID = 0x68B # captured from a real device using Monitor.py
m = OpenThings.Message(Devices.SWITCH)
m.set(header_sensorid=PURPLE_ID, recs_SWITCH_STATE_value=1)
purple_on = OpenThings.encode(m)

m = OpenThings.Message(Devices.SWITCH)
m.set(header_sensorid=PURPLE_ID, recs_SWITCH_STATE_value=0)
purple_off = OpenThings.encode(m)

# build OOK messages for legacy green button

GREEN_ON  = TwoBit.encode_switch_message(True, device_address=1)
GREEN_OFF = TwoBit.encode_switch_message(False, device_address=1)


def switch_loop():
    print("Turning green ON")
    radio.modulation(ook=True)
    radio.transmit(GREEN_ON)
    time.sleep(0.5)

    print("Turning purple ON")
    radio.modulation(fsk=True)
    radio.transmit(purple_on, inner_times=2)
    time.sleep(2)

    print("Turning green OFF")
    radio.modulation(ook=True)
    radio.transmit(GREEN_OFF)
    time.sleep(0.5)

    print("Turning purple OFF")
    radio.modulation(fsk=True)
    radio.transmit(purple_off, inner_times=2)
    time.sleep(2)


if __name__ == "__main__":

    print("starting combined switch tester")
    print("radio init")
    radio.init()

    try:
        while True:
            switch_loop()

    finally:
        radio.finished()

# END