From a58d8fc68b1020ea5b2cbddca37110f029ebadd6 Mon Sep 17 00:00:00 2001 From: cdce8p <30130371+cdce8p@users.noreply.github.com> Date: Sat, 10 Mar 2018 04:41:59 +0100 Subject: [PATCH] HomeKit Bugfix: names (#13031) * Fix display_names, changed default port (+1) * Revert port change --- .../components/homekit/accessories.py | 9 +++++---- homeassistant/components/homekit/const.py | 1 + tests/components/homekit/test_accessories.py | 20 ++++++++++--------- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/homeassistant/components/homekit/accessories.py b/homeassistant/components/homekit/accessories.py index 689bcb3377c..1cd94070289 100644 --- a/homeassistant/components/homekit/accessories.py +++ b/homeassistant/components/homekit/accessories.py @@ -5,16 +5,17 @@ from pyhap.accessory import Accessory, Bridge, Category from .const import ( SERV_ACCESSORY_INFO, SERV_BRIDGING_STATE, MANUFACTURER, - CHAR_MODEL, CHAR_MANUFACTURER, CHAR_SERIAL_NUMBER) + CHAR_MODEL, CHAR_MANUFACTURER, CHAR_NAME, CHAR_SERIAL_NUMBER) _LOGGER = logging.getLogger(__name__) -def set_accessory_info(acc, model, manufacturer=MANUFACTURER, +def set_accessory_info(acc, name, model, manufacturer=MANUFACTURER, serial_number='0000'): """Set the default accessory information.""" service = acc.get_service(SERV_ACCESSORY_INFO) + service.get_characteristic(CHAR_NAME).set_value(name) service.get_characteristic(CHAR_MODEL).set_value(model) service.get_characteristic(CHAR_MANUFACTURER).set_value(manufacturer) service.get_characteristic(CHAR_SERIAL_NUMBER).set_value(serial_number) @@ -49,7 +50,7 @@ class HomeAccessory(Accessory): def __init__(self, display_name, model, category='OTHER', **kwargs): """Initialize a Accessory object.""" super().__init__(display_name, **kwargs) - set_accessory_info(self, model) + set_accessory_info(self, display_name, model) self.category = getattr(Category, category, Category.OTHER) def _set_services(self): @@ -62,7 +63,7 @@ class HomeBridge(Bridge): def __init__(self, display_name, model, pincode, **kwargs): """Initialize a Bridge object.""" super().__init__(display_name, pincode=pincode, **kwargs) - set_accessory_info(self, model) + set_accessory_info(self, display_name, model) def _set_services(self): add_preload_service(self, SERV_ACCESSORY_INFO) diff --git a/homeassistant/components/homekit/const.py b/homeassistant/components/homekit/const.py index 35bd25eabd3..73dfbf69049 100644 --- a/homeassistant/components/homekit/const.py +++ b/homeassistant/components/homekit/const.py @@ -22,6 +22,7 @@ CHAR_HEATING_THRESHOLD_TEMPERATURE = 'HeatingThresholdTemperature' CHAR_LINK_QUALITY = 'LinkQuality' CHAR_MANUFACTURER = 'Manufacturer' CHAR_MODEL = 'Model' +CHAR_NAME = 'Name' CHAR_ON = 'On' CHAR_POSITION_STATE = 'PositionState' CHAR_REACHABLE = 'Reachable' diff --git a/tests/components/homekit/test_accessories.py b/tests/components/homekit/test_accessories.py index a45aa82d981..6f39a8c792b 100644 --- a/tests/components/homekit/test_accessories.py +++ b/tests/components/homekit/test_accessories.py @@ -13,7 +13,7 @@ from homeassistant.components.homekit.accessories import ( HomeAccessory, HomeBridge) from homeassistant.components.homekit.const import ( SERV_ACCESSORY_INFO, SERV_BRIDGING_STATE, - CHAR_MODEL, CHAR_MANUFACTURER, CHAR_SERIAL_NUMBER) + CHAR_MODEL, CHAR_MANUFACTURER, CHAR_NAME, CHAR_SERIAL_NUMBER) from tests.mock.homekit import ( get_patch_paths, mock_preload_service, @@ -69,21 +69,23 @@ def test_override_properties(): def test_set_accessory_info(): """Test setting of basic accessory information with MockAccessory.""" acc = MockAccessory('Accessory') - set_accessory_info(acc, 'model', 'manufacturer', '0000') + set_accessory_info(acc, 'name', 'model', 'manufacturer', '0000') assert len(acc.services) == 1 serv = acc.services[0] assert serv.display_name == SERV_ACCESSORY_INFO - assert len(serv.characteristics) == 3 + assert len(serv.characteristics) == 4 chars = serv.characteristics - assert chars[0].display_name == CHAR_MODEL - assert chars[0].value == 'model' - assert chars[1].display_name == CHAR_MANUFACTURER - assert chars[1].value == 'manufacturer' - assert chars[2].display_name == CHAR_SERIAL_NUMBER - assert chars[2].value == '0000' + assert chars[0].display_name == CHAR_NAME + assert chars[0].value == 'name' + assert chars[1].display_name == CHAR_MODEL + assert chars[1].value == 'model' + assert chars[2].display_name == CHAR_MANUFACTURER + assert chars[2].value == 'manufacturer' + assert chars[3].display_name == CHAR_SERIAL_NUMBER + assert chars[3].value == '0000' @patch(PATH_ACC, side_effect=mock_preload_service)