Skip to content

Commit

Permalink
Check color mode values for emptiness (#829)
Browse files Browse the repository at this point in the history
yeelink.light.mono1 is seemingly reporting color_mode to be 2 (color temperature) even when the light does not support ct.
This PR checks that the values for ct (or hue, sat & brightness for hsv mode, and rgb for rgb mode) are not empty.

Fixes #802
  • Loading branch information
rytilahti authored Oct 7, 2020
1 parent eee528f commit 2036dec
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions miio/yeelight.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,9 @@ def brightness(self) -> int:
@property
def rgb(self) -> Optional[Tuple[int, int, int]]:
"""Return color in RGB if RGB mode is active."""
if self.color_mode == YeelightMode.RGB:
return int_to_rgb(int(self.data["rgb"]))
rgb = self.data["rgb"]
if self.color_mode == YeelightMode.RGB and rgb:
return int_to_rgb(int(rgb))
return None

@property
Expand All @@ -51,15 +52,19 @@ def color_mode(self) -> YeelightMode:
@property
def hsv(self) -> Optional[Tuple[int, int, int]]:
"""Return current color in HSV if HSV mode is active."""
if self.color_mode == YeelightMode.HSV:
return self.data["hue"], self.data["sat"], self.data["bright"]
hue = self.data["hue"]
sat = self.data["sat"]
brightness = self.data["bright"]
if self.color_mode == YeelightMode.HSV and (hue or sat or brightness):
return hue, sat, brightness
return None

@property
def color_temp(self) -> Optional[int]:
"""Return current color temperature, if applicable."""
if self.color_mode == YeelightMode.ColorTemperature:
return int(self.data["ct"])
ct = self.data["ct"]
if self.color_mode == YeelightMode.ColorTemperature and ct:
return int(ct)
return None

@property
Expand Down

0 comments on commit 2036dec

Please sign in to comment.