diff --git a/homeassistant/components/zwave/__init__.py b/homeassistant/components/zwave/__init__.py index 9b6cf58425b..cc5df9dce0f 100644 --- a/homeassistant/components/zwave/__init__.py +++ b/homeassistant/components/zwave/__init__.py @@ -26,6 +26,7 @@ from homeassistant.helpers.dispatcher import ( from . import const from . import config_flow # noqa pylint: disable=unused-import +from . import websocket_api as wsapi from .const import ( CONF_AUTOHEAL, CONF_DEBUG, CONF_POLLING_INTERVAL, CONF_USB_STICK_PATH, CONF_CONFIG_PATH, CONF_NETWORK_KEY, @@ -301,6 +302,8 @@ async def async_setup_entry(hass, config_entry): registry = await async_get_registry(hass) + wsapi.async_load_websocket_api(hass) + if use_debug: # pragma: no cover def log_all(signal, value=None): """Log all the signals.""" diff --git a/homeassistant/components/zwave/websocket_api.py b/homeassistant/components/zwave/websocket_api.py new file mode 100644 index 00000000000..415833814f8 --- /dev/null +++ b/homeassistant/components/zwave/websocket_api.py @@ -0,0 +1,33 @@ +"""Web socket API for Z-Wave.""" + +import logging + +import voluptuous as vol + +from homeassistant.components import websocket_api +from homeassistant.core import callback + +from .const import DATA_NETWORK + +_LOGGER = logging.getLogger(__name__) + +TYPE = 'type' +ID = 'id' + + +@websocket_api.require_admin +@websocket_api.websocket_command({ + vol.Required(TYPE): 'zwave/network_status' +}) +def websocket_network_status(hass, connection, msg): + """Get Z-Wave network status.""" + network = hass.data[DATA_NETWORK] + connection.send_result(msg[ID], { + 'state': network.state, + }) + + +@callback +def async_load_websocket_api(hass): + """Set up the web socket API.""" + websocket_api.async_register_command(hass, websocket_network_status)