mirror of
https://github.com/home-assistant/core.git
synced 2025-07-23 13:17:32 +00:00
Fix Lutron Caseta area names by ignoring root area during area name retrieval (#80576)
This commit is contained in:
parent
03bf37e12c
commit
3f3518e29d
@ -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
|
||||||
|
@ -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": {
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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):
|
||||||
|
@ -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": {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user