mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 02:49:40 +00:00
69 lines
2.0 KiB
Python
69 lines
2.0 KiB
Python
"""Update entity for VeSync.."""
|
|
|
|
from pyvesync.base_devices.vesyncbasedevice import VeSyncBaseDevice
|
|
|
|
from homeassistant.components.update import UpdateDeviceClass, UpdateEntity
|
|
from homeassistant.config_entries import ConfigEntry
|
|
from homeassistant.core import HomeAssistant, callback
|
|
from homeassistant.helpers.dispatcher import async_dispatcher_connect
|
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
|
|
|
from .const import DOMAIN, VS_COORDINATOR, VS_DEVICES, VS_DISCOVERY, VS_MANAGER
|
|
from .coordinator import VeSyncDataCoordinator
|
|
from .entity import VeSyncBaseEntity
|
|
|
|
|
|
async def async_setup_entry(
|
|
hass: HomeAssistant,
|
|
config_entry: ConfigEntry,
|
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
|
) -> None:
|
|
"""Set up update entity."""
|
|
coordinator = hass.data[DOMAIN][VS_COORDINATOR]
|
|
|
|
@callback
|
|
def discover(devices):
|
|
"""Add new devices to platform."""
|
|
_setup_entities(devices, async_add_entities, coordinator)
|
|
|
|
config_entry.async_on_unload(
|
|
async_dispatcher_connect(hass, VS_DISCOVERY.format(VS_DEVICES), discover)
|
|
)
|
|
|
|
_setup_entities(
|
|
hass.data[DOMAIN][VS_MANAGER].devices, async_add_entities, coordinator
|
|
)
|
|
|
|
|
|
@callback
|
|
def _setup_entities(
|
|
devices: list[VeSyncBaseDevice],
|
|
async_add_entities: AddConfigEntryEntitiesCallback,
|
|
coordinator: VeSyncDataCoordinator,
|
|
) -> None:
|
|
"""Check if device is a light and add entity."""
|
|
|
|
async_add_entities(
|
|
VeSyncDeviceUpdate(
|
|
device=device,
|
|
coordinator=coordinator,
|
|
)
|
|
for device in devices
|
|
)
|
|
|
|
|
|
class VeSyncDeviceUpdate(VeSyncBaseEntity, UpdateEntity):
|
|
"""Representation of a VeSync device update entity."""
|
|
|
|
_attr_device_class = UpdateDeviceClass.FIRMWARE
|
|
|
|
@property
|
|
def installed_version(self) -> str | None:
|
|
"""Return installed_version."""
|
|
return self.device.current_firm_version
|
|
|
|
@property
|
|
def latest_version(self) -> str | None:
|
|
"""Return latest_version."""
|
|
return self.device.latest_firm_version
|