async def power(self, powered: bool) -> None:
"""Handle POWER command on the player."""
+ logger = self.provider.logger.getChild(self.player_id)
+ logger.info("Received POWER command on player %s", self.display_name)
+
try:
device_info = await self.roku.update()
app_running = False
app_running = device_info.app.app_id == self.provider.config.get_value(
CONF_ROKU_APP_ID
)
+ except Exception:
+ self.logger.error("Failed to get app state on: %s", self.name)
+ try:
# There's no real way to "Power" on the app since device wake up / app start
# is handled by The roku once it receives the Play Media request
if not powered:
if app_running:
await self.roku.remote("home")
await self.roku.remote("power")
-
- logger = self.provider.logger.getChild(self.player_id)
- logger.info("Received POWER command on player %s", self.display_name)
- # update the player state in the player manager
- self.update_state()
except Exception:
self.logger.error("Failed to change Power state on: %s", self.name)
+ # update the player state in the player manager
+ self.update_state()
+
async def volume_mute(self, muted: bool) -> None:
"""Handle VOLUME MUTE command on the player."""
await self.roku.remote("volume_mute")
logger = self.provider.logger.getChild(self.player_id)
logger.info("Received PAUSE command on player %s", self.display_name)
- self._attr_playback_state = PlaybackState.PAUSED
self.update_state()
async def play_media(self, media: PlayerMedia) -> None:
if "position" in media_state:
try:
- self._attr_elapsed_time = (
- int(media_state["position"].split(" ", 1)[0]) / 1000
- )
+ position = int(media_state["position"].split(" ", 1)[0]) / 1000
+ if self.elapsed_time is not None:
+ if abs(position - self.elapsed_time) > 10:
+ self._attr_current_media = self.queued
+ self._attr_elapsed_time = position
self._attr_elapsed_time_last_updated = time.time()
except Exception:
self.logger.info(
"Playback Position received from %s Was Invalid", self.name
)
+ self.update_state()
+
if not self.current_media or self._attr_playback_state != PlaybackState.PLAYING:
return
album_name = self.current_media.album or ""
song_name = self.current_media.title or ""
artist_name = self.current_media.artist or ""
- if app_running:
+ if app_running and self.flow_mode:
await self.roku_input(
{
"u": "",