Velux use node id as fallback for unique id (#117508)

Co-authored-by: Robert Resch <robert@resch.dev>
This commit is contained in:
DeerMaximum 2024-08-01 14:32:37 +02:00 committed by GitHub
parent faedba0407
commit f5e88b8293
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 10 additions and 6 deletions

View File

@ -108,10 +108,14 @@ class VeluxEntity(Entity):
_attr_should_poll = False _attr_should_poll = False
def __init__(self, node: Node) -> None: def __init__(self, node: Node, config_entry_id: str) -> None:
"""Initialize the Velux device.""" """Initialize the Velux device."""
self.node = node self.node = node
self._attr_unique_id = node.serial_number self._attr_unique_id = (
node.serial_number
if node.serial_number
else f"{config_entry_id}_{node.node_id}"
)
self._attr_name = node.name if node.name else f"#{node.node_id}" self._attr_name = node.name if node.name else f"#{node.node_id}"
@callback @callback

View File

@ -29,7 +29,7 @@ async def async_setup_entry(
"""Set up cover(s) for Velux platform.""" """Set up cover(s) for Velux platform."""
module = hass.data[DOMAIN][config.entry_id] module = hass.data[DOMAIN][config.entry_id]
async_add_entities( async_add_entities(
VeluxCover(node) VeluxCover(node, config.entry_id)
for node in module.pyvlx.nodes for node in module.pyvlx.nodes
if isinstance(node, OpeningDevice) if isinstance(node, OpeningDevice)
) )
@ -41,9 +41,9 @@ class VeluxCover(VeluxEntity, CoverEntity):
_is_blind = False _is_blind = False
node: OpeningDevice node: OpeningDevice
def __init__(self, node: OpeningDevice) -> None: def __init__(self, node: OpeningDevice, config_entry_id: str) -> None:
"""Initialize VeluxCover.""" """Initialize VeluxCover."""
super().__init__(node) super().__init__(node, config_entry_id)
self._attr_device_class = CoverDeviceClass.WINDOW self._attr_device_class = CoverDeviceClass.WINDOW
if isinstance(node, Awning): if isinstance(node, Awning):
self._attr_device_class = CoverDeviceClass.AWNING self._attr_device_class = CoverDeviceClass.AWNING

View File

@ -23,7 +23,7 @@ async def async_setup_entry(
module = hass.data[DOMAIN][config.entry_id] module = hass.data[DOMAIN][config.entry_id]
async_add_entities( async_add_entities(
VeluxLight(node) VeluxLight(node, config.entry_id)
for node in module.pyvlx.nodes for node in module.pyvlx.nodes
if isinstance(node, LighteningDevice) if isinstance(node, LighteningDevice)
) )