mirror of
https://github.com/home-assistant/core.git
synced 2025-07-19 19:27:45 +00:00
Use pydeconz interface controls for alarm control panel (#72317)
This commit is contained in:
parent
19781d285c
commit
c770a81160
@ -1,7 +1,7 @@
|
|||||||
"""Support for deCONZ alarm control panel devices."""
|
"""Support for deCONZ alarm control panel devices."""
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from pydeconz.models.alarm_system import AlarmSystem
|
from pydeconz.interfaces.alarm_systems import ArmAction
|
||||||
from pydeconz.models.event import EventType
|
from pydeconz.models.event import EventType
|
||||||
from pydeconz.models.sensor.ancillary_control import (
|
from pydeconz.models.sensor.ancillary_control import (
|
||||||
ANCILLARY_CONTROL_ARMED_AWAY,
|
ANCILLARY_CONTROL_ARMED_AWAY,
|
||||||
@ -53,13 +53,13 @@ DECONZ_TO_ALARM_STATE = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def get_alarm_system_for_unique_id(
|
def get_alarm_system_id_for_unique_id(
|
||||||
gateway: DeconzGateway, unique_id: str
|
gateway: DeconzGateway, unique_id: str
|
||||||
) -> AlarmSystem | None:
|
) -> str | None:
|
||||||
"""Retrieve alarm system unique ID is registered to."""
|
"""Retrieve alarm system ID the unique ID is registered to."""
|
||||||
for alarm_system in gateway.api.alarmsystems.values():
|
for alarm_system in gateway.api.alarmsystems.values():
|
||||||
if unique_id in alarm_system.devices:
|
if unique_id in alarm_system.devices:
|
||||||
return alarm_system
|
return alarm_system.resource_id
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
@ -76,8 +76,12 @@ async def async_setup_entry(
|
|||||||
def async_add_sensor(_: EventType, sensor_id: str) -> None:
|
def async_add_sensor(_: EventType, sensor_id: str) -> None:
|
||||||
"""Add alarm control panel devices from deCONZ."""
|
"""Add alarm control panel devices from deCONZ."""
|
||||||
sensor = gateway.api.sensors.ancillary_control[sensor_id]
|
sensor = gateway.api.sensors.ancillary_control[sensor_id]
|
||||||
if alarm_system := get_alarm_system_for_unique_id(gateway, sensor.unique_id):
|
if alarm_system_id := get_alarm_system_id_for_unique_id(
|
||||||
async_add_entities([DeconzAlarmControlPanel(sensor, gateway, alarm_system)])
|
gateway, sensor.unique_id
|
||||||
|
):
|
||||||
|
async_add_entities(
|
||||||
|
[DeconzAlarmControlPanel(sensor, gateway, alarm_system_id)]
|
||||||
|
)
|
||||||
|
|
||||||
config_entry.async_on_unload(
|
config_entry.async_on_unload(
|
||||||
gateway.api.sensors.ancillary_control.subscribe(
|
gateway.api.sensors.ancillary_control.subscribe(
|
||||||
@ -107,11 +111,11 @@ class DeconzAlarmControlPanel(DeconzDevice, AlarmControlPanelEntity):
|
|||||||
self,
|
self,
|
||||||
device: AncillaryControl,
|
device: AncillaryControl,
|
||||||
gateway: DeconzGateway,
|
gateway: DeconzGateway,
|
||||||
alarm_system: AlarmSystem,
|
alarm_system_id: str,
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Set up alarm control panel device."""
|
"""Set up alarm control panel device."""
|
||||||
super().__init__(device, gateway)
|
super().__init__(device, gateway)
|
||||||
self.alarm_system = alarm_system
|
self.alarm_system_id = alarm_system_id
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_update_callback(self) -> None:
|
def async_update_callback(self) -> None:
|
||||||
@ -133,19 +137,27 @@ class DeconzAlarmControlPanel(DeconzDevice, AlarmControlPanelEntity):
|
|||||||
async def async_alarm_arm_away(self, code: str | None = None) -> None:
|
async def async_alarm_arm_away(self, code: str | None = None) -> None:
|
||||||
"""Send arm away command."""
|
"""Send arm away command."""
|
||||||
if code:
|
if code:
|
||||||
await self.alarm_system.arm_away(code)
|
await self.gateway.api.alarmsystems.arm(
|
||||||
|
self.alarm_system_id, ArmAction.AWAY, code
|
||||||
|
)
|
||||||
|
|
||||||
async def async_alarm_arm_home(self, code: str | None = None) -> None:
|
async def async_alarm_arm_home(self, code: str | None = None) -> None:
|
||||||
"""Send arm home command."""
|
"""Send arm home command."""
|
||||||
if code:
|
if code:
|
||||||
await self.alarm_system.arm_stay(code)
|
await self.gateway.api.alarmsystems.arm(
|
||||||
|
self.alarm_system_id, ArmAction.STAY, code
|
||||||
|
)
|
||||||
|
|
||||||
async def async_alarm_arm_night(self, code: str | None = None) -> None:
|
async def async_alarm_arm_night(self, code: str | None = None) -> None:
|
||||||
"""Send arm night command."""
|
"""Send arm night command."""
|
||||||
if code:
|
if code:
|
||||||
await self.alarm_system.arm_night(code)
|
await self.gateway.api.alarmsystems.arm(
|
||||||
|
self.alarm_system_id, ArmAction.NIGHT, code
|
||||||
|
)
|
||||||
|
|
||||||
async def async_alarm_disarm(self, code: str | None = None) -> None:
|
async def async_alarm_disarm(self, code: str | None = None) -> None:
|
||||||
"""Send disarm command."""
|
"""Send disarm command."""
|
||||||
if code:
|
if code:
|
||||||
await self.alarm_system.disarm(code)
|
await self.gateway.api.alarmsystems.arm(
|
||||||
|
self.alarm_system_id, ArmAction.DISARM, code
|
||||||
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user