Fix out-of-range color temperatures
If light.turn_on is invoked with `brightness: 128, color_temp: 500` for a bulb that supports mired range 154..370 in value range 1..255 the calculated color temperature will be negative. When the bulb receives the command it may turn on, but will fail processing the color_temp operation and will not send a response. At this point `light.toggle` will have no effect because Home Assistant is unaware that the bulb is on. Fix the state by clamping the sent color temperature to the allowed range. Signed-off-by: Peter A. Bigot <[email protected]>
This commit is contained in:
1 parent
2a277a0c26
commit
8a1c6e0380
1 file changed
+8
-7
@@ -377,16 +377,17 @@ class LocaltuyaLight(LocalTuyaEntity, LightEntity):
|
|||||||
if ATTR_COLOR_TEMP in kwargs and (features & SUPPORT_COLOR_TEMP):
|
if ATTR_COLOR_TEMP in kwargs and (features & SUPPORT_COLOR_TEMP):
|
||||||
if brightness is None:
|
if brightness is None:
|
||||||
brightness = self._brightness
|
brightness = self._brightness
|
||||||
color_temp_value = (
|
mired = int(kwargs[ATTR_COLOR_TEMP])
|
||||||
(self._max_mired - self._min_mired)
|
if self._color_temp_reverse:
|
||||||
- (int(kwargs[ATTR_COLOR_TEMP]) - self._min_mired)
|
mired = self._max_mired - (mired - self._min_mired)
|
||||||
if self._color_temp_reverse
|
if mired < self._min_mired:
|
||||||
else (int(kwargs[ATTR_COLOR_TEMP]) - self._min_mired)
|
mired = self._min_mired
|
||||||
)
|
elif mired > self._max_mired:
|
||||||
|
mired = self._max_mired
|
||||||
color_temp = int(
|
color_temp = int(
|
||||||
self._upper_color_temp
|
self._upper_color_temp
|
||||||
- (self._upper_color_temp / (self._max_mired - self._min_mired))
|
- (self._upper_color_temp / (self._max_mired - self._min_mired))
|
||||||
* color_temp_value
|
* (mired - self._min_mired)
|
||||||
)
|
)
|
||||||
states[self._config.get(CONF_COLOR_MODE)] = MODE_WHITE
|
states[self._config.get(CONF_COLOR_MODE)] = MODE_WHITE
|
||||||
states[self._config.get(CONF_BRIGHTNESS)] = brightness
|
states[self._config.get(CONF_BRIGHTNESS)] = brightness
|
||||||
|
|||||||
Reference in new issue
Block a user