Skip to content
Snippets Groups Projects
Commit ff57fc76 authored by jkerdreu's avatar jkerdreu
Browse files

Fix set_brightness / turn_on / set_hsv at boot. 




git-svn-id: https://redmine.imt-atlantique.fr/svn/xaal/code/Python/branches/0.7@2965 b32b6428-25c9-4566-ad07-03861ab6144f
parent 2b1df7ca
Branches
No related tags found
No related merge requests found
......@@ -251,14 +251,14 @@ class Gateway(AqaraDev):
self.ip = None
self.token = None
self.ready = False
self.rgb = None
self._rgb = None
self._secret = None
self.connect()
lamp = devices.lamp_color(self.base_addr)
lamp.methods['turn_on'] = self.lamp_on
lamp.methods['turn_off'] = self.lamp_off
lamp.methods['toggle'] = self.lamp_toggle
lamp.methods['debug'] = self.debug
# lamp.methods['debug'] = self.debug
lamp.methods['set_hsv'] = self.set_hsv
lamp.methods['set_brightness'] = self.set_brightness
# The gateway only support RGB, no white
......@@ -285,6 +285,20 @@ class Gateway(AqaraDev):
def debug(self):
import pdb; pdb.set_trace()
@property
def rgb(self):
""" At boot, we didn't receive the rbg value yet (have to toggle on/off),
without this value, we are unable to set_hsv (unknow brightness) or set_brightness
(unknow color). So, if we don't know the value, simply think it's red.
"""
if self._rgb == None:
return self.rgb_to_value(255, 10, 10)
return self._rgb
@rgb.setter
def rgb(self, value):
self._rgb = value
#========================================================================
## GW Unicast methods
#========================================================================
......@@ -431,18 +445,14 @@ class Gateway(AqaraDev):
hsv = _hsv
h,s,v = hsv
rgb = tuple(round(i * 255) for i in colorsys.hsv_to_rgb(h/360.0, s, v))
if self.rgb:
brightness = self.value_to_rgb(self.rgb)[3]
else:
brightness = 0xFF
brightness = self.value_to_rgb(self.rgb)[3]
value = self.rgb_to_value(*rgb, brightness)
self.lamp_set(value)
def set_brightness(self, _brightness, _smooth=None):
brightness = int(_brightness)
rgb = self.value_to_rgb(self.rgb)
r, g, b = rgb[:3]
value = self.rgb_to_value(r, g, b, brightness)
rgb = self.value_to_rgb(self.rgb)[0:3]
value = self.rgb_to_value(*rgb, brightness)
self.lamp_set(value)
def lamp_set(self, value):
......@@ -450,8 +460,7 @@ class Gateway(AqaraDev):
self.write(data)
def lamp_on(self):
color = self.rgb or self.rgb_to_value(255, 170, 170)
self.lamp_set(color)
self.lamp_set(self.rgb)
def lamp_off(self):
self.lamp_set(0)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment