1 """Plugwise platform for Home Assistant Core."""
3 from __future__
import annotations
12 from .const
import DOMAIN, LOGGER, PLATFORMS
13 from .coordinator
import PlugwiseDataUpdateCoordinator
15 type PlugwiseConfigEntry = ConfigEntry[PlugwiseDataUpdateCoordinator]
19 """Set up Plugwise components from a config entry."""
20 await er.async_migrate_entries(hass, entry.entry_id, async_migrate_entity_entry)
23 await coordinator.async_config_entry_first_refresh()
26 entry.runtime_data = coordinator
28 device_registry = dr.async_get(hass)
29 device_registry.async_get_or_create(
30 config_entry_id=entry.entry_id,
31 identifiers={(DOMAIN,
str(coordinator.api.gateway_id))},
32 manufacturer=
"Plugwise",
33 model=coordinator.api.smile_model,
34 model_id=coordinator.api.smile_model_id,
35 name=coordinator.api.smile_name,
36 sw_version=
str(coordinator.api.smile_version),
39 await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
45 """Unload the Plugwise components."""
46 return await hass.config_entries.async_unload_platforms(entry, PLATFORMS)
51 """Migrate Plugwise entity entries.
53 - Migrates old unique ID's from old binary_sensors and switches to the new unique ID's
55 if entry.domain == Platform.BINARY_SENSOR
and entry.unique_id.endswith(
59 "new_unique_id": entry.unique_id.replace(
60 "-slave_boiler_state",
"-secondary_boiler_state"
63 if entry.domain == Platform.SENSOR
and entry.unique_id.endswith(
67 "new_unique_id": entry.unique_id.replace(
"-relative_humidity",
"-humidity")
69 if entry.domain == Platform.SWITCH
and entry.unique_id.endswith(
"-plug"):
70 return {
"new_unique_id": entry.unique_id.replace(
"-plug",
"-relay")}
78 coordinator: PlugwiseDataUpdateCoordinator,
80 """Migrate Sensors if needed."""
81 ent_reg = er.async_get(hass)
85 for device_id, device
in coordinator.data.devices.items():
86 if device[
"dev_class"] !=
"heater_central":
89 old_unique_id = f
"{device_id}-outdoor_temperature"
90 if entity_id := ent_reg.async_get_entity_id(
91 Platform.SENSOR, DOMAIN, old_unique_id
93 new_unique_id = f
"{device_id}-outdoor_air_temperature"
95 "Migrating entity %s from old unique ID '%s' to new unique ID '%s'",
100 ent_reg.async_update_entity(entity_id, new_unique_id=new_unique_id)
bool async_setup_entry(HomeAssistant hass, PlugwiseConfigEntry entry)
bool async_unload_entry(HomeAssistant hass, PlugwiseConfigEntry entry)
dict[str, Any]|None async_migrate_entity_entry(er.RegistryEntry entry)
None migrate_sensor_entities(HomeAssistant hass, PlugwiseDataUpdateCoordinator coordinator)