diff --git a/homeassistant/components/ozw/websocket_api.py b/homeassistant/components/ozw/websocket_api.py index 1b62c892f93..10d5255044d 100644 --- a/homeassistant/components/ozw/websocket_api.py +++ b/homeassistant/components/ozw/websocket_api.py @@ -21,6 +21,7 @@ NODE_ID = "node_id" @callback def async_register_api(hass): """Register all of our api endpoints.""" + websocket_api.async_register_command(hass, websocket_get_instances) websocket_api.async_register_command(hass, websocket_network_status) websocket_api.async_register_command(hass, websocket_node_metadata) websocket_api.async_register_command(hass, websocket_node_status) @@ -28,6 +29,20 @@ def async_register_api(hass): websocket_api.async_register_command(hass, websocket_refresh_node_info) +@websocket_api.websocket_command({vol.Required(TYPE): "ozw/get_instances"}) +def websocket_get_instances(hass, connection, msg): + """Get a list of OZW instances.""" + manager = hass.data[DOMAIN][MANAGER] + instances = [] + + for instance in manager.collections["instance"]: + instances.append(dict(instance.get_status().data, id=instance.id)) + + connection.send_result( + msg[ID], instances, + ) + + @websocket_api.websocket_command( { vol.Required(TYPE): "ozw/network_status", diff --git a/tests/components/ozw/test_websocket_api.py b/tests/components/ozw/test_websocket_api.py index bee3a828c5a..e83b7bb7b66 100644 --- a/tests/components/ozw/test_websocket_api.py +++ b/tests/components/ozw/test_websocket_api.py @@ -12,6 +12,15 @@ async def test_websocket_api(hass, generic_data, hass_ws_client): await setup_ozw(hass, fixture=generic_data) client = await hass_ws_client(hass) + # Test instance list + await client.send_json({ID: 4, TYPE: "ozw/get_instances"}) + msg = await client.receive_json() + assert len(msg["result"]) == 1 + result = msg["result"][0] + assert result["id"] == 1 + assert result["Status"] == "driverAllNodesQueried" + assert result["OpenZWave_Version"] == "1.6.1008" + # Test network status await client.send_json({ID: 5, TYPE: "ozw/network_status"}) msg = await client.receive_json()