Fix ZHA group not setting the correct color mode (#74687)

* Fix ZHA group not setting the correct color mode

* Changed to use _attr_color_mode
This commit is contained in:
TheJulianJES 2022-07-08 18:47:59 +02:00 committed by GitHub
parent 08d8304a52
commit 1d69e631b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -141,7 +141,7 @@ class BaseLight(LogMixin, light.LightEntity):
self._color_channel = None self._color_channel = None
self._identify_channel = None self._identify_channel = None
self._default_transition = None self._default_transition = None
self._color_mode = ColorMode.UNKNOWN # Set by sub classes self._attr_color_mode = ColorMode.UNKNOWN # Set by sub classes
@property @property
def extra_state_attributes(self) -> dict[str, Any]: def extra_state_attributes(self) -> dict[str, Any]:
@ -159,11 +159,6 @@ class BaseLight(LogMixin, light.LightEntity):
return False return False
return self._state return self._state
@property
def color_mode(self):
"""Return the color mode of this light."""
return self._color_mode
@property @property
def brightness(self): def brightness(self):
"""Return the brightness of this light.""" """Return the brightness of this light."""
@ -309,7 +304,7 @@ class BaseLight(LogMixin, light.LightEntity):
if isinstance(result, Exception) or result[1] is not Status.SUCCESS: if isinstance(result, Exception) or result[1] is not Status.SUCCESS:
self.debug("turned on: %s", t_log) self.debug("turned on: %s", t_log)
return return
self._color_mode = ColorMode.COLOR_TEMP self._attr_color_mode = ColorMode.COLOR_TEMP
self._color_temp = temperature self._color_temp = temperature
self._hs_color = None self._hs_color = None
@ -323,7 +318,7 @@ class BaseLight(LogMixin, light.LightEntity):
if isinstance(result, Exception) or result[1] is not Status.SUCCESS: if isinstance(result, Exception) or result[1] is not Status.SUCCESS:
self.debug("turned on: %s", t_log) self.debug("turned on: %s", t_log)
return return
self._color_mode = ColorMode.HS self._attr_color_mode = ColorMode.HS
self._hs_color = hs_color self._hs_color = hs_color
self._color_temp = None self._color_temp = None
@ -451,13 +446,13 @@ class Light(BaseLight, ZhaEntity):
self._attr_supported_color_modes self._attr_supported_color_modes
) )
if len(self._attr_supported_color_modes) == 1: if len(self._attr_supported_color_modes) == 1:
self._color_mode = next(iter(self._attr_supported_color_modes)) self._attr_color_mode = next(iter(self._attr_supported_color_modes))
else: # Light supports color_temp + hs, determine which mode the light is in else: # Light supports color_temp + hs, determine which mode the light is in
assert self._color_channel assert self._color_channel
if self._color_channel.color_mode == Color.ColorMode.Color_temperature: if self._color_channel.color_mode == Color.ColorMode.Color_temperature:
self._color_mode = ColorMode.COLOR_TEMP self._attr_color_mode = ColorMode.COLOR_TEMP
else: else:
self._color_mode = ColorMode.HS self._attr_color_mode = ColorMode.HS
if self._identify_channel: if self._identify_channel:
self._supported_features |= light.LightEntityFeature.FLASH self._supported_features |= light.LightEntityFeature.FLASH
@ -518,7 +513,7 @@ class Light(BaseLight, ZhaEntity):
if "off_brightness" in last_state.attributes: if "off_brightness" in last_state.attributes:
self._off_brightness = last_state.attributes["off_brightness"] self._off_brightness = last_state.attributes["off_brightness"]
if "color_mode" in last_state.attributes: if "color_mode" in last_state.attributes:
self._color_mode = ColorMode(last_state.attributes["color_mode"]) self._attr_color_mode = ColorMode(last_state.attributes["color_mode"])
if "color_temp" in last_state.attributes: if "color_temp" in last_state.attributes:
self._color_temp = last_state.attributes["color_temp"] self._color_temp = last_state.attributes["color_temp"]
if "hs_color" in last_state.attributes: if "hs_color" in last_state.attributes:
@ -558,13 +553,13 @@ class Light(BaseLight, ZhaEntity):
if (color_mode := results.get("color_mode")) is not None: if (color_mode := results.get("color_mode")) is not None:
if color_mode == Color.ColorMode.Color_temperature: if color_mode == Color.ColorMode.Color_temperature:
self._color_mode = ColorMode.COLOR_TEMP self._attr_color_mode = ColorMode.COLOR_TEMP
color_temp = results.get("color_temperature") color_temp = results.get("color_temperature")
if color_temp is not None and color_mode: if color_temp is not None and color_mode:
self._color_temp = color_temp self._color_temp = color_temp
self._hs_color = None self._hs_color = None
else: else:
self._color_mode = ColorMode.HS self._attr_color_mode = ColorMode.HS
color_x = results.get("current_x") color_x = results.get("current_x")
color_y = results.get("current_y") color_y = results.get("current_y")
if color_x is not None and color_y is not None: if color_x is not None and color_y is not None:
@ -650,7 +645,7 @@ class LightGroup(BaseLight, ZhaGroupEntity):
CONF_DEFAULT_LIGHT_TRANSITION, CONF_DEFAULT_LIGHT_TRANSITION,
0, 0,
) )
self._color_mode = None self._attr_color_mode = None
async def async_added_to_hass(self): async def async_added_to_hass(self):
"""Run when about to be added to hass.""" """Run when about to be added to hass."""