1 """WebSocket based API for Home Assistant."""
3 from __future__
import annotations
5 from typing
import Final, cast
12 from .
import commands, connection, const, decorators, http, messages
13 from .connection
import ActiveConnection, current_connection
15 ERR_HOME_ASSISTANT_ERROR,
20 ERR_SERVICE_VALIDATION_ERROR,
27 AsyncWebSocketCommandHandler,
28 WebSocketCommandHandler,
30 from .decorators
import (
36 from .messages
import (
37 BASE_COMMAND_MESSAGE_SCHEMA,
43 DOMAIN: Final = const.DOMAIN
45 DEPENDENCIES: Final[tuple[str]] = (
"http",)
47 CONFIG_SCHEMA = cv.empty_config_schema(DOMAIN)
54 command_or_handler: str | const.WebSocketCommandHandler,
55 handler: const.WebSocketCommandHandler |
None =
None,
56 schema: VolSchemaType |
None =
None,
58 """Register a websocket command."""
60 handler = cast(const.WebSocketCommandHandler, command_or_handler)
61 command = handler._ws_command
62 schema = handler._ws_schema
64 command = command_or_handler
65 if (handlers := hass.data.get(DOMAIN))
is None:
66 handlers = hass.data[DOMAIN] = {}
67 handlers[command] = (handler, schema)
70 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
71 """Initialize the websocket API."""
73 commands.async_register_commands(hass, async_register_command)
None async_register_command(HomeAssistant hass, str|const .WebSocketCommandHandler command_or_handler, const .WebSocketCommandHandler|None handler=None, VolSchemaType|None schema=None)
bool async_setup(HomeAssistant hass, ConfigType config)