diff --git a/src/combined.py b/src/combined.py index 4f04632..0f1ceb0 100644 --- a/src/combined.py +++ b/src/combined.py @@ -29,8 +29,8 @@ # build OOK messages for legacy green button -GREEN_ON = TwoBit.build_switch_msg(True, device_address=1) -GREEN_OFF = TwoBit.build_switch_msg(False, device_address=1) +GREEN_ON = TwoBit.encode_switch_message(True, device_address=1) +GREEN_OFF = TwoBit.encode_switch_message(False, device_address=1) def switch_loop(): diff --git a/src/energenie/Devices.py b/src/energenie/Devices.py index a6beee3..a7a41d5 100644 --- a/src/energenie/Devices.py +++ b/src/energenie/Devices.py @@ -268,10 +268,20 @@ self.capabilities.receive = True def turn_on(self): - self.send_message("turn on") # TODO + payload = { + "house_address": self.device_id[0], + "device_index": self.device_id[1], + "on": True + } + self.send_message(payload) def turn_off(self): - self.send_message("turn off") # TODO + payload = { + "house_address": self.device_id[0], + "device_index": self.device_id[1], + "on": False + } + self.send_message(payload) class MIHO005(MiHomeDevice): diff --git a/src/energenie/OnAir.py b/src/energenie/OnAir.py index 00ca7e8..86321c9 100644 --- a/src/energenie/OnAir.py +++ b/src/energenie/OnAir.py @@ -118,12 +118,17 @@ # payload is just a list of bytes, or a byte buffer # radio_params is an overlay on top of radio tx defaults - p = TwoBit.encode(payload) + house_address = payload["house_address"] + device_index = payload["device_index"] + state = payload["on"] + bytes = TwoBit.encode_switch_message(state, device_index, house_address) radio.modulation(ook=True) + #TODO: merge radio_params with self.tx_defaults #TODO: configure radio modulation based on merged params #TODO: transmit payload - radio.transmit(p, outer_times=1, inner_times=8, outer_delay=0) #TODO: radio params + + radio.transmit(bytes, outer_times=1, inner_times=8, outer_delay=0) #TODO: radio params # radio auto-pops to state before transmit @log_method diff --git a/src/energenie/Registry.py b/src/energenie/Registry.py index e25e71c..c4b5428 100644 --- a/src/energenie/Registry.py +++ b/src/energenie/Registry.py @@ -276,8 +276,7 @@ #----- SIMPLE TEST HARNESS ---------------------------------------------------- -if __name__ == "__main__": - +def test_with_registry(): #TODO need a way to separate device creation from device restoration #and the app needs to know what mode it is in. #creation is probably just a test feature, as a user would either @@ -285,7 +284,7 @@ # seed the registry - registry.add(Devices.MIHO005(device_id=0x68b), "tv") + #registry.add(Devices.MIHO005(device_id=0x68b), "tv") registry.add(Devices.ENER002(device_id=(0xC8C8C, 1)), "fan") # test the auto create mechanism @@ -293,18 +292,24 @@ registry.auto_create(sys.modules[__name__]) # variables should now be created in module scope - print("tv %s" % tv) + #print("tv %s" % tv) print("fan %s" % fan) - tv.turn_on() + #tv.turn_on() fan.turn_on() - print("tv switch:%s" % tv.has_switch()) - print("tv send:%s" % tv.can_send()) - print("tv receive:%s" % tv.can_receive()) + #print("tv switch:%s" % tv.has_switch()) + #print("tv send:%s" % tv.can_send()) + #print("tv receive:%s" % tv.can_receive()) - print("fan switch:%s" % fan.has_switch()) - print("fan send:%s" % fan.can_send()) - print("fan receive:%s" % fan.can_receive()) + #print("fan switch:%s" % fan.has_switch()) + #print("fan send:%s" % fan.can_send()) + #print("fan receive:%s" % fan.can_receive()) + + +if __name__ == "__main__": + test_with_registry() + + # END diff --git a/src/energenie/TwoBit.py b/src/energenie/TwoBit.py index 283373a..e8e4e41 100644 --- a/src/energenie/TwoBit.py +++ b/src/energenie/TwoBit.py @@ -58,8 +58,7 @@ return line -#TODO: encode_relay_msg -def build_relay_msg(relayState=False): +def encode_relay_message(relayState=False): """Temporary test code to prove we can turn the relay on or off""" payload = PREAMBLE #TODO: + DEFAULT_ADDR_ENC ?? @@ -73,8 +72,7 @@ return payload -#TODO: encode_test_message -def build_test_message(pattern): +def encode_test_message(pattern): """build a test message for a D3D2D1D0 control patter""" payload = PREAMBLE + DEFAULT_ADDR_ENC pattern &= 0x0F @@ -83,8 +81,7 @@ return payload -#TODO: encode_switch_msg -def build_switch_msg(state, device_address=ALL_SOCKETS, house_address=None): +def encode_switch_message(state, device_address=ALL_SOCKETS, house_address=None): """Build a message to turn a switch on or off""" #print("build: state:%s, device:%d, house:%s" % (str(state), device_address, str(house_address))) diff --git a/src/legacy.py b/src/legacy.py index 6759a41..f4f693f 100644 --- a/src/legacy.py +++ b/src/legacy.py @@ -39,18 +39,18 @@ HOUSE_ADDRESS = None # Use default energenie quasi-random address 0x6C6C6 ##HOUSE_ADDRESS = 0xA0170 # Captured address of David's RF hand controller -ALL_ON = TwoBit.build_switch_msg(True, house_address=HOUSE_ADDRESS) -ONE_ON = TwoBit.build_switch_msg(True, device_address=1, house_address=HOUSE_ADDRESS) -TWO_ON = TwoBit.build_switch_msg(True, device_address=2, house_address=HOUSE_ADDRESS) -THREE_ON = TwoBit.build_switch_msg(True, device_address=3, house_address=HOUSE_ADDRESS) -FOUR_ON = TwoBit.build_switch_msg(True, device_address=4, house_address=HOUSE_ADDRESS) +ALL_ON = TwoBit.encode_switch_message(True, house_address=HOUSE_ADDRESS) +ONE_ON = TwoBit.encode_switch_message(True, device_address=1, house_address=HOUSE_ADDRESS) +TWO_ON = TwoBit.encode_switch_message(True, device_address=2, house_address=HOUSE_ADDRESS) +THREE_ON = TwoBit.encode_switch_message(True, device_address=3, house_address=HOUSE_ADDRESS) +FOUR_ON = TwoBit.encode_switch_message(True, device_address=4, house_address=HOUSE_ADDRESS) ON_MSGS = [ALL_ON, ONE_ON, TWO_ON, THREE_ON, FOUR_ON] -ALL_OFF = TwoBit.build_switch_msg(False, house_address=HOUSE_ADDRESS) -ONE_OFF = TwoBit.build_switch_msg(False, device_address=1, house_address=HOUSE_ADDRESS) -TWO_OFF = TwoBit.build_switch_msg(False, device_address=2, house_address=HOUSE_ADDRESS) -THREE_OFF = TwoBit.build_switch_msg(False, device_address=3, house_address=HOUSE_ADDRESS) -FOUR_OFF = TwoBit.build_switch_msg(False, device_address=4, house_address=HOUSE_ADDRESS) +ALL_OFF = TwoBit.encode_switch_message(False, house_address=HOUSE_ADDRESS) +ONE_OFF = TwoBit.encode_switch_message(False, device_address=1, house_address=HOUSE_ADDRESS) +TWO_OFF = TwoBit.encode_switch_message(False, device_address=2, house_address=HOUSE_ADDRESS) +THREE_OFF = TwoBit.encode_switch_message(False, device_address=3, house_address=HOUSE_ADDRESS) +FOUR_OFF = TwoBit.encode_switch_message(False, device_address=4, house_address=HOUSE_ADDRESS) OFF_MSGS = [ALL_OFF, ONE_OFF, TWO_OFF, THREE_OFF, FOUR_OFF] @@ -127,7 +127,7 @@ while True: p = readin("number 0..F") p = int(p, 16) - msg = TwoBit.build_test_message(p) + msg = TwoBit.encode_test_message(p) print("pattern %s payload %s" % (str(hex(p)), TwoBit.ashex(msg))) radio.send_payload(msg, OUTER_TIMES, INNER_TIMES)