Migrate elgato lights to use Kelvin (#132789)
parent
5062a7fec8
commit
e83a50b88d
|
@ -8,7 +8,7 @@ from elgato import ElgatoError
|
|||
|
||||
from homeassistant.components.light import (
|
||||
ATTR_BRIGHTNESS,
|
||||
ATTR_COLOR_TEMP,
|
||||
ATTR_COLOR_TEMP_KELVIN,
|
||||
ATTR_HS_COLOR,
|
||||
ColorMode,
|
||||
LightEntity,
|
||||
|
@ -19,6 +19,7 @@ from homeassistant.helpers.entity_platform import (
|
|||
AddEntitiesCallback,
|
||||
async_get_current_platform,
|
||||
)
|
||||
from homeassistant.util import color as color_util
|
||||
|
||||
from . import ElgatorConfigEntry
|
||||
from .const import SERVICE_IDENTIFY
|
||||
|
@ -49,8 +50,8 @@ class ElgatoLight(ElgatoEntity, LightEntity):
|
|||
"""Defines an Elgato Light."""
|
||||
|
||||
_attr_name = None
|
||||
_attr_min_mireds = 143
|
||||
_attr_max_mireds = 344
|
||||
_attr_min_color_temp_kelvin = 2900 # 344 Mireds
|
||||
_attr_max_color_temp_kelvin = 7000 # 143 Mireds
|
||||
|
||||
def __init__(self, coordinator: ElgatoDataUpdateCoordinator) -> None:
|
||||
"""Initialize Elgato Light."""
|
||||
|
@ -69,8 +70,8 @@ class ElgatoLight(ElgatoEntity, LightEntity):
|
|||
or self.coordinator.data.state.hue is not None
|
||||
):
|
||||
self._attr_supported_color_modes = {ColorMode.COLOR_TEMP, ColorMode.HS}
|
||||
self._attr_min_mireds = 153
|
||||
self._attr_max_mireds = 285
|
||||
self._attr_min_color_temp_kelvin = 3500 # 285 Mireds
|
||||
self._attr_max_color_temp_kelvin = 6500 # 153 Mireds
|
||||
|
||||
@property
|
||||
def brightness(self) -> int | None:
|
||||
|
@ -78,9 +79,11 @@ class ElgatoLight(ElgatoEntity, LightEntity):
|
|||
return round((self.coordinator.data.state.brightness * 255) / 100)
|
||||
|
||||
@property
|
||||
def color_temp(self) -> int | None:
|
||||
"""Return the CT color value in mireds."""
|
||||
return self.coordinator.data.state.temperature
|
||||
def color_temp_kelvin(self) -> int | None:
|
||||
"""Return the color temperature value in Kelvin."""
|
||||
if (mired_temperature := self.coordinator.data.state.temperature) is None:
|
||||
return None
|
||||
return color_util.color_temperature_mired_to_kelvin(mired_temperature)
|
||||
|
||||
@property
|
||||
def color_mode(self) -> str | None:
|
||||
|
@ -116,7 +119,7 @@ class ElgatoLight(ElgatoEntity, LightEntity):
|
|||
|
||||
async def async_turn_on(self, **kwargs: Any) -> None:
|
||||
"""Turn on the light."""
|
||||
temperature = kwargs.get(ATTR_COLOR_TEMP)
|
||||
temperature_kelvin = kwargs.get(ATTR_COLOR_TEMP_KELVIN)
|
||||
|
||||
hue = None
|
||||
saturation = None
|
||||
|
@ -133,12 +136,18 @@ class ElgatoLight(ElgatoEntity, LightEntity):
|
|||
if (
|
||||
brightness
|
||||
and ATTR_HS_COLOR not in kwargs
|
||||
and ATTR_COLOR_TEMP not in kwargs
|
||||
and ATTR_COLOR_TEMP_KELVIN not in kwargs
|
||||
and self.supported_color_modes
|
||||
and ColorMode.HS in self.supported_color_modes
|
||||
and self.color_mode == ColorMode.COLOR_TEMP
|
||||
):
|
||||
temperature = self.color_temp
|
||||
temperature_kelvin = self.color_temp_kelvin
|
||||
|
||||
temperature = (
|
||||
None
|
||||
if temperature_kelvin is None
|
||||
else color_util.color_temperature_kelvin_to_mired(temperature_kelvin)
|
||||
)
|
||||
|
||||
try:
|
||||
await self.coordinator.client.light(
|
||||
|
|
|
@ -11,10 +11,10 @@
|
|||
27.316,
|
||||
47.743,
|
||||
),
|
||||
'max_color_temp_kelvin': 6993,
|
||||
'max_color_temp_kelvin': 7000,
|
||||
'max_mireds': 344,
|
||||
'min_color_temp_kelvin': 2906,
|
||||
'min_mireds': 143,
|
||||
'min_color_temp_kelvin': 2900,
|
||||
'min_mireds': 142,
|
||||
'rgb_color': tuple(
|
||||
255,
|
||||
189,
|
||||
|
@ -43,10 +43,10 @@
|
|||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max_color_temp_kelvin': 6993,
|
||||
'max_color_temp_kelvin': 7000,
|
||||
'max_mireds': 344,
|
||||
'min_color_temp_kelvin': 2906,
|
||||
'min_mireds': 143,
|
||||
'min_color_temp_kelvin': 2900,
|
||||
'min_mireds': 142,
|
||||
'supported_color_modes': list([
|
||||
<ColorMode.COLOR_TEMP: 'color_temp'>,
|
||||
]),
|
||||
|
@ -126,9 +126,9 @@
|
|||
27.316,
|
||||
47.743,
|
||||
),
|
||||
'max_color_temp_kelvin': 6535,
|
||||
'max_color_temp_kelvin': 6500,
|
||||
'max_mireds': 285,
|
||||
'min_color_temp_kelvin': 3508,
|
||||
'min_color_temp_kelvin': 3500,
|
||||
'min_mireds': 153,
|
||||
'rgb_color': tuple(
|
||||
255,
|
||||
|
@ -159,9 +159,9 @@
|
|||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max_color_temp_kelvin': 6535,
|
||||
'max_color_temp_kelvin': 6500,
|
||||
'max_mireds': 285,
|
||||
'min_color_temp_kelvin': 3508,
|
||||
'min_color_temp_kelvin': 3500,
|
||||
'min_mireds': 153,
|
||||
'supported_color_modes': list([
|
||||
<ColorMode.COLOR_TEMP: 'color_temp'>,
|
||||
|
@ -243,9 +243,9 @@
|
|||
358.0,
|
||||
6.0,
|
||||
),
|
||||
'max_color_temp_kelvin': 6535,
|
||||
'max_color_temp_kelvin': 6500,
|
||||
'max_mireds': 285,
|
||||
'min_color_temp_kelvin': 3508,
|
||||
'min_color_temp_kelvin': 3500,
|
||||
'min_mireds': 153,
|
||||
'rgb_color': tuple(
|
||||
255,
|
||||
|
@ -276,9 +276,9 @@
|
|||
}),
|
||||
'area_id': None,
|
||||
'capabilities': dict({
|
||||
'max_color_temp_kelvin': 6535,
|
||||
'max_color_temp_kelvin': 6500,
|
||||
'max_mireds': 285,
|
||||
'min_color_temp_kelvin': 3508,
|
||||
'min_color_temp_kelvin': 3500,
|
||||
'min_mireds': 153,
|
||||
'supported_color_modes': list([
|
||||
<ColorMode.COLOR_TEMP: 'color_temp'>,
|
||||
|
|
Loading…
Reference in New Issue