1 """Update entities for Netgear devices."""
3 from __future__
import annotations
18 from .const
import DOMAIN, KEY_COORDINATOR_FIRMWARE, KEY_ROUTER
19 from .entity
import NetgearRouterCoordinatorEntity
20 from .router
import NetgearRouter
22 LOGGER = logging.getLogger(__name__)
26 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
28 """Set up update entities for Netgear component."""
29 router = hass.data[DOMAIN][entry.entry_id][KEY_ROUTER]
30 coordinator = hass.data[DOMAIN][entry.entry_id][KEY_COORDINATOR_FIRMWARE]
37 """Update entity for a Netgear device."""
39 _attr_device_class = UpdateDeviceClass.FIRMWARE
40 _attr_supported_features = UpdateEntityFeature.INSTALL
44 coordinator: DataUpdateCoordinator,
45 router: NetgearRouter,
47 """Initialize a Netgear device."""
48 super().
__init__(coordinator, router)
53 """Version currently in use."""
54 if self.coordinator.data
is not None:
55 return self.coordinator.data.get(
"CurrentVersion")
60 """Latest version available for install."""
61 if self.coordinator.data
is not None:
62 new_version = self.coordinator.data.get(
"NewVersion")
63 if new_version
is not None and not new_version.startswith(
71 """Release summary."""
72 if self.coordinator.data
is not None:
73 return self.coordinator.data.get(
"ReleaseNote")
77 self, version: str |
None, backup: bool, **kwargs: Any
79 """Install the latest firmware version."""
80 await self.
_router_router.async_update_new_firmware()
84 """Update the Netgear device."""
str|None release_summary(self)
None async_update_device(self)
str|None latest_version(self)
None async_install(self, str|None version, bool backup, **Any kwargs)
None __init__(self, DataUpdateCoordinator coordinator, NetgearRouter router)
str|None installed_version(self)
str|None installed_version(self)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)