diff --git a/homeassistant/components/nuki/binary_sensor.py b/homeassistant/components/nuki/binary_sensor.py index 240bb2dc525..e3b2d129017 100644 --- a/homeassistant/components/nuki/binary_sensor.py +++ b/homeassistant/components/nuki/binary_sensor.py @@ -19,16 +19,22 @@ from .const import ATTR_NUKI_ID, DOMAIN as NUKI_DOMAIN async def async_setup_entry( hass: HomeAssistant, entry: ConfigEntry, async_add_entities: AddEntitiesCallback ) -> None: - """Set up the Nuki lock binary sensor.""" + """Set up the Nuki binary sensors.""" entry_data: NukiEntryData = hass.data[NUKI_DOMAIN][entry.entry_id] - entities = [] + lock_entities = [] + opener_entities = [] for lock in entry_data.locks: if lock.is_door_sensor_activated: - entities.extend([NukiDoorsensorEntity(entry_data.coordinator, lock)]) + lock_entities.extend([NukiDoorsensorEntity(entry_data.coordinator, lock)]) - async_add_entities(entities) + async_add_entities(lock_entities) + + for opener in entry_data.openers: + opener_entities.extend([NukiRingactionEntity(entry_data.coordinator, opener)]) + + async_add_entities(opener_entities) class NukiDoorsensorEntity(NukiEntity[NukiDevice], BinarySensorEntity): @@ -70,3 +76,29 @@ class NukiDoorsensorEntity(NukiEntity[NukiDevice], BinarySensorEntity): def is_on(self): """Return true if the door is open.""" return self.door_sensor_state == STATE_DOORSENSOR_OPENED + + +class NukiRingactionEntity(NukiEntity[NukiDevice], BinarySensorEntity): + """Representation of a Nuki Opener Ringaction.""" + + _attr_has_entity_name = True + _attr_translation_key = "ring_action" + _attr_icon = "mdi:bell-ring" + + @property + def unique_id(self) -> str: + """Return a unique ID.""" + return f"{self._nuki_device.nuki_id}_ringaction" + + @property + def extra_state_attributes(self): + """Return the device specific state attributes.""" + data = { + ATTR_NUKI_ID: self._nuki_device.nuki_id, + } + return data + + @property + def is_on(self) -> bool: + """Return the value of the ring action state.""" + return self._nuki_device.ring_action_state diff --git a/homeassistant/components/nuki/strings.json b/homeassistant/components/nuki/strings.json index 216b891ac31..beac3cb7f74 100644 --- a/homeassistant/components/nuki/strings.json +++ b/homeassistant/components/nuki/strings.json @@ -38,6 +38,11 @@ } }, "entity": { + "binary_sensor": { + "ring_action": { + "name": "Ring Action" + } + }, "lock": { "nuki_lock": { "state_attributes": {