mirror of
https://github.com/home-assistant/core
synced 2024-09-15 17:29:45 +02:00
HomeKit: Support triggered state for alarm_control_panel (#14285)
This commit is contained in:
parent
bb76ba67f3
commit
255a85ad02
@ -6,7 +6,7 @@ from pyhap.const import CATEGORY_ALARM_SYSTEM
|
||||
from homeassistant.const import (
|
||||
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME,
|
||||
STATE_ALARM_ARMED_NIGHT, STATE_ALARM_DISARMED,
|
||||
ATTR_ENTITY_ID, ATTR_CODE)
|
||||
STATE_ALARM_TRIGGERED, ATTR_ENTITY_ID, ATTR_CODE)
|
||||
|
||||
from . import TYPES
|
||||
from .accessories import HomeAccessory
|
||||
@ -16,13 +16,16 @@ from .const import (
|
||||
|
||||
_LOGGER = logging.getLogger(__name__)
|
||||
|
||||
HASS_TO_HOMEKIT = {STATE_ALARM_DISARMED: 3, STATE_ALARM_ARMED_HOME: 0,
|
||||
STATE_ALARM_ARMED_AWAY: 1, STATE_ALARM_ARMED_NIGHT: 2}
|
||||
HASS_TO_HOMEKIT = {STATE_ALARM_ARMED_HOME: 0,
|
||||
STATE_ALARM_ARMED_AWAY: 1,
|
||||
STATE_ALARM_ARMED_NIGHT: 2,
|
||||
STATE_ALARM_DISARMED: 3,
|
||||
STATE_ALARM_TRIGGERED: 4}
|
||||
HOMEKIT_TO_HASS = {c: s for s, c in HASS_TO_HOMEKIT.items()}
|
||||
STATE_TO_SERVICE = {STATE_ALARM_DISARMED: 'alarm_disarm',
|
||||
STATE_ALARM_ARMED_HOME: 'alarm_arm_home',
|
||||
STATE_TO_SERVICE = {STATE_ALARM_ARMED_HOME: 'alarm_arm_home',
|
||||
STATE_ALARM_ARMED_AWAY: 'alarm_arm_away',
|
||||
STATE_ALARM_ARMED_NIGHT: 'alarm_arm_night'}
|
||||
STATE_ALARM_ARMED_NIGHT: 'alarm_arm_night',
|
||||
STATE_ALARM_DISARMED: 'alarm_disarm'}
|
||||
|
||||
|
||||
@TYPES.register('SecuritySystem')
|
||||
@ -64,7 +67,8 @@ class SecuritySystem(HomeAccessory):
|
||||
_LOGGER.debug('%s: Updated current state to %s (%d)',
|
||||
self.entity_id, hass_state, current_security_state)
|
||||
|
||||
if not self.flag_target_state:
|
||||
# SecuritySystemTargetSTate does not support triggered
|
||||
if not self.flag_target_state and \
|
||||
hass_state != STATE_ALARM_TRIGGERED:
|
||||
self.char_target_state.set_value(current_security_state)
|
||||
if self.char_target_state.value == self.char_current_state.value:
|
||||
self.flag_target_state = False
|
||||
self.flag_target_state = False
|
||||
|
@ -7,7 +7,8 @@ from homeassistant.components.homekit.type_security_systems import (
|
||||
from homeassistant.const import (
|
||||
ATTR_CODE, ATTR_SERVICE, ATTR_SERVICE_DATA, EVENT_CALL_SERVICE,
|
||||
STATE_ALARM_ARMED_AWAY, STATE_ALARM_ARMED_HOME,
|
||||
STATE_ALARM_ARMED_NIGHT, STATE_ALARM_DISARMED, STATE_UNKNOWN)
|
||||
STATE_ALARM_ARMED_NIGHT, STATE_ALARM_DISARMED, STATE_ALARM_TRIGGERED,
|
||||
STATE_UNKNOWN)
|
||||
|
||||
from tests.common import get_test_home_assistant
|
||||
|
||||
@ -65,10 +66,15 @@ class TestHomekitSecuritySystems(unittest.TestCase):
|
||||
self.assertEqual(acc.char_target_state.value, 3)
|
||||
self.assertEqual(acc.char_current_state.value, 3)
|
||||
|
||||
self.hass.states.set(acp, STATE_ALARM_TRIGGERED)
|
||||
self.hass.block_till_done()
|
||||
self.assertEqual(acc.char_target_state.value, 3)
|
||||
self.assertEqual(acc.char_current_state.value, 4)
|
||||
|
||||
self.hass.states.set(acp, STATE_UNKNOWN)
|
||||
self.hass.block_till_done()
|
||||
self.assertEqual(acc.char_target_state.value, 3)
|
||||
self.assertEqual(acc.char_current_state.value, 3)
|
||||
self.assertEqual(acc.char_current_state.value, 4)
|
||||
|
||||
# Set from HomeKit
|
||||
acc.char_target_state.client_update_value(0)
|
||||
|
Loading…
Reference in New Issue
Block a user