1 """Support for binary sensors through the SmartThings cloud API."""
3 from __future__
import annotations
5 from collections.abc
import Sequence
7 from pysmartthings
import Attribute, Capability
10 BinarySensorDeviceClass,
18 from .const
import DATA_BROKERS, DOMAIN
19 from .entity
import SmartThingsEntity
21 CAPABILITY_TO_ATTRIB = {
22 Capability.acceleration_sensor: Attribute.acceleration,
23 Capability.contact_sensor: Attribute.contact,
24 Capability.filter_status: Attribute.filter_status,
25 Capability.motion_sensor: Attribute.motion,
26 Capability.presence_sensor: Attribute.presence,
27 Capability.sound_sensor: Attribute.sound,
28 Capability.tamper_alert: Attribute.tamper,
29 Capability.valve: Attribute.valve,
30 Capability.water_sensor: Attribute.water,
33 Attribute.acceleration: BinarySensorDeviceClass.MOVING,
34 Attribute.contact: BinarySensorDeviceClass.OPENING,
35 Attribute.filter_status: BinarySensorDeviceClass.PROBLEM,
36 Attribute.motion: BinarySensorDeviceClass.MOTION,
37 Attribute.presence: BinarySensorDeviceClass.PRESENCE,
38 Attribute.sound: BinarySensorDeviceClass.SOUND,
39 Attribute.tamper: BinarySensorDeviceClass.PROBLEM,
40 Attribute.valve: BinarySensorDeviceClass.OPENING,
41 Attribute.water: BinarySensorDeviceClass.MOISTURE,
43 ATTRIB_TO_ENTTIY_CATEGORY = {
44 Attribute.tamper: EntityCategory.DIAGNOSTIC,
50 config_entry: ConfigEntry,
51 async_add_entities: AddEntitiesCallback,
53 """Add binary sensors for a config entry."""
54 broker = hass.data[DOMAIN][DATA_BROKERS][config_entry.entry_id]
56 for device
in broker.devices.values():
57 for capability
in broker.get_assigned(device.device_id,
"binary_sensor"):
58 attrib = CAPABILITY_TO_ATTRIB[capability]
64 """Return all capabilities supported if minimum required are present."""
66 capability
for capability
in CAPABILITY_TO_ATTRIB
if capability
in capabilities
71 """Define a SmartThings Binary Sensor."""
84 """Return true if the binary sensor is on."""
def __init__(self, device, attribute)
None async_setup_entry(HomeAssistant hass, ConfigEntry config_entry, AddEntitiesCallback async_add_entities)
Sequence[str]|None get_capabilities(Sequence[str] capabilities)