diff --git a/src/energenie/Devices.py b/src/energenie/Devices.py index 01f2240..5a998f8 100644 --- a/src/energenie/Devices.py +++ b/src/energenie/Devices.py @@ -372,7 +372,7 @@ return self.device_id def __repr__(self): - return "Device(%s)" % str(self.device_id) + return "EnergenieDevice(%s)" % str(self.device_id) class LegacyDevice(EnergenieDevice): @@ -845,15 +845,47 @@ class Readings(): battery_voltage = None current = None + apparent_power = None self.readings = Readings() self.capabilities.send = True + def __repr__(self): + return "MIHO006(%s)" % str(hex(self.device_id)) + + def handle_message(self, payload): + for rec in payload["recs"]: + paramid = rec["paramid"] + #TODO: consider making this table driven and allowing our base class to fill our readings in for us + #TODO: consider using @OpenThings.parameter as a decorator to the receive function + #it will then register a handler for that message for itself as a handler + #we still need Readings() defined too as a cache. The decorator could add + #an entry into the cache too for us perhaps? + if "value" in rec: + value = rec["value"] + if paramid == OpenThings.PARAM_VOLTAGE: + self.readings.battery_voltage = value + elif paramid == OpenThings.PARAM_CURRENT: + self.readings.current = value + elif paramid == OpenThings.PARAM_APPARENT_POWER: + self.readings.apparent_power = value + else: + try: + param_name = OpenThings.param_info[paramid]['n'] # name + except: + param_name = "UNKNOWN_%s" % str(hex(paramid)) + print("unwanted paramid: %s" % param_name) + pass + def get_battery_voltage(self): # -> voltage:float return self.readings.battery_voltage def get_current(self): # -> current:float return self.readings.current + def get_apparent_power(self): # -> power:float + return self.reading.apparent_power + + #------------------------------------------------------------------------------ diff --git a/src/registry.kvs b/src/registry.kvs index 25ff67d..cbcae8d 100644 --- a/src/registry.kvs +++ b/src/registry.kvs @@ -14,9 +14,9 @@ type=MIHO005 device_id=1675 -IGN house +ADD house type=MIHO006 -device_id=0000 +device_id=441 ADD light_white type=MIHO008 diff --git a/src/setup_tool.py b/src/setup_tool.py index 30f5b66..122c309 100644 --- a/src/setup_tool.py +++ b/src/setup_tool.py @@ -110,7 +110,8 @@ # get device house_code = get_house_code() device_index = get_device_index() - device = energenie.Devices.ENER002((house_code, device_index)) + # Use a MiHomeLight as it has the longest TX time + device = energenie.Devices.MIHO008((house_code, device_index)) # in a loop until Ctrl-C print("Legacy learn broadcasting, Ctrl-C to stop")