1 """Support for the Dynalite networks."""
3 from __future__
import annotations
5 import voluptuous
as vol
13 from .bridge
import DynaliteBridge
21 SERVICE_REQUEST_AREA_PRESET,
22 SERVICE_REQUEST_CHANNEL_LEVEL,
24 from .convert_config
import convert_config
25 from .panel
import async_register_dynalite_frontend
27 CONFIG_SCHEMA = cv.config_entry_only_config_schema(DOMAIN)
30 async
def async_setup(hass: HomeAssistant, config: ConfigType) -> bool:
31 """Set up the Dynalite platform."""
32 hass.data[DOMAIN] = {}
34 async
def dynalite_service(service_call: ServiceCall) ->
None:
35 data = service_call.data
36 host = data.get(ATTR_HOST,
"")
39 for bridge
in hass.data[DOMAIN].values()
40 if not host
or bridge.host == host
42 LOGGER.debug(
"Selected bridged for service call: %s", bridges)
43 if service_call.service == SERVICE_REQUEST_AREA_PRESET:
44 bridge_attr =
"request_area_preset"
45 elif service_call.service == SERVICE_REQUEST_CHANNEL_LEVEL:
46 bridge_attr =
"request_channel_level"
47 for bridge
in bridges:
48 getattr(bridge.dynalite_devices, bridge_attr)(
49 data[ATTR_AREA], data.get(ATTR_CHANNEL)
52 hass.services.async_register(
54 SERVICE_REQUEST_AREA_PRESET,
58 vol.Optional(ATTR_HOST): cv.string,
59 vol.Required(ATTR_AREA): int,
60 vol.Optional(ATTR_CHANNEL): int,
65 hass.services.async_register(
67 SERVICE_REQUEST_CHANNEL_LEVEL,
71 vol.Optional(ATTR_HOST): cv.string,
72 vol.Required(ATTR_AREA): int,
73 vol.Required(ATTR_CHANNEL): int,
84 """Reload entry since the data has changed."""
85 LOGGER.debug(
"Reconfiguring entry %s", entry.data)
86 bridge = hass.data[DOMAIN][entry.entry_id]
87 bridge.reload_config(entry.data)
88 LOGGER.debug(
"Reconfiguring entry finished %s", entry.data)
92 """Set up a bridge from a config entry."""
93 LOGGER.debug(
"Setting up entry %s", entry.data)
96 hass.data[DOMAIN][entry.entry_id] = bridge
97 entry.async_on_unload(entry.add_update_listener(async_entry_changed))
99 if not await bridge.async_setup():
100 LOGGER.error(
"Could not set up bridge for entry %s", entry.data)
101 hass.data[DOMAIN][entry.entry_id] =
None
102 raise ConfigEntryNotReady
104 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
109 """Unload a config entry."""
110 LOGGER.debug(
"Unloading entry %s", entry.data)
111 unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
113 hass.data[DOMAIN].pop(entry.entry_id)
dict[str, Any] convert_config(dict[str, Any]|MappingProxyType[str, Any] config)
def async_register_dynalite_frontend(HomeAssistant hass)
bool async_setup(HomeAssistant hass, ConfigType config)
bool async_setup_entry(HomeAssistant hass, ConfigEntry entry)
None async_entry_changed(HomeAssistant hass, ConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, ConfigEntry entry)