old_contents: """Coordinator for Roku."""
  from __future__ import annotations
  
  from datetime import datetime, timedelta
  import logging
  
  from rokuecp import Roku, RokuError
  from rokuecp.models import Device
  
  from homeassistant.core import HomeAssistant
  from homeassistant.helpers.aiohttp_client import async_get_clientsession
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
  from homeassistant.util.dt import utcnow
  
  from .const import DOMAIN
  
  SCAN_INTERVAL = timedelta(seconds=15)
  _LOGGER = logging.getLogger(__name__)
  
  
  class RokuDataUpdateCoordinator(DataUpdateCoordinator[Device]):
      """Class to manage fetching Roku data."""
  
      last_full_update: datetime | None
      roku: Roku
  
      def __init__(
          self,
          hass: HomeAssistant,
          *,
          host: str,
      ) -> None:
          """Initialize global Roku data updater."""
          self.roku = Roku(host=host, session=async_get_clientsession(hass))
  
          self.full_update_interval = timedelta(minutes=15)
          self.last_full_update = None
  
          super().__init__(
              hass,
              _LOGGER,
              name=DOMAIN,
              update_interval=SCAN_INTERVAL,
          )
  
      async def _async_update_data(self) -> Device:
          """Fetch data from Roku."""
          full_update = self.last_full_update is None or utcnow() >= (
              self.last_full_update + self.full_update_interval
          )
  
          try:
              data = await self.roku.update(full_update=full_update)
  
              if full_update:
                  self.last_full_update = utcnow()
  
              return data
          except RokuError as error:
              raise UpdateFailed(f"Invalid response from API: {error}") from error
  
new_contents: """Coordinator for Roku."""
  from __future__ import annotations
  
  from datetime import datetime, timedelta
  import logging
  
  from rokuecp import Roku, RokuError
  from rokuecp.models import Device
  
  from homeassistant.core import HomeAssistant
  from homeassistant.helpers.aiohttp_client import async_get_clientsession
  from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
  from homeassistant.util.dt import utcnow
  
  from .const import DOMAIN
  
  SCAN_INTERVAL = timedelta(seconds=10)
  _LOGGER = logging.getLogger(__name__)
  
  
  class RokuDataUpdateCoordinator(DataUpdateCoordinator[Device]):
      """Class to manage fetching Roku data."""
  
      last_full_update: datetime | None
      roku: Roku
  
      def __init__(
          self,
          hass: HomeAssistant,
          *,
          host: str,
      ) -> None:
          """Initialize global Roku data updater."""
          self.roku = Roku(host=host, session=async_get_clientsession(hass))
  
          self.full_update_interval = timedelta(minutes=15)
          self.last_full_update = None
  
          super().__init__(
              hass,
              _LOGGER,
              name=DOMAIN,
              update_interval=SCAN_INTERVAL,
          )
  
      async def _async_update_data(self) -> Device:
          """Fetch data from Roku."""
          full_update = self.last_full_update is None or utcnow() >= (
              self.last_full_update + self.full_update_interval
          )
  
          try:
              data = await self.roku.update(full_update=full_update)
  
              if full_update:
                  self.last_full_update = utcnow()
  
              return data
          except RokuError as error:
              raise UpdateFailed(f"Invalid response from API: {error}") from error
  
subject: Reduce roku poll rate by 5s (#63952)