1 """Support for AVM FRITZ!SmartHome devices."""
3 from __future__
import annotations
11 from .const
import DOMAIN, LOGGER, PLATFORMS
12 from .coordinator
import FritzboxConfigEntry, FritzboxDataUpdateCoordinator
16 """Set up the AVM FRITZ!SmartHome platforms."""
18 def _update_unique_id(entry: RegistryEntry) -> dict[str, str] |
None:
19 """Update unique ID of entity entry."""
21 entry.unit_of_measurement == UnitOfTemperature.CELSIUS
22 and "_temperature" not in entry.unique_id
24 new_unique_id = f
"{entry.unique_id}_temperature"
26 "Migrating unique_id [%s] to [%s]", entry.unique_id, new_unique_id
28 return {
"new_unique_id": new_unique_id}
30 if entry.domain == BINARY_SENSOR_DOMAIN
and "_" not in entry.unique_id:
31 new_unique_id = f
"{entry.unique_id}_alarm"
33 "Migrating unique_id [%s] to [%s]", entry.unique_id, new_unique_id
35 return {
"new_unique_id": new_unique_id}
41 await coordinator.async_setup()
43 entry.runtime_data = coordinator
45 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
47 def logout_fritzbox(event: Event) ->
None:
48 """Close connections to this fritzbox."""
49 coordinator.fritz.logout()
51 entry.async_on_unload(
52 hass.bus.async_listen_once(EVENT_HOMEASSISTANT_STOP, logout_fritzbox)
59 """Unloading the AVM FRITZ!SmartHome platforms."""
60 await hass.async_add_executor_job(entry.runtime_data.fritz.logout)
62 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
66 hass: HomeAssistant, entry: FritzboxConfigEntry, device: DeviceEntry
68 """Remove Fritzbox config entry from a device."""
69 coordinator = entry.runtime_data
71 for identifier
in device.identifiers:
72 if identifier[0] == DOMAIN
and (
73 identifier[1]
in coordinator.data.devices
74 or identifier[1]
in coordinator.data.templates
None async_migrate_entries(HomeAssistant hass, dict[str, AdapterDetails] adapters, str default_adapter)
bool async_remove_config_entry_device(HomeAssistant hass, FritzboxConfigEntry entry, DeviceEntry device)
bool async_setup_entry(HomeAssistant hass, FritzboxConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, FritzboxConfigEntry entry)