From fc6740494318dc0693433b0d4d9ab393cf3474c0 Mon Sep 17 00:00:00 2001 From: Teemu R Date: Wed, 7 Oct 2020 03:56:57 +0200 Subject: [PATCH] Check color mode values for emptiness (#829) 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 --- miio/yeelight.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/miio/yeelight.py b/miio/yeelight.py index 3d23bf9c7..8f7305e1b 100644 --- a/miio/yeelight.py +++ b/miio/yeelight.py @@ -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 @@ -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