Fix Comelit device info (#100587)

This commit is contained in:
Simone Chemelli 2023-09-24 14:51:56 +02:00 committed by Franck Nijhof
parent 0ae285c404
commit 49b8937bb3
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
2 changed files with 41 additions and 12 deletions

View File

@ -3,11 +3,14 @@ import asyncio
from datetime import timedelta
from typing import Any
from aiocomelit import ComeliteSerialBridgeApi
from aiocomelit import ComeliteSerialBridgeApi, ComelitSerialBridgeObject
from aiocomelit.const import BRIDGE
import aiohttp
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.exceptions import ConfigEntryAuthFailed
from homeassistant.helpers import device_registry as dr
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator, UpdateFailed
from .const import _LOGGER, DOMAIN
@ -16,6 +19,8 @@ from .const import _LOGGER, DOMAIN
class ComelitSerialBridge(DataUpdateCoordinator):
"""Queries Comelit Serial Bridge."""
config_entry: ConfigEntry
def __init__(self, hass: HomeAssistant, host: str, pin: int) -> None:
"""Initialize the scanner."""
@ -30,6 +35,38 @@ class ComelitSerialBridge(DataUpdateCoordinator):
name=f"{DOMAIN}-{host}-coordinator",
update_interval=timedelta(seconds=5),
)
device_registry = dr.async_get(self.hass)
device_registry.async_get_or_create(
config_entry_id=self.config_entry.entry_id,
identifiers={(DOMAIN, self.config_entry.entry_id)},
model=BRIDGE,
name=f"{BRIDGE} ({self.api.host})",
**self.basic_device_info,
)
@property
def basic_device_info(self) -> dict:
"""Set basic device info."""
return {
"manufacturer": "Comelit",
"hw_version": "20003101",
}
def platform_device_info(
self, device: ComelitSerialBridgeObject, platform: str
) -> dr.DeviceInfo:
"""Set platform device info."""
return dr.DeviceInfo(
identifiers={
(DOMAIN, f"{self.config_entry.entry_id}-{platform}-{device.index}")
},
via_device=(DOMAIN, self.config_entry.entry_id),
name=device.name,
model=f"{BRIDGE} {platform}",
**self.basic_device_info,
)
async def _async_update_data(self) -> dict[str, Any]:
"""Update router data."""

View File

@ -9,7 +9,6 @@ from aiocomelit.const import LIGHT, LIGHT_OFF, LIGHT_ON
from homeassistant.components.light import LightEntity
from homeassistant.config_entries import ConfigEntry
from homeassistant.core import HomeAssistant
from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity_platform import AddEntitiesCallback
from homeassistant.helpers.update_coordinator import CoordinatorEntity
@ -37,27 +36,20 @@ class ComelitLightEntity(CoordinatorEntity[ComelitSerialBridge], LightEntity):
"""Light device."""
_attr_has_entity_name = True
_attr_name = None
def __init__(
self,
coordinator: ComelitSerialBridge,
device: ComelitSerialBridgeObject,
config_entry_unique_id: str | None,
config_entry_unique_id: str,
) -> None:
"""Init light entity."""
self._api = coordinator.api
self._device = device
super().__init__(coordinator)
self._attr_name = device.name
self._attr_unique_id = f"{config_entry_unique_id}-{device.index}"
self._attr_device_info = DeviceInfo(
identifiers={
(DOMAIN, self._attr_unique_id),
},
manufacturer="Comelit",
model="Serial Bridge",
name=device.name,
)
self._attr_device_info = self.coordinator.platform_device_info(device, LIGHT)
async def _light_set_state(self, state: int) -> None:
"""Set desired light state."""