From deded19bb3f42098dc91d05a62ac1f33480bfc0b Mon Sep 17 00:00:00 2001 From: epenet <6771947+epenet@users.noreply.github.com> Date: Wed, 22 May 2024 20:35:34 +0200 Subject: [PATCH] Add available and state to SamsungTV remote (#117909) * Add available and state to SamsungTV remote * Align turn_off * Fix merge * Fix merge (again) --- homeassistant/components/samsungtv/entity.py | 12 ++++++++++++ homeassistant/components/samsungtv/media_player.py | 12 ------------ homeassistant/components/samsungtv/remote.py | 9 +++++++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/homeassistant/components/samsungtv/entity.py b/homeassistant/components/samsungtv/entity.py index 8bf2c2b864b..0155d927132 100644 --- a/homeassistant/components/samsungtv/entity.py +++ b/homeassistant/components/samsungtv/entity.py @@ -51,6 +51,18 @@ class SamsungTVEntity(CoordinatorEntity[SamsungTVDataUpdateCoordinator], Entity) } self._turn_on_action = PluggableAction(self.async_write_ha_state) + @property + def available(self) -> bool: + """Return the availability of the device.""" + if self._bridge.auth_failed: + return False + return ( + self.coordinator.is_on + or bool(self._turn_on_action) + or self._mac is not None + or self._bridge.power_off_in_progress + ) + async def async_added_to_hass(self) -> None: """Connect and subscribe to dispatcher signals and state updates.""" await super().async_added_to_hass() diff --git a/homeassistant/components/samsungtv/media_player.py b/homeassistant/components/samsungtv/media_player.py index 6b9bd432789..960b69f71e3 100644 --- a/homeassistant/components/samsungtv/media_player.py +++ b/homeassistant/components/samsungtv/media_player.py @@ -297,18 +297,6 @@ class SamsungTVDevice(SamsungTVEntity, MediaPlayerEntity): return await self._bridge.async_send_keys(keys) - @property - def available(self) -> bool: - """Return the availability of the device.""" - if self._bridge.auth_failed: - return False - return ( - self.state == MediaPlayerState.ON - or bool(self._turn_on_action) - or self._mac is not None - or self._bridge.power_off_in_progress - ) - async def async_turn_off(self) -> None: """Turn off media player.""" await super()._async_turn_off() diff --git a/homeassistant/components/samsungtv/remote.py b/homeassistant/components/samsungtv/remote.py index f32b107eaee..afbac341226 100644 --- a/homeassistant/components/samsungtv/remote.py +++ b/homeassistant/components/samsungtv/remote.py @@ -6,7 +6,7 @@ from collections.abc import Iterable from typing import Any from homeassistant.components.remote import ATTR_NUM_REPEATS, RemoteEntity -from homeassistant.core import HomeAssistant +from homeassistant.core import HomeAssistant, callback from homeassistant.helpers.entity_platform import AddEntitiesCallback from . import SamsungTVConfigEntry @@ -28,7 +28,12 @@ class SamsungTVRemote(SamsungTVEntity, RemoteEntity): """Device that sends commands to a SamsungTV.""" _attr_name = None - _attr_should_poll = False + + @callback + def _handle_coordinator_update(self) -> None: + """Handle data update.""" + self._attr_is_on = self.coordinator.is_on + self.async_write_ha_state() async def async_turn_off(self, **kwargs: Any) -> None: """Turn the device off."""