Set hyperion icon to lightbulb when off (#45351)

Co-authored-by: Dermot Duffy <dermot.duffy@gmail.com>
This commit is contained in:
starkillerOG 2021-01-26 10:46:54 +01:00 committed by GitHub
parent 3647d549b0
commit c16fd0a1ac
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 8 deletions

View File

@ -318,7 +318,6 @@ class HyperionLight(LightEntity):
self._brightness: int = 255 self._brightness: int = 255
self._rgb_color: Sequence[int] = DEFAULT_COLOR self._rgb_color: Sequence[int] = DEFAULT_COLOR
self._effect: str = KEY_EFFECT_SOLID self._effect: str = KEY_EFFECT_SOLID
self._icon: str = ICON_LIGHTBULB
self._effect_list: List[str] = [] self._effect_list: List[str] = []
@ -350,7 +349,12 @@ class HyperionLight(LightEntity):
@property @property
def icon(self) -> str: def icon(self) -> str:
"""Return state specific icon.""" """Return state specific icon."""
return self._icon if self.is_on:
if self.effect in const.KEY_COMPONENTID_EXTERNAL_SOURCES:
return ICON_EXTERNAL_SOURCE
if self.effect != KEY_EFFECT_SOLID:
return ICON_EFFECT
return ICON_LIGHTBULB
@property @property
def effect(self) -> str: def effect(self) -> str:
@ -516,12 +520,6 @@ class HyperionLight(LightEntity):
self._rgb_color = rgb_color self._rgb_color = rgb_color
if effect is not None: if effect is not None:
self._effect = effect self._effect = effect
if effect == KEY_EFFECT_SOLID:
self._icon = ICON_LIGHTBULB
elif effect in const.KEY_COMPONENTID_EXTERNAL_SOURCES:
self._icon = ICON_EXTERNAL_SOURCE
else:
self._icon = ICON_EFFECT
def _update_components(self, _: Optional[Dict[str, Any]] = None) -> None: def _update_components(self, _: Optional[Dict[str, Any]] = None) -> None:
"""Update Hyperion components.""" """Update Hyperion components."""

View File

@ -629,6 +629,11 @@ async def test_light_async_turn_off(hass: HomeAssistantType) -> None:
} }
) )
_call_registered_callback(client, "components-update")
entity_state = hass.states.get(TEST_ENTITY_ID_1)
assert entity_state
assert entity_state.attributes["icon"] == hyperion_light.ICON_LIGHTBULB
# No calls if no state loaded. # No calls if no state loaded.
client.has_loaded_state = False client.has_loaded_state = False
client.async_send_set_component = AsyncMock(return_value=True) client.async_send_set_component = AsyncMock(return_value=True)