1 """Base class for the La Marzocco entities."""
3 from collections.abc
import Callable
4 from dataclasses
import dataclass
6 from pylamarzocco.const
import FirmwareType
7 from pylamarzocco.lm_machine
import LaMarzoccoMachine
14 from .const
import DOMAIN
15 from .coordinator
import LaMarzoccoUpdateCoordinator
18 @dataclass(frozen=True, kw_only=True)
20 """Description for all LM entities."""
22 available_fn: Callable[[LaMarzoccoMachine], bool] =
lambda _:
True
23 supported_fn: Callable[[LaMarzoccoUpdateCoordinator], bool] =
lambda _:
True
27 CoordinatorEntity[LaMarzoccoUpdateCoordinator],
29 """Common elements for all entities."""
31 _attr_has_entity_name =
True
35 coordinator: LaMarzoccoUpdateCoordinator,
38 """Initialize the entity."""
40 device = coordinator.device
43 identifiers={(DOMAIN, device.serial_number)},
45 manufacturer=
"La Marzocco",
46 model=device.full_model_name,
47 model_id=device.model,
48 serial_number=device.serial_number,
49 sw_version=device.firmware[FirmwareType.MACHINE].current_version,
51 if coordinator.config_entry.data.get(CONF_ADDRESS):
56 CONNECTION_NETWORK_MAC,
57 coordinator.config_entry.data[CONF_ADDRESS],
65 """Common elements for all entities."""
67 entity_description: LaMarzoccoEntityDescription
71 """Return True if entity is available."""
78 coordinator: LaMarzoccoUpdateCoordinator,
79 entity_description: LaMarzoccoEntityDescription,
81 """Initialize the entity."""
82 super().
__init__(coordinator, entity_description.key)
None __init__(self, LaMarzoccoUpdateCoordinator coordinator, str key)
None __init__(self, LaMarzoccoUpdateCoordinator coordinator, LaMarzoccoEntityDescription entity_description)