Homekit: Fix security systems (#13499)

* Fix alarm_code=None
* Added test
This commit is contained in:
cdce8p 2018-03-27 23:39:25 +02:00 committed by GitHub
parent 264be67787
commit 2bebfec3a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 1 deletions

View File

@ -58,7 +58,9 @@ class SecuritySystem(HomeAccessory):
hass_value = HOMEKIT_TO_HASS[value] hass_value = HOMEKIT_TO_HASS[value]
service = STATE_TO_SERVICE[hass_value] service = STATE_TO_SERVICE[hass_value]
params = {ATTR_ENTITY_ID: self._entity_id, ATTR_CODE: self._alarm_code} params = {ATTR_ENTITY_ID: self._entity_id}
if self._alarm_code:
params[ATTR_CODE] = self._alarm_code
self._hass.services.call('alarm_control_panel', service, params) self._hass.services.call('alarm_control_panel', service, params)
def update_state(self, entity_id=None, old_state=None, new_state=None): def update_state(self, entity_id=None, old_state=None, new_state=None):

View File

@ -102,3 +102,19 @@ class TestHomekitSecuritySystems(unittest.TestCase):
self.assertEqual( self.assertEqual(
self.events[0].data[ATTR_SERVICE_DATA][ATTR_CODE], '1234') self.events[0].data[ATTR_SERVICE_DATA][ATTR_CODE], '1234')
self.assertEqual(acc.char_target_state.value, 3) self.assertEqual(acc.char_target_state.value, 3)
def test_no_alarm_code(self):
"""Test accessory if security_system doesn't require a alarm_code."""
acp = 'alarm_control_panel.test'
acc = SecuritySystem(self.hass, acp, 'SecuritySystem',
alarm_code=None, aid=2)
acc.run()
# Set from HomeKit
acc.char_target_state.set_value(0)
self.hass.block_till_done()
self.assertEqual(
self.events[0].data[ATTR_SERVICE], 'alarm_arm_home')
self.assertNotIn(ATTR_CODE, self.events[0].data[ATTR_SERVICE_DATA])
self.assertEqual(acc.char_target_state.value, 0)