Fix Lutron Caseta area names by ignoring root area during area name retrieval (#80576)

This commit is contained in:
Kevin Addeman 2022-10-23 18:28:15 -04:00 committed by GitHub
parent 03bf37e12c
commit 3f3518e29d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 28 additions and 20 deletions

View File

@ -375,19 +375,25 @@ def _handle_none_keypad_serial(keypad_device: dict, bridge_serial: int) -> str:
return keypad_device["serial"] or f"{bridge_serial}_{keypad_device['device_id']}" return keypad_device["serial"] or f"{bridge_serial}_{keypad_device['device_id']}"
def _area_name_from_id(areas: dict[str, dict], area_id: str) -> str: def _area_name_from_id(areas: dict[str, dict], area_id: str | None) -> str:
"""Return the full area name including parent(s).""" """Return the full area name including parent(s)."""
if area_id is None: if area_id is None:
return UNASSIGNED_AREA return UNASSIGNED_AREA
return _construct_area_name_from_id(areas, area_id, [])
def _construct_area_name_from_id(
areas: dict[str, dict], area_id: str, labels: list[str]
) -> str:
"""Recursively construct the full area name including parent(s)."""
area = areas[area_id] area = areas[area_id]
if "parent_id" in area: parent_area_id = area["parent_id"]
parent_area = area["parent_id"] if parent_area_id is None:
if parent_area is not None: # This is the root area, return last area
return f"{_area_name_from_id(areas, parent_area)} {area['name']}" return " ".join(labels)
return area["name"] labels.insert(0, area["name"])
return _construct_area_name_from_id(areas, parent_area_id, labels)
@callback @callback

View File

@ -2,7 +2,7 @@
"domain": "lutron_caseta", "domain": "lutron_caseta",
"name": "Lutron Cas\u00e9ta", "name": "Lutron Cas\u00e9ta",
"documentation": "https://www.home-assistant.io/integrations/lutron_caseta", "documentation": "https://www.home-assistant.io/integrations/lutron_caseta",
"requirements": ["pylutron-caseta==0.16.0"], "requirements": ["pylutron-caseta==0.17.1"],
"config_flow": true, "config_flow": true,
"zeroconf": ["_leap._tcp.local."], "zeroconf": ["_leap._tcp.local."],
"homekit": { "homekit": {

View File

@ -1688,7 +1688,7 @@ pylitejet==0.3.0
pylitterbot==2022.10.2 pylitterbot==2022.10.2
# homeassistant.components.lutron_caseta # homeassistant.components.lutron_caseta
pylutron-caseta==0.16.0 pylutron-caseta==0.17.1
# homeassistant.components.lutron # homeassistant.components.lutron
pylutron==0.2.8 pylutron==0.2.8

View File

@ -1189,7 +1189,7 @@ pylitejet==0.3.0
pylitterbot==2022.10.2 pylitterbot==2022.10.2
# homeassistant.components.lutron_caseta # homeassistant.components.lutron_caseta
pylutron-caseta==0.16.0 pylutron-caseta==0.17.1
# homeassistant.components.mailgun # homeassistant.components.mailgun
pymailgunner==1.4 pymailgunner==1.4

View File

@ -129,13 +129,14 @@ class MockBridge:
def load_areas(self): def load_areas(self):
"""Loak mock areas into self.areas.""" """Loak mock areas into self.areas."""
return { return {
"898": {"id": "898", "name": "Basement", "parent_id": None}, "3": {"id": "3", "name": "House", "parent_id": None},
"898": {"id": "898", "name": "Basement", "parent_id": "3"},
"822": {"id": "822", "name": "Bedroom", "parent_id": "898"}, "822": {"id": "822", "name": "Bedroom", "parent_id": "898"},
"910": {"id": "910", "name": "Bathroom", "parent_id": "898"}, "910": {"id": "910", "name": "Bathroom", "parent_id": "898"},
"1024": {"id": "1024", "name": "Master Bedroom", "parent_id": None}, "1024": {"id": "1024", "name": "Master Bedroom", "parent_id": "3"},
"1025": {"id": "1025", "name": "Kitchen", "parent_id": None}, "1025": {"id": "1025", "name": "Kitchen", "parent_id": "3"},
"1026": {"id": "1026", "name": "Dining Room", "parent_id": None}, "1026": {"id": "1026", "name": "Dining Room", "parent_id": "3"},
"1205": {"id": "1205", "name": "Hallway", "parent_id": None}, "1205": {"id": "1205", "name": "Hallway", "parent_id": "3"},
} }
def load_devices(self): def load_devices(self):

View File

@ -41,13 +41,14 @@ async def test_diagnostics(hass, hass_client) -> None:
assert diag == { assert diag == {
"bridge_data": { "bridge_data": {
"areas": { "areas": {
"898": {"id": "898", "name": "Basement", "parent_id": None}, "3": {"id": "3", "name": "House", "parent_id": None},
"898": {"id": "898", "name": "Basement", "parent_id": "3"},
"822": {"id": "822", "name": "Bedroom", "parent_id": "898"}, "822": {"id": "822", "name": "Bedroom", "parent_id": "898"},
"910": {"id": "910", "name": "Bathroom", "parent_id": "898"}, "910": {"id": "910", "name": "Bathroom", "parent_id": "898"},
"1024": {"id": "1024", "name": "Master Bedroom", "parent_id": None}, "1024": {"id": "1024", "name": "Master Bedroom", "parent_id": "3"},
"1025": {"id": "1025", "name": "Kitchen", "parent_id": None}, "1025": {"id": "1025", "name": "Kitchen", "parent_id": "3"},
"1026": {"id": "1026", "name": "Dining Room", "parent_id": None}, "1026": {"id": "1026", "name": "Dining Room", "parent_id": "3"},
"1205": {"id": "1205", "name": "Hallway", "parent_id": None}, "1205": {"id": "1205", "name": "Hallway", "parent_id": "3"},
}, },
"buttons": { "buttons": {
"111": { "111": {