Merge pull request #611 from pabigot/pabigot/20211031a

Fix color temperature to use correct conversion and clamp to allowed range
This commit is contained in:
rospogrigio
2022-03-31 12:30:30 +02:00
committed by GitHub

View File

@@ -33,7 +33,6 @@ from .const import (
_LOGGER = logging.getLogger(__name__) _LOGGER = logging.getLogger(__name__)
MIRED_TO_KELVIN_CONST = 1000000
DEFAULT_MIN_KELVIN = 2700 # MIRED 370 DEFAULT_MIN_KELVIN = 2700 # MIRED 370
DEFAULT_MAX_KELVIN = 6500 # MIRED 153 DEFAULT_MAX_KELVIN = 6500 # MIRED 153
@@ -154,13 +153,11 @@ class LocaltuyaLight(LocalTuyaEntity, LightEntity):
CONF_BRIGHTNESS_UPPER, DEFAULT_UPPER_BRIGHTNESS CONF_BRIGHTNESS_UPPER, DEFAULT_UPPER_BRIGHTNESS
) )
self._upper_color_temp = self._upper_brightness self._upper_color_temp = self._upper_brightness
self._max_mired = round( self._max_mired = color_util.color_temperature_kelvin_to_mired(
MIRED_TO_KELVIN_CONST self._config.get(CONF_COLOR_TEMP_MIN_KELVIN, DEFAULT_MIN_KELVIN)
/ self._config.get(CONF_COLOR_TEMP_MIN_KELVIN, DEFAULT_MIN_KELVIN)
) )
self._min_mired = round( self._min_mired = color_util.color_temperature_kelvin_to_mired(
MIRED_TO_KELVIN_CONST self._config.get(CONF_COLOR_TEMP_MAX_KELVIN, DEFAULT_MAX_KELVIN)
/ self._config.get(CONF_COLOR_TEMP_MAX_KELVIN, DEFAULT_MAX_KELVIN)
) )
self._color_temp_reverse = self._config.get( self._color_temp_reverse = self._config.get(
CONF_COLOR_TEMP_REVERSE, DEFAULT_COLOR_TEMP_REVERSE CONF_COLOR_TEMP_REVERSE, DEFAULT_COLOR_TEMP_REVERSE
@@ -380,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