From 9d233bea5d274a6cdd7cfba98dd968571b9700b3 Mon Sep 17 00:00:00 2001 From: David Parker Date: Tue, 21 Feb 2017 02:42:52 +0000 Subject: [PATCH] Add support for other fields Based on the work in https://github.com/rainlake/node-lightify --- lightify/__init__.py | 123 +++++++++++++++++++++++++++++++++---------- 1 file changed, 95 insertions(+), 28 deletions(-) diff --git a/lightify/__init__.py b/lightify/__init__.py index a8d3e10..37a9576 100755 --- a/lightify/__init__.py +++ b/lightify/__init__.py @@ -82,25 +82,51 @@ def set_rgb(self, r, g, b, time): class Light(Luminary): - def __init__(self, conn, logger, addr, name): + def __init__(self, conn, logger, id, addr, type, name): super(Light, self).__init__(conn, logger, name) self.__logger = logger self.__conn = conn + self.__id = id self.__addr = addr + self.__type = type + + def id(self): + return self.__id def addr(self): return self.__addr + def mac(self): + # Convert MAC Address - http://stackoverflow.com/a/11006780 + return '-'.join(format(self.__addr, 'x')[i:i+2] for i in range(0,16,2)) + + def type(self): + return self.__type + def __str__(self): return "" % self.name() - def update_status(self, on, lum, temp, r, g, b): - self.__on = on - self.__lum = lum + def update_status(self, fwVersion, online, groupId, status, luminance, temp, red, green, blue, alpha, name): + self.__fwVersion = fwVersion + self.__online = online + self.__groupId = groupId + self.__on = status + self.__lum = luminance self.__temp = temp - self.__r = r - self.__g = g - self.__b = b + self.__r = red + self.__g = green + self.__b = blue + self.__alpha = alpha + self.__name = name + + def fwVersion(self): + return self.__fwVersion + + def online(self): + return self.__online + + def groupId(self): + return self.__groupId def on(self): return self.__on @@ -148,6 +174,9 @@ def green(self): def blue(self): return self.__b + def alpha(self): + return self.__alpha + def build_command(self, command, data): return self.__conn.build_light_command(command, self, data) @@ -430,6 +459,7 @@ def update_all_light_status(self): data = self.build_all_light_status(1) self.send(data) data = self.recv() + # Unsigned short (H), little endian (<) .. indicates how many rows there are to process (num,) = struct.unpack("I", payload[11:15]) + + # Online status - unsigned char (1) + (online,) = struct.unpack("