Home Assistant Unofficial Reference 2024.12.1
binary_sensor.py
Go to the documentation of this file.
1 """Support for showing random states."""
2 
3 from __future__ import annotations
4 
5 from collections.abc import Mapping
6 from random import getrandbits
7 from typing import Any
8 
9 import voluptuous as vol
10 
12  DEVICE_CLASSES_SCHEMA,
13  PLATFORM_SCHEMA as BINARY_SENSOR_PLATFORM_SCHEMA,
14  BinarySensorEntity,
15 )
16 from homeassistant.config_entries import ConfigEntry
17 from homeassistant.const import CONF_DEVICE_CLASS, CONF_NAME
18 from homeassistant.core import HomeAssistant
20 from homeassistant.helpers.entity_platform import AddEntitiesCallback
21 from homeassistant.helpers.typing import ConfigType, DiscoveryInfoType
22 
23 DEFAULT_NAME = "Random binary sensor"
24 
25 PLATFORM_SCHEMA = BINARY_SENSOR_PLATFORM_SCHEMA.extend(
26  {
27  vol.Optional(CONF_NAME, default=DEFAULT_NAME): cv.string,
28  vol.Optional(CONF_DEVICE_CLASS): DEVICE_CLASSES_SCHEMA,
29  }
30 )
31 
32 
34  hass: HomeAssistant,
35  config: ConfigType,
36  async_add_entities: AddEntitiesCallback,
37  discovery_info: DiscoveryInfoType | None = None,
38 ) -> None:
39  """Set up the Random binary sensor."""
40 
41  async_add_entities([RandomBinarySensor(config)], True)
42 
43 
45  hass: HomeAssistant,
46  config_entry: ConfigEntry,
47  async_add_entities: AddEntitiesCallback,
48 ) -> None:
49  """Initialize config entry."""
51  [RandomBinarySensor(config_entry.options, config_entry.entry_id)], True
52  )
53 
54 
56  """Representation of a Random binary sensor."""
57 
58  _attr_translation_key = "random"
59 
60  def __init__(self, config: Mapping[str, Any], entry_id: str | None = None) -> None:
61  """Initialize the Random binary sensor."""
62  self._attr_name_attr_name = config[CONF_NAME]
63  self._attr_device_class_attr_device_class = config.get(CONF_DEVICE_CLASS)
64  self._attr_unique_id_attr_unique_id = entry_id
65 
66  async def async_update(self) -> None:
67  """Get new state and update the sensor's state."""
68 
69  self._attr_is_on_attr_is_on = bool(getrandbits(1))
None __init__(self, Mapping[str, Any] config, str|None entry_id=None)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
None async_setup_platform(HomeAssistant hass, ConfigType config, AddEntitiesCallback async_add_entities, DiscoveryInfoType|None discovery_info=None)