1 """The Network Configuration integration websocket commands."""
3 from __future__
import annotations
5 from contextlib
import suppress
8 import voluptuous
as vol
15 from .const
import ATTR_ADAPTERS, ATTR_CONFIGURED_ADAPTERS, NETWORK_CONFIG_SCHEMA
16 from .network
import async_get_network
21 """Register network websocket commands."""
22 websocket_api.async_register_command(hass, websocket_network_adapters)
23 websocket_api.async_register_command(hass, websocket_network_adapters_configure)
24 websocket_api.async_register_command(hass, websocket_network_url)
27 @websocket_api.require_admin
28 @websocket_api.websocket_command({vol.Required("type"):
"network"})
29 @websocket_api.async_response
32 connection: ActiveConnection,
35 """Return network preferences."""
37 connection.send_result(
40 ATTR_ADAPTERS: network.adapters,
41 ATTR_CONFIGURED_ADAPTERS: network.configured_adapters,
46 @websocket_api.require_admin
47 @websocket_api.websocket_command(
{
vol.Required("type"):
"network/configure",
48 vol.Required(
"config", default={}): NETWORK_CONFIG_SCHEMA,
51 @websocket_api.async_response
54 connection: ActiveConnection,
57 """Update network config."""
60 await network.async_reconfig(msg[
"config"])
62 connection.send_result(
64 {ATTR_CONFIGURED_ADAPTERS: network.configured_adapters},
69 @websocket_api.require_admin
70 @websocket_api.websocket_command(
{
vol.Required("type"):
"network/url",
75 connection: ActiveConnection,
78 """Get the internal, external, and cloud URLs."""
82 with suppress(NoURLAvailableError):
84 hass, allow_internal=
True, allow_external=
False, allow_cloud=
False
86 with suppress(NoURLAvailableError):
88 hass, allow_internal=
False, allow_external=
True, prefer_external=
True
90 with suppress(NoURLAvailableError):
91 cloud_url =
get_url(hass, allow_internal=
False, require_cloud=
True)
93 connection.send_result(
96 "internal": internal_url,
97 "external": external_url,
101 Network async_get_network(HomeAssistant hass)
None websocket_network_adapters_configure(HomeAssistant hass, ActiveConnection connection, dict[str, Any] msg)
None async_register_websocket_commands(HomeAssistant hass)
None websocket_network_url(HomeAssistant hass, ActiveConnection connection, dict[str, Any] msg)
None websocket_network_adapters(HomeAssistant hass, ActiveConnection connection, dict[str, Any] msg)
str get_url(HomeAssistant hass, *bool require_current_request=False, bool require_ssl=False, bool require_standard_port=False, bool require_cloud=False, bool allow_internal=True, bool allow_external=True, bool allow_cloud=True, bool|None allow_ip=None, bool|None prefer_external=None, bool prefer_cloud=False)