Fix switches list for Comelit SmartHome (#102336)

* fix switches list

* make entities a single list

* fix duplicate ids

* move comment to a better position
This commit is contained in:
Simone Chemelli 2023-10-21 16:57:11 +02:00 committed by GitHub
parent faa149b71a
commit 3896ed47be
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 8 deletions

View File

@ -26,7 +26,6 @@ async def async_setup_entry(
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
# Use config_entry.entry_id as base for unique_id because no serial number or mac is available
async_add_entities( async_add_entities(
ComelitCoverEntity(coordinator, device, config_entry.entry_id) ComelitCoverEntity(coordinator, device, config_entry.entry_id)
for device in coordinator.data[COVER].values() for device in coordinator.data[COVER].values()
@ -52,6 +51,7 @@ class ComelitCoverEntity(
self._api = coordinator.api self._api = coordinator.api
self._device = device self._device = device
super().__init__(coordinator) super().__init__(coordinator)
# Use config_entry.entry_id as base for unique_id because no serial number or mac is available
self._attr_unique_id = f"{config_entry_entry_id}-{device.index}" self._attr_unique_id = f"{config_entry_entry_id}-{device.index}"
self._attr_device_info = coordinator.platform_device_info(device) self._attr_device_info = coordinator.platform_device_info(device)
# Device doesn't provide a status so we assume UNKNOWN at first startup # Device doesn't provide a status so we assume UNKNOWN at first startup

View File

@ -25,7 +25,6 @@ async def async_setup_entry(
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
# Use config_entry.entry_id as base for unique_id because no serial number or mac is available
async_add_entities( async_add_entities(
ComelitLightEntity(coordinator, device, config_entry.entry_id) ComelitLightEntity(coordinator, device, config_entry.entry_id)
for device in coordinator.data[LIGHT].values() for device in coordinator.data[LIGHT].values()
@ -48,6 +47,7 @@ class ComelitLightEntity(CoordinatorEntity[ComelitSerialBridge], LightEntity):
self._api = coordinator.api self._api = coordinator.api
self._device = device self._device = device
super().__init__(coordinator) super().__init__(coordinator)
# Use config_entry.entry_id as base for unique_id because no serial number or mac is available
self._attr_unique_id = f"{config_entry_entry_id}-{device.index}" self._attr_unique_id = f"{config_entry_entry_id}-{device.index}"
self._attr_device_info = coordinator.platform_device_info(device) self._attr_device_info = coordinator.platform_device_info(device)

View File

@ -25,13 +25,16 @@ async def async_setup_entry(
coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id] coordinator: ComelitSerialBridge = hass.data[DOMAIN][config_entry.entry_id]
# Use config_entry.entry_id as base for unique_id because no serial number or mac is available entities: list[ComelitSwitchEntity] = []
async_add_entities( entities.extend(
ComelitSwitchEntity(coordinator, device, config_entry.entry_id) ComelitSwitchEntity(coordinator, device, config_entry.entry_id)
for device in ( for device in coordinator.data[IRRIGATION].values()
coordinator.data[OTHER].values() + coordinator.data[IRRIGATION].values()
) )
entities.extend(
ComelitSwitchEntity(coordinator, device, config_entry.entry_id)
for device in coordinator.data[OTHER].values()
) )
async_add_entities(entities)
class ComelitSwitchEntity(CoordinatorEntity[ComelitSerialBridge], SwitchEntity): class ComelitSwitchEntity(CoordinatorEntity[ComelitSerialBridge], SwitchEntity):
@ -50,7 +53,8 @@ class ComelitSwitchEntity(CoordinatorEntity[ComelitSerialBridge], SwitchEntity):
self._api = coordinator.api self._api = coordinator.api
self._device = device self._device = device
super().__init__(coordinator) super().__init__(coordinator)
self._attr_unique_id = f"{config_entry_entry_id}-{device.index}" # Use config_entry.entry_id as base for unique_id because no serial number or mac is available
self._attr_unique_id = f"{config_entry_entry_id}-{device.type}-{device.index}"
self._attr_device_info = coordinator.platform_device_info(device) self._attr_device_info = coordinator.platform_device_info(device)
if device.type == OTHER: if device.type == OTHER:
self._attr_device_class = SwitchDeviceClass.OUTLET self._attr_device_class = SwitchDeviceClass.OUTLET