1
0
mirror of https://github.com/home-assistant/core.git synced 2025-12-24 12:59:34 +00:00

Add unique_id to zwave node entity (#14201)

* Add unique_id to zwave node entity

* Wait 30s before adding zwave node if its unique_id is not ready

* Use only node_id in unique_id. Update name, manufacturer, and product attributes on node update.
This commit is contained in:
Andrey
2018-05-02 23:10:26 +03:00
committed by Paulus Schoutsen
parent 351e8921fa
commit f72d568374
6 changed files with 113 additions and 10 deletions

View File

@@ -224,6 +224,47 @@ def test_node_discovery(hass, mock_openzwave):
assert hass.states.get('zwave.mock_node').state is 'unknown'
async def test_unparsed_node_discovery(hass, mock_openzwave):
"""Test discovery of a node."""
mock_receivers = []
def mock_connect(receiver, signal, *args, **kwargs):
if signal == MockNetwork.SIGNAL_NODE_ADDED:
mock_receivers.append(receiver)
with patch('pydispatch.dispatcher.connect', new=mock_connect):
await async_setup_component(hass, 'zwave', {'zwave': {}})
assert len(mock_receivers) == 1
node = MockNode(node_id=14, manufacturer_name=None)
sleeps = []
def utcnow():
return datetime.fromtimestamp(len(sleeps))
asyncio_sleep = asyncio.sleep
async def sleep(duration, loop):
if duration > 0:
sleeps.append(duration)
await asyncio_sleep(0, loop=loop)
with patch('homeassistant.components.zwave.dt_util.utcnow', new=utcnow):
with patch('asyncio.sleep', new=sleep):
with patch.object(zwave, '_LOGGER') as mock_logger:
hass.async_add_job(mock_receivers[0], node)
await hass.async_block_till_done()
assert len(sleeps) == const.NODE_READY_WAIT_SECS
assert mock_logger.warning.called
assert len(mock_logger.warning.mock_calls) == 1
assert mock_logger.warning.mock_calls[0][1][1:] == \
(14, const.NODE_READY_WAIT_SECS)
assert hass.states.get('zwave.mock_node').state is 'unknown'
@asyncio.coroutine
def test_node_ignored(hass, mock_openzwave):
"""Test discovery of a node."""