diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 51e956e3314..65dd551ebc1 100644 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -11,7 +11,8 @@ from homeassistant import config_entries from homeassistant.core import callback, CoreState from homeassistant.helpers import discovery from homeassistant.helpers.entity import generate_entity_id -from homeassistant.helpers.entity_component import EntityComponent +from homeassistant.helpers.entity_component import DEFAULT_SCAN_INTERVAL +from homeassistant.helpers.entity_platform import EntityPlatform from homeassistant.helpers.entity_registry import async_get_registry from homeassistant.const import ( ATTR_ENTITY_ID, EVENT_HOMEASSISTANT_START, EVENT_HOMEASSISTANT_STOP) @@ -291,6 +292,8 @@ async def async_setup_entry(hass, config_entry): hass.data[DATA_DEVICES] = {} hass.data[DATA_ENTITY_VALUES] = [] + registry = await async_get_registry(hass) + if use_debug: # pragma: no cover def log_all(signal, value=None): """Log all the signals.""" @@ -332,14 +335,23 @@ async def async_setup_entry(hass, config_entry): new_values = hass.data[DATA_ENTITY_VALUES] + [values] hass.data[DATA_ENTITY_VALUES] = new_values - component = EntityComponent(_LOGGER, DOMAIN, hass) - registry = await async_get_registry(hass) + platform = EntityPlatform( + hass=hass, + logger=_LOGGER, + domain=DOMAIN, + platform_name=DOMAIN, + platform=None, + scan_interval=DEFAULT_SCAN_INTERVAL, + entity_namespace=None, + async_entities_added_callback=lambda: None, + ) + platform.config_entry = config_entry def node_added(node): """Handle a new node on the network.""" entity = ZWaveNodeEntity(node, network) - def _add_node_to_component(): + async def _add_node_to_component(): if hass.data[DATA_DEVICES].get(entity.unique_id): return @@ -353,10 +365,10 @@ async def async_setup_entry(hass, config_entry): return hass.data[DATA_DEVICES][entity.unique_id] = entity - component.add_entities([entity]) + await platform.async_add_entities([entity]) if entity.unique_id: - _add_node_to_component() + hass.async_add_job(_add_node_to_component()) return @callback @@ -1057,14 +1069,25 @@ class ZWaveDeviceEntity(ZWaveBaseEntity): @property def device_info(self): """Return device information.""" - return { - 'identifiers': { - (DOMAIN, self.node_id) - }, + info = { 'manufacturer': self.node.manufacturer_name, 'model': self.node.product_name, - 'name': node_name(self.node), } + if self.values.primary.instance > 1: + info['name'] = '{} ({})'.format( + node_name(self.node), self.values.primary.instance) + info['identifiers'] = { + (DOMAIN, self.node_id, self.values.primary.instance, ), + } + info['via_hub'] = (DOMAIN, self.node_id, ) + else: + info['name'] = node_name(self.node) + info['identifiers'] = { + (DOMAIN, self.node_id), + } + if self.node_id > 1: + info['via_hub'] = (DOMAIN, 1, ) + return info @property def name(self): diff --git a/homeassistant/components/zwave/node_entity.py b/homeassistant/components/zwave/node_entity.py index 0a24f888c20..86f5ae34520 100644 --- a/homeassistant/components/zwave/node_entity.py +++ b/homeassistant/components/zwave/node_entity.py @@ -124,7 +124,7 @@ class ZWaveNodeEntity(ZWaveBaseEntity): @property def device_info(self): """Return device information.""" - return { + info = { 'identifiers': { (DOMAIN, self.node_id) }, @@ -132,6 +132,9 @@ class ZWaveNodeEntity(ZWaveBaseEntity): 'model': self.node.product_name, 'name': node_name(self.node) } + if self.node_id > 1: + info['via_hub'] = (DOMAIN, 1) + return info def network_node_changed(self, node=None, value=None, args=None): """Handle a changed node on the network."""