mirror of
https://github.com/home-assistant/core.git
synced 2025-07-15 17:27:10 +00:00
Extend Nuki integration to expose ringer through Nuki Opener (#107745)
* Expose ring_action_state and ring_action_timestamp of Nuki Opener * add translation key * address comments
This commit is contained in:
parent
28917011cb
commit
d0e9e54f26
@ -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
|
||||
|
@ -38,6 +38,11 @@
|
||||
}
|
||||
},
|
||||
"entity": {
|
||||
"binary_sensor": {
|
||||
"ring_action": {
|
||||
"name": "Ring Action"
|
||||
}
|
||||
},
|
||||
"lock": {
|
||||
"nuki_lock": {
|
||||
"state_attributes": {
|
||||
|
Loading…
x
Reference in New Issue
Block a user