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:
@@ -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
|
||||||
|
Reference in New Issue
Block a user