From ca34541b04671e30bae88f6b2b9d91d4d6babae8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Mon, 13 Jan 2025 20:06:19 +0100 Subject: [PATCH] Register Airzone WebServer device (#135538) --- homeassistant/components/airzone/__init__.py | 26 +++++++++++++++++++- homeassistant/components/airzone/entity.py | 6 +++-- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/homeassistant/components/airzone/__init__.py b/homeassistant/components/airzone/__init__.py index 5d1f9f051a3..39e4f73aa38 100644 --- a/homeassistant/components/airzone/__init__.py +++ b/homeassistant/components/airzone/__init__.py @@ -5,7 +5,14 @@ from __future__ import annotations import logging from typing import Any -from aioairzone.const import AZD_MAC, AZD_WEBSERVER, DEFAULT_SYSTEM_ID +from aioairzone.const import ( + AZD_FIRMWARE, + AZD_FULL_NAME, + AZD_MAC, + AZD_MODEL, + AZD_WEBSERVER, + DEFAULT_SYSTEM_ID, +) from aioairzone.localapi import AirzoneLocalApi, ConnectionOptions from homeassistant.config_entries import ConfigEntry @@ -17,6 +24,7 @@ from homeassistant.helpers import ( entity_registry as er, ) +from .const import DOMAIN, MANUFACTURER from .coordinator import AirzoneUpdateCoordinator PLATFORMS: list[Platform] = [ @@ -88,6 +96,22 @@ async def async_setup_entry(hass: HomeAssistant, entry: AirzoneConfigEntry) -> b entry.runtime_data = coordinator + device_registry = dr.async_get(hass) + + ws_data: dict[str, Any] | None = coordinator.data.get(AZD_WEBSERVER) + if ws_data is not None: + mac = ws_data.get(AZD_MAC, "") + + device_registry.async_get_or_create( + config_entry_id=entry.entry_id, + connections={(dr.CONNECTION_NETWORK_MAC, mac)}, + identifiers={(DOMAIN, f"{entry.entry_id}_ws")}, + manufacturer=MANUFACTURER, + model=ws_data.get(AZD_MODEL), + name=ws_data.get(AZD_FULL_NAME), + sw_version=ws_data.get(AZD_FIRMWARE), + ) + await hass.config_entries.async_forward_entry_setups(entry, PLATFORMS) return True diff --git a/homeassistant/components/airzone/entity.py b/homeassistant/components/airzone/entity.py index 61f79eabf52..59d58fb62b0 100644 --- a/homeassistant/components/airzone/entity.py +++ b/homeassistant/components/airzone/entity.py @@ -68,8 +68,9 @@ class AirzoneSystemEntity(AirzoneEntity): model=self.get_airzone_value(AZD_MODEL), name=f"System {self.system_id}", sw_version=self.get_airzone_value(AZD_FIRMWARE), - via_device=(DOMAIN, f"{entry.entry_id}_ws"), ) + if AZD_WEBSERVER in self.coordinator.data: + self._attr_device_info["via_device"] = (DOMAIN, f"{entry.entry_id}_ws") self._attr_unique_id = entry.unique_id or entry.entry_id @property @@ -102,8 +103,9 @@ class AirzoneHotWaterEntity(AirzoneEntity): manufacturer=MANUFACTURER, model="DHW", name=self.get_airzone_value(AZD_NAME), - via_device=(DOMAIN, f"{entry.entry_id}_ws"), ) + if AZD_WEBSERVER in self.coordinator.data: + self._attr_device_info["via_device"] = (DOMAIN, f"{entry.entry_id}_ws") self._attr_unique_id = entry.unique_id or entry.entry_id def get_airzone_value(self, key: str) -> Any: