1 """Support for Fully Kiosk Browser image."""
3 from __future__
import annotations
5 from collections.abc
import Callable, Coroutine
6 from dataclasses
import dataclass
9 from fullykiosk
import FullyKiosk, FullyKioskError
17 from .
import FullyKioskConfigEntry
18 from .coordinator
import FullyKioskDataUpdateCoordinator
19 from .entity
import FullyKioskEntity
22 @dataclass(frozen=True, kw_only=True)
24 """Fully Kiosk Browser image entity description."""
26 image_fn: Callable[[FullyKiosk], Coroutine[Any, Any, bytes]]
29 IMAGES: tuple[FullyImageEntityDescription, ...] = (
32 translation_key=
"screenshot",
33 image_fn=
lambda fully: fully.getScreenshot(),
40 entry: FullyKioskConfigEntry,
41 async_add_entities: AddEntitiesCallback,
43 """Set up the Fully Kiosk Browser image entities."""
44 coordinator = entry.runtime_data
51 """Implement the image entity for Fully Kiosk Browser."""
53 entity_description: FullyImageEntityDescription
54 _attr_content_type =
"image/png"
58 coordinator: FullyKioskDataUpdateCoordinator,
59 description: FullyImageEntityDescription,
61 """Initialize the entity."""
62 FullyKioskEntity.__init__(self, coordinator)
63 ImageEntity.__init__(self, coordinator.hass)
65 self.
_attr_unique_id_attr_unique_id = f
"{coordinator.data['deviceID']}-{description.key}"
68 """Return bytes of image."""
70 image_bytes = await self.
entity_descriptionentity_description.image_fn(self.coordinator.fully)
71 except FullyKioskError
as err:
None __init__(self, FullyKioskDataUpdateCoordinator coordinator, FullyImageEntityDescription description)
bytes|None async_image(self)
None async_setup_entry(HomeAssistant hass, FullyKioskConfigEntry entry, AddEntitiesCallback async_add_entities)