Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Binary Sensor platform for La Marzocco espresso machines."""
2 
3 from collections.abc import Callable
4 from dataclasses import dataclass
5 
6 from pylamarzocco.models import LaMarzoccoMachineConfig
7 
9  BinarySensorDeviceClass,
10  BinarySensorEntity,
11  BinarySensorEntityDescription,
12 )
13 from homeassistant.const import EntityCategory
14 from homeassistant.core import HomeAssistant
15 from homeassistant.helpers.entity_platform import AddEntitiesCallback
16 
17 from .coordinator import LaMarzoccoConfigEntry
18 from .entity import LaMarzoccoEntity, LaMarzoccoEntityDescription
19 
20 
21 @dataclass(frozen=True, kw_only=True)
23  LaMarzoccoEntityDescription,
24  BinarySensorEntityDescription,
25 ):
26  """Description of a La Marzocco binary sensor."""
27 
28  is_on_fn: Callable[[LaMarzoccoMachineConfig], bool]
29 
30 
31 ENTITIES: tuple[LaMarzoccoBinarySensorEntityDescription, ...] = (
33  key="water_tank",
34  translation_key="water_tank",
35  device_class=BinarySensorDeviceClass.PROBLEM,
36  is_on_fn=lambda config: not config.water_contact,
37  entity_category=EntityCategory.DIAGNOSTIC,
38  supported_fn=lambda coordinator: coordinator.local_connection_configured,
39  ),
41  key="brew_active",
42  translation_key="brew_active",
43  device_class=BinarySensorDeviceClass.RUNNING,
44  is_on_fn=lambda config: config.brew_active,
45  available_fn=lambda device: device.websocket_connected,
46  entity_category=EntityCategory.DIAGNOSTIC,
47  ),
49  key="backflush_enabled",
50  translation_key="backflush_enabled",
51  device_class=BinarySensorDeviceClass.RUNNING,
52  is_on_fn=lambda config: config.backflush_enabled,
53  entity_category=EntityCategory.DIAGNOSTIC,
54  ),
55 )
56 
57 
59  hass: HomeAssistant,
60  entry: LaMarzoccoConfigEntry,
61  async_add_entities: AddEntitiesCallback,
62 ) -> None:
63  """Set up binary sensor entities."""
64  coordinator = entry.runtime_data
65 
67  LaMarzoccoBinarySensorEntity(coordinator, description)
68  for description in ENTITIES
69  if description.supported_fn(coordinator)
70  )
71 
72 
74  """Binary Sensor representing espresso machine water reservoir status."""
75 
76  entity_description: LaMarzoccoBinarySensorEntityDescription
77 
78  @property
79  def is_on(self) -> bool:
80  """Return true if the binary sensor is on."""
81  return self.entity_descriptionentity_description.is_on_fn(self.coordinator.device.config)
None async_setup_entry(HomeAssistant hass, LaMarzoccoConfigEntry entry, AddEntitiesCallback async_add_entities)