1 """Platform for image integration."""
3 from __future__
import annotations
5 from collections.abc
import Callable
6 from dataclasses
import dataclass
7 from functools
import partial
9 from devolo_plc_api
import wifi_qr_code
10 from devolo_plc_api.device_api
import WifiGuestAccessGet
18 from .
import DevoloHomeNetworkConfigEntry
19 from .const
import IMAGE_GUEST_WIFI, SWITCH_GUEST_WIFI
20 from .coordinator
import DevoloDataUpdateCoordinator
21 from .entity
import DevoloCoordinatorEntity
26 @dataclass(frozen=True, kw_only=True)
28 """Describes devolo image entity."""
30 image_func: Callable[[WifiGuestAccessGet], bytes]
33 IMAGE_TYPES: dict[str, DevoloImageEntityDescription] = {
36 entity_category=EntityCategory.DIAGNOSTIC,
37 image_func=partial(wifi_qr_code, omitsize=
True),
44 entry: DevoloHomeNetworkConfigEntry,
45 async_add_entities: AddEntitiesCallback,
47 """Get all devices and sensors and setup them via config entry."""
48 coordinators = entry.runtime_data.coordinators
50 entities: list[ImageEntity] = []
54 coordinators[SWITCH_GUEST_WIFI],
55 IMAGE_TYPES[IMAGE_GUEST_WIFI],
62 """Representation of a devolo image."""
64 _attr_content_type =
"image/svg+xml"
68 entry: DevoloHomeNetworkConfigEntry,
69 coordinator: DevoloDataUpdateCoordinator[WifiGuestAccessGet],
70 description: DevoloImageEntityDescription,
72 """Initialize entity."""
73 self.entity_description: DevoloImageEntityDescription = description
75 ImageEntity.__init__(self, coordinator.hass)
77 self.
_data_data = self.coordinator.data
81 """Handle updated data from the coordinator."""
83 self.
_data_data.ssid != self.coordinator.data.ssid
84 or self.
_data_data.key != self.coordinator.data.key
86 self.
_data_data = self.coordinator.data
91 """Return bytes of image."""
92 return self.entity_description.image_func(self.coordinator.data)
None _handle_coordinator_update(self)
bytes|None async_image(self)
None __init__(self, DevoloHomeNetworkConfigEntry entry, DevoloDataUpdateCoordinator[WifiGuestAccessGet] coordinator, DevoloImageEntityDescription description)
None async_setup_entry(HomeAssistant hass, DevoloHomeNetworkConfigEntry entry, AddEntitiesCallback async_add_entities)