Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for monitoring Dremel 3D Printer binary sensors."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Callable
6 from dataclasses import dataclass
7 
8 from dremel3dpy import Dremel3DPrinter
9 
11  BinarySensorDeviceClass,
12  BinarySensorEntity,
13  BinarySensorEntityDescription,
14 )
15 from homeassistant.core import HomeAssistant
16 from homeassistant.helpers.entity_platform import AddEntitiesCallback
17 
18 from .coordinator import DremelConfigEntry
19 from .entity import Dremel3DPrinterEntity
20 
21 
22 @dataclass(frozen=True, kw_only=True)
24  """Describes a Dremel 3D Printer binary sensor."""
25 
26  value_fn: Callable[[Dremel3DPrinter], bool]
27 
28 
29 BINARY_SENSOR_TYPES: tuple[Dremel3DPrinterBinarySensorEntityDescription, ...] = (
31  key="door",
32  device_class=BinarySensorDeviceClass.DOOR,
33  value_fn=lambda api: api.is_door_open(),
34  ),
36  key="running",
37  device_class=BinarySensorDeviceClass.RUNNING,
38  value_fn=lambda api: api.is_running(),
39  ),
40 )
41 
42 
44  hass: HomeAssistant,
45  config_entry: DremelConfigEntry,
46  async_add_entities: AddEntitiesCallback,
47 ) -> None:
48  """Set up the available Dremel binary sensors."""
50  Dremel3DPrinterBinarySensor(config_entry.runtime_data, description)
51  for description in BINARY_SENSOR_TYPES
52  )
53 
54 
56  """Representation of a Dremel 3D Printer door binary sensor."""
57 
58  entity_description: Dremel3DPrinterBinarySensorEntityDescription
59 
60  @property
61  def is_on(self) -> bool:
62  """Return True if door is open."""
63  return self.entity_descriptionentity_description.value_fn(self._api_api)
None async_setup_entry(HomeAssistant hass, DremelConfigEntry config_entry, AddEntitiesCallback async_add_entities)