Skip to content

Commit 30b35ac

Browse files
Expose raw values for each device
1 parent cf2551a commit 30b35ac

1 file changed

Lines changed: 18 additions & 8 deletions

File tree

lightify/__init__.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
#
2323

2424
#
25-
# TODO: Support for sensors
25+
# TODO: Support for motion and contact sensors
2626
#
2727

2828
import binascii
@@ -228,14 +228,13 @@ def __init__(self, conn, addr, type_id, type_id_assumed):
228228
self.__deleted = False
229229
self.__type_id = type_id
230230
self.__idx = 0
231+
self.__raw_values = ()
231232

232233
device_info = conn.device_types()[type_id_assumed]
233234
self.__devicesubtype = device_info['subtype']
234235
self.__devicetype = device_info['type']
235-
if type_id == type_id_assumed:
236-
self.__devicename = device_info['name']
237-
else:
238-
self.__devicename = UNKNOWN_DEVICENAME
236+
self.__devicename = (device_info['name'] if type_id == type_id_assumed
237+
else UNKNOWN_DEVICENAME)
239238

240239
if self.__devicesubtype in (DeviceSubType.CONTACT_SENSOR,
241240
DeviceSubType.MOTION_SENSOR,
@@ -366,6 +365,13 @@ def rgb(self):
366365
"""
367366
return self.__red, self.__green, self.__blue
368367

368+
def raw_values(self):
369+
"""
370+
:return: tuple containing raw values as obtained from gateway:
371+
(onoff, lum, temp, red, green, blue, alpha)
372+
"""
373+
return self.__raw_values
374+
369375
def type_id(self):
370376
"""
371377
:return: original device type id as returned by gateway
@@ -420,7 +426,7 @@ def mark_deleted(self):
420426
self.__deleted = True
421427

422428
def update_status(self, reachable, last_seen, onoff, lum, temp, red, green,
423-
blue, name, groups, version, idx):
429+
blue, alpha, name, groups, version, idx):
424430
""" update internal representation
425431
does not send out a command to the light source!
426432
@@ -432,6 +438,7 @@ def update_status(self, reachable, last_seen, onoff, lum, temp, red, green,
432438
:param red: amount of red
433439
:param green: amount of green
434440
:param blue: amount of blue
441+
:param alpha: alpha value (not used)
435442
:param name: name of the light
436443
:param groups: list of associated group indices
437444
:param version: firmware version
@@ -444,6 +451,7 @@ def update_status(self, reachable, last_seen, onoff, lum, temp, red, green,
444451
self.__groups = groups
445452
self.__version = version
446453
self.__idx = idx
454+
self.__raw_values = (onoff, lum, temp, red, green, blue, alpha)
447455

448456
if 'on' in self.__supported_features:
449457
self.__onoff = bool(onoff)
@@ -1528,7 +1536,7 @@ def update_all_light_status(self, throttling_interval=None):
15281536
return {}
15291537

15301538
(type_id, version, reachable, groups, onoff, lum, temp, red,
1531-
green, blue) = struct.unpack('<B4sBH2BH3Bx', stat)
1539+
green, blue, alpha) = struct.unpack('<B4sBH2BH4B', stat)
15321540
name = name.decode('utf-8').replace('\0', '')
15331541
groups = [16 - j for j, val
15341542
in enumerate(format(groups, '016b')) if val == '1']
@@ -1564,13 +1572,15 @@ def update_all_light_status(self, throttling_interval=None):
15641572
self.__logger.debug('red: %d', red)
15651573
self.__logger.debug('green: %d', green)
15661574
self.__logger.debug('blue: %d', blue)
1575+
self.__logger.debug('alpha: %d', alpha)
15671576
self.__logger.debug('type id: %d', type_id)
15681577
self.__logger.debug('groups: %s', groups)
15691578
self.__logger.debug('version: %s', version)
15701579
self.__logger.debug('idx: %s', i)
15711580

15721581
light.update_status(reachable, last_seen, onoff, lum, temp,
1573-
red, green, blue, name, groups, version, i)
1582+
red, green, blue, alpha, name, groups,
1583+
version, i)
15741584
new_lights[addr] = light
15751585

15761586
for addr in self.__lights:

0 commit comments

Comments
 (0)