Mill device id

Signed-off-by: Daniel Hjelseth Høyer <github@dahoiv.net>
This commit is contained in:
Daniel Hjelseth Høyer 2024-12-18 20:02:02 +01:00
parent 5014f305bf
commit 9e41f7c9ba
3 changed files with 36 additions and 22 deletions

View File

@ -11,6 +11,7 @@ from homeassistant.config_entries import ConfigEntry
from homeassistant.const import CONF_IP_ADDRESS, CONF_PASSWORD, CONF_USERNAME, Platform
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryNotReady
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.aiohttp_client import async_get_clientsession
from .const import CLOUD, CONNECTION_TYPE, DOMAIN, LOCAL
@ -55,6 +56,18 @@ async def async_setup_entry(hass: HomeAssistant, entry: ConfigEntry) -> bool:
await data_coordinator.async_config_entry_first_refresh()
hass.data[DOMAIN][conn_type][key] = data_coordinator
if entry.data.get(CONNECTION_TYPE) == CLOUD:
device_registry = dr.async_get(hass)
for mill_device in mill_data_connection.devices.values():
# migrate to new device ids
device_entry = device_registry.async_get_device(
identifiers={(DOMAIN, mill_device.device_id)}
)
if device_entry and entry.entry_id in device_entry.config_entries:
device_registry.async_update_device(
device_entry.id, new_identifiers={(DOMAIN, mill_device.mac_address)}
)
await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS)
return True

View File

@ -113,7 +113,7 @@ class MillHeater(CoordinatorEntity[MillDataUpdateCoordinator], ClimateEntity):
self._id = heater.device_id
self._attr_unique_id = heater.device_id
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, heater.device_id)},
identifiers={(DOMAIN, heater.mac_address)},
manufacturer=MANUFACTURER,
model=heater.model,
name=heater.name,
@ -197,16 +197,16 @@ class LocalMillHeater(CoordinatorEntity[MillDataUpdateCoordinator], ClimateEntit
def __init__(self, coordinator: MillDataUpdateCoordinator) -> None:
"""Initialize the thermostat."""
super().__init__(coordinator)
if mac := coordinator.mill_data_connection.mac_address:
self._attr_unique_id = mac
self._attr_device_info = DeviceInfo(
connections={(CONNECTION_NETWORK_MAC, mac)},
configuration_url=self.coordinator.mill_data_connection.url,
manufacturer=MANUFACTURER,
model="Generation 3",
name=coordinator.mill_data_connection.name,
sw_version=coordinator.mill_data_connection.version,
)
mac = coordinator.mill_data_connection.mac_address
self._attr_unique_id = mac
self._attr_device_info = DeviceInfo(
connections={(CONNECTION_NETWORK_MAC, mac)},
configuration_url=self.coordinator.mill_data_connection.url,
manufacturer=MANUFACTURER,
model="Generation 3",
name=coordinator.mill_data_connection.name,
sw_version=coordinator.mill_data_connection.version,
)
self._update_attr()

View File

@ -193,7 +193,7 @@ class MillSensor(CoordinatorEntity, SensorEntity):
self._available = False
self._attr_unique_id = f"{mill_device.device_id}_{entity_description.key}"
self._attr_device_info = DeviceInfo(
identifiers={(DOMAIN, mill_device.device_id)},
identifiers={(DOMAIN, mill_device.mac_address)},
name=mill_device.name,
manufacturer=MANUFACTURER,
model=mill_device.model,
@ -227,16 +227,17 @@ class LocalMillSensor(CoordinatorEntity, SensorEntity):
super().__init__(coordinator)
self.entity_description = entity_description
if mac := coordinator.mill_data_connection.mac_address:
self._attr_unique_id = f"{mac}_{entity_description.key}"
self._attr_device_info = DeviceInfo(
connections={(CONNECTION_NETWORK_MAC, mac)},
configuration_url=self.coordinator.mill_data_connection.url,
manufacturer=MANUFACTURER,
model="Generation 3",
name=coordinator.mill_data_connection.name,
sw_version=coordinator.mill_data_connection.version,
)
mac = coordinator.mill_data_connection.mac_address
self._attr_unique_id = f"{mac}_{entity_description.key}"
self._attr_device_info = DeviceInfo(
connections={(CONNECTION_NETWORK_MAC, mac)},
configuration_url=self.coordinator.mill_data_connection.url,
identifiers={(DOMAIN, mac)},
manufacturer=MANUFACTURER,
model="Generation 3",
name=coordinator.mill_data_connection.name,
sw_version=coordinator.mill_data_connection.version,
)
@property
def native_value(self):