1 """Support for Lutron Caseta Occupancy/Vacancy Sensors."""
3 from pylutron_caseta
import OCCUPANCY_GROUP_OCCUPIED
6 BinarySensorDeviceClass,
14 from .
import DOMAIN
as CASETA_DOMAIN
15 from .const
import CONFIG_URL, MANUFACTURER, UNASSIGNED_AREA
16 from .entity
import LutronCasetaEntity
17 from .models
import LutronCasetaConfigEntry
18 from .util
import area_name_from_id
23 config_entry: LutronCasetaConfigEntry,
24 async_add_entities: AddEntitiesCallback,
26 """Set up the Lutron Caseta binary_sensor platform.
28 Adds occupancy groups from the Caseta bridge associated with the
29 config_entry as binary_sensor entities.
31 data = config_entry.runtime_data
33 occupancy_groups = bridge.occupancy_groups
36 for occupancy_group
in occupancy_groups.values()
41 """Representation of a Lutron occupancy group."""
43 _attr_device_class = BinarySensorDeviceClass.OCCUPANCY
46 """Init an occupancy sensor."""
49 name = f
"{area} {device['device_name']}"
53 manufacturer=MANUFACTURER,
54 model=
"Lutron Occupancy",
56 via_device=(CASETA_DOMAIN, self.
_bridge_device_bridge_device[
"serial"]),
57 configuration_url=CONFIG_URL,
58 entry_type=DeviceEntryType.SERVICE,
60 if area != UNASSIGNED_AREA:
65 """Return the brightness of the light."""
66 return self.
_device_device[
"status"] == OCCUPANCY_GROUP_OCCUPIED
70 """Register callbacks."""
77 """Return the device ID used for calling pylutron_caseta."""
78 return self.
_device_device[
"occupancy_group_id"]
82 """Return a unique identifier."""
83 return f
"occupancygroup_{self._bridge_unique_id}_{self.device_id}"
87 """Return the state attributes."""
def __init__(self, device, data)
def extra_state_attributes(self)
None async_added_to_hass(self)
None async_write_ha_state(self)
str|UndefinedType|None name(self)
None async_setup_entry(HomeAssistant hass, LutronCasetaConfigEntry config_entry, AddEntitiesCallback async_add_entities)
str area_name_from_id(dict[str, dict] areas, str|None area_id)