Skip to content
Merged
Changes from 2 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 15 additions & 11 deletions homeassistant/components/manual/alarm_control_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
STATE_ALARM_ARMED_CUSTOM_BYPASS,
STATE_ALARM_ARMED_HOME,
STATE_ALARM_ARMED_NIGHT,
STATE_ALARM_ARMING,
STATE_ALARM_DISARMED,
STATE_ALARM_PENDING,
STATE_ALARM_TRIGGERED,
Expand Down Expand Up @@ -63,8 +64,8 @@
state for state in SUPPORTED_STATES if state != STATE_ALARM_DISARMED
]

ATTR_PRE_PENDING_STATE = "pre_pending_state"
ATTR_POST_PENDING_STATE = "post_pending_state"
ATTR_PREVIOUS_STATE = "previous_state"
ATTR_NEXT_STATE = "next_state"


def _state_validator(config):
Expand Down Expand Up @@ -237,7 +238,7 @@ def state(self):
if self._state in SUPPORTED_PENDING_STATES and self._within_pending_time(
self._state
):
return STATE_ALARM_PENDING
return STATE_ALARM_ARMING

return self._state

Expand All @@ -255,7 +256,7 @@ def supported_features(self) -> int:
@property
def _active_state(self):
"""Get the current state."""
if self.state == STATE_ALARM_PENDING:
if self.state == STATE_ALARM_PENDING or self.state == STATE_ALARM_ARMING:
Comment thread
starkillerOG marked this conversation as resolved.
Outdated
return self._previous_state
return self._state

Expand Down Expand Up @@ -385,9 +386,9 @@ def device_state_attributes(self):
"""Return the state attributes."""
state_attr = {}

if self.state == STATE_ALARM_PENDING:
state_attr[ATTR_PRE_PENDING_STATE] = self._previous_state
Comment thread
starkillerOG marked this conversation as resolved.
state_attr[ATTR_POST_PENDING_STATE] = self._state
if self.state == STATE_ALARM_PENDING or self.state == STATE_ALARM_ARMING:
state_attr[ATTR_PREVIOUS_STATE] = self._previous_state
state_attr[ATTR_NEXT_STATE] = self._state

return state_attr

Expand All @@ -397,12 +398,15 @@ async def async_added_to_hass(self):
state = await self.async_get_last_state()
if state:
if (
state.state == STATE_ALARM_PENDING
(
state.state == STATE_ALARM_PENDING
or state.state == STATE_ALARM_ARMING
)
and hasattr(state, "attributes")
and state.attributes["pre_pending_state"]
and state.attributes[ATTR_PREVIOUS_STATE]
):
# If in pending state, we return to the pre_pending_state
self._state = state.attributes["pre_pending_state"]
# If in pending state, we return to the ATTR_PREVIOUS_STATE
self._state = state.attributes[ATTR_PREVIOUS_STATE]
self._state_ts = dt_util.utcnow()
else:
self._state = state.state
Expand Down