Use attributes in ness_alarm alarm (#74121)

pull/74132/head
epenet 2022-06-28 15:12:56 +02:00 committed by GitHub
parent b75a6d265d
commit 3836da48b3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 13 additions and 32 deletions

View File

@ -3,7 +3,7 @@ from __future__ import annotations
import logging import logging
from nessclient import ArmingState from nessclient import ArmingState, Client
import homeassistant.components.alarm_control_panel as alarm import homeassistant.components.alarm_control_panel as alarm
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntityFeature from homeassistant.components.alarm_control_panel import AlarmControlPanelEntityFeature
@ -41,17 +41,18 @@ async def async_setup_platform(
class NessAlarmPanel(alarm.AlarmControlPanelEntity): class NessAlarmPanel(alarm.AlarmControlPanelEntity):
"""Representation of a Ness alarm panel.""" """Representation of a Ness alarm panel."""
_attr_code_format = alarm.CodeFormat.NUMBER
_attr_should_poll = False
_attr_supported_features = ( _attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY | AlarmControlPanelEntityFeature.ARM_AWAY
| AlarmControlPanelEntityFeature.TRIGGER | AlarmControlPanelEntityFeature.TRIGGER
) )
def __init__(self, client, name): def __init__(self, client: Client, name: str) -> None:
"""Initialize the alarm panel.""" """Initialize the alarm panel."""
self._client = client self._client = client
self._name = name self._attr_name = name
self._state = None
async def async_added_to_hass(self) -> None: async def async_added_to_hass(self) -> None:
"""Register callbacks.""" """Register callbacks."""
@ -61,26 +62,6 @@ class NessAlarmPanel(alarm.AlarmControlPanelEntity):
) )
) )
@property
def name(self):
"""Return the name of the device."""
return self._name
@property
def should_poll(self):
"""Return the polling state."""
return False
@property
def code_format(self):
"""Return the regex for code format or None if no code is required."""
return alarm.CodeFormat.NUMBER
@property
def state(self):
"""Return the state of the device."""
return self._state
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."""
await self._client.disarm(code) await self._client.disarm(code)
@ -98,23 +79,23 @@ class NessAlarmPanel(alarm.AlarmControlPanelEntity):
await self._client.panic(code) await self._client.panic(code)
@callback @callback
def _handle_arming_state_change(self, arming_state): def _handle_arming_state_change(self, arming_state: ArmingState) -> None:
"""Handle arming state update.""" """Handle arming state update."""
if arming_state == ArmingState.UNKNOWN: if arming_state == ArmingState.UNKNOWN:
self._state = None self._attr_state = None
elif arming_state == ArmingState.DISARMED: elif arming_state == ArmingState.DISARMED:
self._state = STATE_ALARM_DISARMED self._attr_state = STATE_ALARM_DISARMED
elif arming_state == ArmingState.ARMING: elif arming_state == ArmingState.ARMING:
self._state = STATE_ALARM_ARMING self._attr_state = STATE_ALARM_ARMING
elif arming_state == ArmingState.EXIT_DELAY: elif arming_state == ArmingState.EXIT_DELAY:
self._state = STATE_ALARM_ARMING self._attr_state = STATE_ALARM_ARMING
elif arming_state == ArmingState.ARMED: elif arming_state == ArmingState.ARMED:
self._state = STATE_ALARM_ARMED_AWAY self._attr_state = STATE_ALARM_ARMED_AWAY
elif arming_state == ArmingState.ENTRY_DELAY: elif arming_state == ArmingState.ENTRY_DELAY:
self._state = STATE_ALARM_PENDING self._attr_state = STATE_ALARM_PENDING
elif arming_state == ArmingState.TRIGGERED: elif arming_state == ArmingState.TRIGGERED:
self._state = STATE_ALARM_TRIGGERED self._attr_state = STATE_ALARM_TRIGGERED
else: else:
_LOGGER.warning("Unhandled arming state: %s", arming_state) _LOGGER.warning("Unhandled arming state: %s", arming_state)