Home Assistant Unofficial Reference 2024.12.1
__init__.py
Go to the documentation of this file.
1 """Insteon API interface for the frontend."""
2 
3 from insteon_frontend import get_build_id, locate_dir
4 
5 from homeassistant.components import panel_custom, websocket_api
6 from homeassistant.components.http import StaticPathConfig
7 from homeassistant.core import HomeAssistant, callback
8 
9 from ..const import CONF_DEV_PATH, DOMAIN
10 from .aldb import (
11  websocket_add_default_links,
12  websocket_change_aldb_record,
13  websocket_create_aldb_record,
14  websocket_get_aldb,
15  websocket_load_aldb,
16  websocket_notify_on_aldb_status,
17  websocket_notify_on_aldb_status_all,
18  websocket_reset_aldb,
19  websocket_write_aldb,
20 )
21 from .config import (
22  websocket_add_device_override,
23  websocket_get_broken_links,
24  websocket_get_config,
25  websocket_get_modem_schema,
26  websocket_get_unknown_devices,
27  websocket_remove_device_override,
28  websocket_update_modem_config,
29 )
30 from .device import (
31  websocket_add_device,
32  websocket_add_x10_device,
33  websocket_cancel_add_device,
34  websocket_get_device,
35  websocket_remove_device,
36 )
37 from .properties import (
38  websocket_change_properties_record,
39  websocket_get_properties,
40  websocket_load_properties,
41  websocket_reset_properties,
42  websocket_write_properties,
43 )
44 from .scenes import (
45  websocket_delete_scene,
46  websocket_get_scene,
47  websocket_get_scenes,
48  websocket_save_scene,
49 )
50 
51 URL_BASE = "/insteon_static"
52 
53 
54 @callback
55 def async_load_api(hass):
56  """Set up the web socket API."""
57  websocket_api.async_register_command(hass, websocket_get_device)
58  websocket_api.async_register_command(hass, websocket_add_device)
59  websocket_api.async_register_command(hass, websocket_cancel_add_device)
60 
61  websocket_api.async_register_command(hass, websocket_get_scenes)
62  websocket_api.async_register_command(hass, websocket_get_scene)
63  websocket_api.async_register_command(hass, websocket_save_scene)
64  websocket_api.async_register_command(hass, websocket_delete_scene)
65 
66  websocket_api.async_register_command(hass, websocket_get_aldb)
67  websocket_api.async_register_command(hass, websocket_change_aldb_record)
68  websocket_api.async_register_command(hass, websocket_create_aldb_record)
69  websocket_api.async_register_command(hass, websocket_write_aldb)
70  websocket_api.async_register_command(hass, websocket_load_aldb)
71  websocket_api.async_register_command(hass, websocket_reset_aldb)
72  websocket_api.async_register_command(hass, websocket_add_default_links)
73  websocket_api.async_register_command(hass, websocket_notify_on_aldb_status)
74  websocket_api.async_register_command(hass, websocket_add_x10_device)
75  websocket_api.async_register_command(hass, websocket_remove_device)
76  websocket_api.async_register_command(hass, websocket_notify_on_aldb_status_all)
77 
78  websocket_api.async_register_command(hass, websocket_get_properties)
79  websocket_api.async_register_command(hass, websocket_change_properties_record)
80  websocket_api.async_register_command(hass, websocket_write_properties)
81  websocket_api.async_register_command(hass, websocket_load_properties)
82  websocket_api.async_register_command(hass, websocket_reset_properties)
83 
84  websocket_api.async_register_command(hass, websocket_get_config)
85  websocket_api.async_register_command(hass, websocket_get_modem_schema)
86  websocket_api.async_register_command(hass, websocket_update_modem_config)
87  websocket_api.async_register_command(hass, websocket_add_device_override)
88  websocket_api.async_register_command(hass, websocket_remove_device_override)
89  websocket_api.async_register_command(hass, websocket_get_broken_links)
90  websocket_api.async_register_command(hass, websocket_get_unknown_devices)
91 
92 
93 async def async_register_insteon_frontend(hass: HomeAssistant):
94  """Register the Insteon frontend configuration panel."""
95  # Add to sidepanel if needed
96  if DOMAIN not in hass.data.get("frontend_panels", {}):
97  dev_path = hass.data.get(DOMAIN, {}).get(CONF_DEV_PATH)
98  is_dev = dev_path is not None
99  path = dev_path if dev_path else locate_dir()
100  build_id = get_build_id(is_dev)
101  await hass.http.async_register_static_paths(
102  [StaticPathConfig(URL_BASE, path, cache_headers=not is_dev)]
103  )
104 
105  await panel_custom.async_register_panel(
106  hass=hass,
107  frontend_url_path=DOMAIN,
108  webcomponent_name="insteon-frontend",
109  config_panel_domain=DOMAIN,
110  module_url=f"{URL_BASE}/entrypoint-{build_id}.js",
111  embed_iframe=True,
112  require_admin=True,
113  )
web.Response get(self, web.Request request, str config_key)
Definition: view.py:88
def async_register_insteon_frontend(HomeAssistant hass)
Definition: __init__.py:93