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
from nessclient import ArmingState
from nessclient import ArmingState, Client
import homeassistant.components.alarm_control_panel as alarm
from homeassistant.components.alarm_control_panel import AlarmControlPanelEntityFeature
@ -41,17 +41,18 @@ async def async_setup_platform(
class NessAlarmPanel(alarm.AlarmControlPanelEntity):
"""Representation of a Ness alarm panel."""
_attr_code_format = alarm.CodeFormat.NUMBER
_attr_should_poll = False
_attr_supported_features = (
AlarmControlPanelEntityFeature.ARM_HOME
| AlarmControlPanelEntityFeature.ARM_AWAY
| AlarmControlPanelEntityFeature.TRIGGER
)
def __init__(self, client, name):
def __init__(self, client: Client, name: str) -> None:
"""Initialize the alarm panel."""
self._client = client
self._name = name
self._state = None
self._attr_name = name
async def async_added_to_hass(self) -> None:
"""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:
"""Send disarm command."""
await self._client.disarm(code)
@ -98,23 +79,23 @@ class NessAlarmPanel(alarm.AlarmControlPanelEntity):
await self._client.panic(code)
@callback
def _handle_arming_state_change(self, arming_state):
def _handle_arming_state_change(self, arming_state: ArmingState) -> None:
"""Handle arming state update."""
if arming_state == ArmingState.UNKNOWN:
self._state = None
self._attr_state = None
elif arming_state == ArmingState.DISARMED:
self._state = STATE_ALARM_DISARMED
self._attr_state = STATE_ALARM_DISARMED
elif arming_state == ArmingState.ARMING:
self._state = STATE_ALARM_ARMING
self._attr_state = STATE_ALARM_ARMING
elif arming_state == ArmingState.EXIT_DELAY:
self._state = STATE_ALARM_ARMING
self._attr_state = STATE_ALARM_ARMING
elif arming_state == ArmingState.ARMED:
self._state = STATE_ALARM_ARMED_AWAY
self._attr_state = STATE_ALARM_ARMED_AWAY
elif arming_state == ArmingState.ENTRY_DELAY:
self._state = STATE_ALARM_PENDING
self._attr_state = STATE_ALARM_PENDING
elif arming_state == ArmingState.TRIGGERED:
self._state = STATE_ALARM_TRIGGERED
self._attr_state = STATE_ALARM_TRIGGERED
else:
_LOGGER.warning("Unhandled arming state: %s", arming_state)