mirror of
https://github.com/home-assistant/core.git
synced 2025-11-09 10:59:40 +00:00
Add device name to llm exposed entities info
This commit is contained in:
@@ -658,19 +658,27 @@ def _get_exposed_entities(
|
||||
|
||||
entity_entry = entity_registry.async_get(state.entity_id)
|
||||
names = [state.name]
|
||||
device_name = None
|
||||
area_names = []
|
||||
|
||||
if entity_entry is not None:
|
||||
names.extend(entity_entry.aliases)
|
||||
device = (
|
||||
device_registry.async_get(entity_entry.device_id)
|
||||
if entity_entry.device_id
|
||||
else None
|
||||
)
|
||||
|
||||
if device:
|
||||
device_name = device.name_by_user or device.name
|
||||
|
||||
if entity_entry.area_id and (
|
||||
area := area_registry.async_get_area(entity_entry.area_id)
|
||||
):
|
||||
# Entity is in area
|
||||
area_names.append(area.name)
|
||||
area_names.extend(area.aliases)
|
||||
elif entity_entry.device_id and (
|
||||
device := device_registry.async_get(entity_entry.device_id)
|
||||
):
|
||||
elif device:
|
||||
# Check device area
|
||||
if device.area_id and (
|
||||
area := area_registry.async_get_area(device.area_id)
|
||||
@@ -691,6 +699,9 @@ def _get_exposed_entities(
|
||||
if (parsed_utc := dt_util.parse_datetime(state.state)) is not None:
|
||||
info["state"] = dt_util.as_local(parsed_utc).isoformat()
|
||||
|
||||
if device_name:
|
||||
info["device"] = device_name
|
||||
|
||||
if area_names:
|
||||
info["areas"] = ", ".join(area_names)
|
||||
|
||||
|
||||
@@ -453,6 +453,7 @@ async def test_assist_api_prompt(
|
||||
connections={("test", "1234")},
|
||||
suggested_area="Test Area",
|
||||
)
|
||||
device_registry.async_update_device(device.id, name_by_user="Friendly Device")
|
||||
area = area_registry.async_get_area_by_name("Test Area")
|
||||
area_registry.async_update(area.id, aliases=["Alternative name"])
|
||||
entry1 = entity_registry.async_get_or_create(
|
||||
@@ -580,6 +581,7 @@ async def test_assist_api_prompt(
|
||||
- names: '1'
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: 1
|
||||
areas: Test Area 2
|
||||
- names: Kitchen
|
||||
domain: light
|
||||
@@ -590,34 +592,42 @@ async def test_assist_api_prompt(
|
||||
- names: Living Room
|
||||
domain: light
|
||||
state: 'on'
|
||||
device: Friendly Device
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Device, my test light
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Friendly Device
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Device 2
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Device 2
|
||||
areas: Test Area 2
|
||||
- names: Test Device 3
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Device 3
|
||||
areas: Test Area 2
|
||||
- names: Test Device 4
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Device 4
|
||||
areas: Test Area 2
|
||||
- names: Test Service
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Service
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Service
|
||||
domain: light
|
||||
state: unavailable
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Unnamed Device
|
||||
domain: light
|
||||
@@ -627,32 +637,41 @@ async def test_assist_api_prompt(
|
||||
stateless_exposed_entities_prompt = """Static Context: An overview of the areas and the devices in this smart home:
|
||||
- names: '1'
|
||||
domain: light
|
||||
device: 1
|
||||
areas: Test Area 2
|
||||
- names: Kitchen
|
||||
domain: light
|
||||
- names: Living Room
|
||||
domain: light
|
||||
device: Friendly Device
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Device, my test light
|
||||
domain: light
|
||||
device: Friendly Device
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Device 2
|
||||
domain: light
|
||||
device: Test Device 2
|
||||
areas: Test Area 2
|
||||
- names: Test Device 3
|
||||
domain: light
|
||||
device: Test Device 3
|
||||
areas: Test Area 2
|
||||
- names: Test Device 4
|
||||
domain: light
|
||||
device: Test Device 4
|
||||
areas: Test Area 2
|
||||
- names: Test Service
|
||||
domain: light
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Service
|
||||
domain: light
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Test Service
|
||||
domain: light
|
||||
device: Test Service
|
||||
areas: Test Area, Alternative name
|
||||
- names: Unnamed Device
|
||||
domain: light
|
||||
|
||||
Reference in New Issue
Block a user