Add missing SimpliSafe alarm states (#82813)

This commit is contained in:
Aaron Bach 2022-11-28 02:51:30 -07:00 committed by Franck Nijhof
parent 78ba1cbb32
commit 688b643ed6
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3

View File

@ -15,7 +15,10 @@ from simplipy.websocket import (
EVENT_AWAY_EXIT_DELAY_BY_REMOTE,
EVENT_DISARMED_BY_MASTER_PIN,
EVENT_DISARMED_BY_REMOTE,
EVENT_ENTRY_DELAY,
EVENT_HOME_EXIT_DELAY,
EVENT_SECRET_ALERT_TRIGGERED,
EVENT_USER_INITIATED_TEST,
WebsocketEvent,
)
@ -66,9 +69,12 @@ STATE_MAP_FROM_REST_API = {
SystemStates.ALARM_COUNT: STATE_ALARM_PENDING,
SystemStates.AWAY: STATE_ALARM_ARMED_AWAY,
SystemStates.AWAY_COUNT: STATE_ALARM_ARMING,
SystemStates.ENTRY_DELAY: STATE_ALARM_PENDING,
SystemStates.EXIT_DELAY: STATE_ALARM_ARMING,
SystemStates.HOME: STATE_ALARM_ARMED_HOME,
SystemStates.HOME_COUNT: STATE_ALARM_ARMING,
SystemStates.OFF: STATE_ALARM_DISARMED,
SystemStates.TEST: STATE_ALARM_DISARMED,
}
STATE_MAP_FROM_WEBSOCKET_EVENT = {
@ -82,7 +88,10 @@ STATE_MAP_FROM_WEBSOCKET_EVENT = {
EVENT_AWAY_EXIT_DELAY_BY_REMOTE: STATE_ALARM_ARMING,
EVENT_DISARMED_BY_MASTER_PIN: STATE_ALARM_DISARMED,
EVENT_DISARMED_BY_REMOTE: STATE_ALARM_DISARMED,
EVENT_ENTRY_DELAY: STATE_ALARM_PENDING,
EVENT_HOME_EXIT_DELAY: STATE_ALARM_ARMING,
EVENT_SECRET_ALERT_TRIGGERED: STATE_ALARM_TRIGGERED,
EVENT_USER_INITIATED_TEST: STATE_ALARM_DISARMED,
}
WEBSOCKET_EVENTS_TO_LISTEN_FOR = (
@ -156,13 +165,11 @@ class SimpliSafeAlarm(SimpliSafeEntity, AlarmControlPanelEntity):
"""Set the state based on the latest REST API data."""
if self._system.alarm_going_off:
self._attr_state = STATE_ALARM_TRIGGERED
elif self._system.state == SystemStates.ERROR:
self.async_increment_error_count()
elif state := STATE_MAP_FROM_REST_API.get(self._system.state):
self._attr_state = state
self.async_reset_error_count()
else:
LOGGER.error("Unknown system state (REST API): %s", self._system.state)
LOGGER.warning("Unexpected system state (REST API): %s", self._system.state)
self.async_increment_error_count()
async def async_alarm_disarm(self, code: str | None = None) -> None: