1 """Support for EZVIZ sensors."""
3 from __future__
import annotations
7 from pyezviz
import HTTPError, PyEzvizError
12 UpdateEntityDescription,
20 from .const
import DATA_COORDINATOR, DOMAIN
21 from .coordinator
import EzvizDataUpdateCoordinator
22 from .entity
import EzvizEntity
28 device_class=UpdateDeviceClass.FIRMWARE,
33 hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback
35 """Set up EZVIZ sensors based on a config entry."""
36 coordinator: EzvizDataUpdateCoordinator = hass.data[DOMAIN][entry.entry_id][
42 for camera
in coordinator.data
43 for sensor, value
in coordinator.data[camera].items()
44 if sensor
in UPDATE_ENTITY_TYPES.key
50 """Representation of a EZVIZ Update entity."""
52 _attr_supported_features = (
53 UpdateEntityFeature.INSTALL
54 | UpdateEntityFeature.PROGRESS
55 | UpdateEntityFeature.RELEASE_NOTES
60 coordinator: EzvizDataUpdateCoordinator,
63 description: UpdateEntityDescription,
65 """Initialize the sensor."""
66 super().
__init__(coordinator, serial)
72 """Version installed and in use."""
77 """Update installation progress."""
82 """Latest version available for install."""
83 if self.
datadatadata[
"upgrade_available"]:
84 return self.
datadatadata[
"latest_firmware_info"][
"version"]
89 """Return full release notes."""
90 if self.
datadatadata[
"latest_firmware_info"]:
91 return self.
datadatadata[
"latest_firmware_info"].
get(
"desc")
96 """Update installation progress."""
97 if self.
datadatadata[
"upgrade_in_progress"]:
98 return self.
datadatadata[
"upgrade_percent"]
102 self, version: str |
None, backup: bool, **kwargs: Any
104 """Install an update."""
106 await self.
hasshasshass.async_add_executor_job(
107 self.coordinator.ezviz_client.upgrade_device, self.
_serial_serial
110 except (HTTPError, PyEzvizError)
as err:
112 f
"Failed to update firmware on {self.name}"
dict[str, Any] data(self)
int|None update_percentage(self)
str|None latest_version(self)
None async_install(self, str|None version, bool backup, **Any kwargs)
None __init__(self, EzvizDataUpdateCoordinator coordinator, str serial, str sensor, UpdateEntityDescription description)
str|None installed_version(self)
str|None release_notes(self)
str|None installed_version(self)
web.Response get(self, web.Request request, str config_key)
None async_setup_entry(HomeAssistant hass, ConfigEntry entry, AddEntitiesCallback async_add_entities)