Обновить custom_components/motion_recorder/__init__.py

This commit is contained in:
2026-07-05 13:35:40 +03:00
parent 84127a1229
commit ab3de76de5
+15 -17
View File
@@ -11,25 +11,28 @@ _LOGGER = logging.getLogger(__name__)
PLATFORMS = ["sensor", "switch"] PLATFORMS = ["sensor", "switch"]
def _get_config_value(entry: ConfigEntry, key: str, default=None):
"""Get config value from options first, then from data, then default."""
return entry.options.get(key, entry.data.get(key, default))
async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool: async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Set up Motion Recorder from a config entry.""" """Set up Motion Recorder from a config entry."""
# Устанавливаем уровень логирования для всего домена
log_level = _get_config_value(entry, CONF_LOG_LEVEL, DEFAULT_LOG_LEVEL) log_level = _get_config_value(entry, CONF_LOG_LEVEL, DEFAULT_LOG_LEVEL)
logging.getLogger(f"custom_components.{DOMAIN}").setLevel(getattr(logging, log_level, logging.INFO)) logging.getLogger(f"custom_components.{DOMAIN}").setLevel(getattr(logging, log_level, logging.INFO))
_LOGGER.info("Motion Recorder integration loaded with log level: %s", log_level) _LOGGER.info("Motion Recorder integration loaded with log level: %s", log_level)
hass.data.setdefault(DOMAIN, {}) hass.data.setdefault(DOMAIN, {})
coordinator = MotionRecorderCoordinator(hass, entry) coordinator = MotionRecorderCoordinator(hass, entry)
await coordinator.async_setup() await coordinator.async_setup()
hass.data[DOMAIN][entry.entry_id] = coordinator hass.data[DOMAIN][entry.entry_id] = coordinator
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
# Добавляем listener для автоматической перезагрузки при изменении опций
entry.async_on_unload(entry.add_update_listener(_async_update_listener)) entry.async_on_unload(entry.add_update_listener(_async_update_listener))
return True return True
@@ -37,21 +40,16 @@ async def async_unload_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
"""Unload a config entry.""" """Unload a config entry."""
coordinator = hass.data[DOMAIN][entry.entry_id] coordinator = hass.data[DOMAIN][entry.entry_id]
await coordinator.async_shutdown() await coordinator.async_shutdown()
unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS) unload_ok = await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
if unload_ok: if unload_ok:
hass.data[DOMAIN].pop(entry.entry_id) hass.data[DOMAIN].pop(entry.entry_id)
return unload_ok return unload_ok
async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None: async def _async_update_listener(hass: HomeAssistant, entry: ConfigEntry) -> None:
"""Handle options update - reload the integration.""" """Handle options update - reload the integration."""
_LOGGER.info("Options updated, reloading Motion Recorder integration") _LOGGER.info("Options updated, reloading Motion Recorder integration")
await hass.config_entries.async_reload(entry.entry_id) await hass.config_entries.async_reload(entry.entry_id)
def _get_config_value(entry: ConfigEntry, key: str, default=None):
"""Get config value from options first, then from data, then default."""
return entry.options.get(key, entry.data.get(key, default))