1
0
mirror of https://github.com/home-assistant/core.git synced 2026-05-08 09:38:58 +01:00

Fix Aladdin Connect state not updating (#151652)

Co-authored-by: Joostlek <joostlek@outlook.com>
This commit is contained in:
hbludworth
2025-09-12 14:16:37 -06:00
committed by GitHub
parent 3472020812
commit 0ac7cb311d
7 changed files with 15 additions and 21 deletions
@@ -3,7 +3,6 @@
from __future__ import annotations
from genie_partner_sdk.client import AladdinConnectClient
from genie_partner_sdk.model import GarageDoor
from homeassistant.const import Platform
from homeassistant.core import HomeAssistant
@@ -36,22 +35,7 @@ async def async_setup_entry(
api.AsyncConfigEntryAuth(aiohttp_client.async_get_clientsession(hass), session)
)
sdk_doors = await client.get_doors()
# Convert SDK GarageDoor objects to integration GarageDoor objects
doors = [
GarageDoor(
{
"device_id": door.device_id,
"door_number": door.door_number,
"name": door.name,
"status": door.status,
"link_status": door.link_status,
"battery_level": door.battery_level,
}
)
for door in sdk_doors
]
doors = await client.get_doors()
entry.runtime_data = {
door.unique_id: AladdinConnectCoordinator(hass, entry, client, door)
@@ -41,4 +41,10 @@ class AladdinConnectCoordinator(DataUpdateCoordinator[GarageDoor]):
async def _async_update_data(self) -> GarageDoor:
"""Fetch data from the Aladdin Connect API."""
await self.client.update_door(self.data.device_id, self.data.door_number)
self.data.status = self.client.get_door_status(
self.data.device_id, self.data.door_number
)
self.data.battery_level = self.client.get_battery_status(
self.data.device_id, self.data.door_number
)
return self.data
@@ -49,7 +49,9 @@ class AladdinCoverEntity(AladdinConnectEntity, CoverEntity):
@property
def is_closed(self) -> bool | None:
"""Update is closed attribute."""
return self.coordinator.data.status == "closed"
if (status := self.coordinator.data.status) is None:
return None
return status == "closed"
@property
def is_closing(self) -> bool | None:
@@ -12,5 +12,5 @@
"documentation": "https://www.home-assistant.io/integrations/aladdin_connect",
"integration_type": "hub",
"iot_class": "cloud_polling",
"requirements": ["genie-partner-sdk==1.0.10"]
"requirements": ["genie-partner-sdk==1.0.11"]
}
+1 -1
View File
@@ -1005,7 +1005,7 @@ gassist-text==0.0.14
gcal-sync==8.0.0
# homeassistant.components.aladdin_connect
genie-partner-sdk==1.0.10
genie-partner-sdk==1.0.11
# homeassistant.components.geniushub
geniushub-client==0.7.1
+1 -1
View File
@@ -875,7 +875,7 @@ gassist-text==0.0.14
gcal-sync==8.0.0
# homeassistant.components.aladdin_connect
genie-partner-sdk==1.0.10
genie-partner-sdk==1.0.11
# homeassistant.components.geniushub
geniushub-client==0.7.1
@@ -30,6 +30,7 @@ async def test_setup_entry(hass: HomeAssistant) -> None:
mock_door.status = "closed"
mock_door.link_status = "connected"
mock_door.battery_level = 100
mock_door.unique_id = f"{mock_door.device_id}-{mock_door.door_number}"
mock_client = AsyncMock()
mock_client.get_doors.return_value = [mock_door]
@@ -80,6 +81,7 @@ async def test_unload_entry(hass: HomeAssistant) -> None:
mock_door.status = "closed"
mock_door.link_status = "connected"
mock_door.battery_level = 100
mock_door.unique_id = f"{mock_door.device_id}-{mock_door.door_number}"
# Mock client
mock_client = AsyncMock()