Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement entity area property #2

Open
zehnm opened this issue Mar 3, 2023 · 1 comment
Open

Implement entity area property #2

zehnm opened this issue Mar 3, 2023 · 1 comment
Labels
enhancement New feature or request

Comments

@zehnm
Copy link
Contributor

zehnm commented Mar 3, 2023

As in YIO v1: request areas and set entity.area property in available entities.

WebSocket: https://community.home-assistant.io/t/how-to-get-list-of-areas-through-websocket-api-or-hass-object/426485/3

@zehnm
Copy link
Contributor Author

zehnm commented Mar 27, 2023

Testing with Home Assistant 2023.3.6
There doesn't seem an easy way anymore to get the area of an entity.

Get areas:

{
    "type": "config/area_registry/list",
    "id": 4
}

Result (sample):

{
    "id": 4,
    "type": "result",
    "success": true,
    "result": [
        {
            "aliases": [],
            "area_id": "living_room",
            "name": "Living Room",
            "picture": null
        },
        {
            "aliases": [],
            "area_id": "kitchen",
            "name": "Kitchen",
            "picture": null
        },
        {
            "aliases": [],
            "area_id": "bedroom",
            "name": "Bedroom",
            "picture": null
        }
    ]
}

So far so good. But how do we get the entities in an area_id?

There's the entity registry:

{
    "type": "config/entity_registry/list",
    "id": 5
}

Result (sample):

        {
            "area_id": null,
            "config_entry_id": "18c9ecbd442b0fad06359ece6efe4bbe",
            "device_id": "3d293c15b9646fa6ee3c4659a3b17317",
            "disabled_by": null,
            "entity_category": null,
            "entity_id": "light.esstisch",
            "has_entity_name": false,
            "hidden_by": null,
            "icon": null,
            "id": "f5bb2da87a4a4de5ea257d282d672f96",
            "name": null,
            "options": {},
            "original_name": "Esstisch",
            "platform": "hue",
            "translation_key": null,
            "unique_id": "3fd17309-9d07-4b50-8e6c-a8b78d20e84a"
        }

Buth light.esstisch is in a defined area:
image

Interestingly the manually defined power switch to control a Sonos speaker has an area:

        {
            "area_id": "essen",
            "config_entry_id": null,
            "device_id": null,
            "disabled_by": null,
            "entity_category": null,
            "entity_id": "switch.mystrom_switch",
            "has_entity_name": false,
            "hidden_by": null,
            "icon": null,
            "id": "00212855345302ed74851d23db636556",
            "name": "Sonos Esstisch",
            "options": {},
            "original_name": "myStrom Switch",
            "platform": "mystrom",
            "translation_key": null,
            "unique_id": "30AEA491D184"
        }

This doesn't seem to work: from my 100+ entities all except 3 return "area_id": null 👎
But I have assigned many many more entities to areas! Where are they?
I remember that retrieving the area was working about 3+ years ago when we were implementing the onboarding for the YIO remote...

Looks like that quite a few things have changed. My current understanding:

  • entities belonging to devices. The device is linked to an area. This seems to be the standard case.
  • entities can also be directly linked to areas

Only example I've found:
https://developers.home-assistant.io/docs/frontend/custom-ui/custom-strategy/#full-example

Then let's try with the device registry:

{
    "type": "config/device_registry/list",
    "id": 6
}

Bingo! area_id for the light.esstisch entity with device_id: 3d293c15b9646fa6ee3c4659a3b17317 shown above is finally set:

        {
            "area_id": "essen",
            "configuration_url": null,
            "config_entries": [
                "18c9ecbd442b0fad06359ece6efe4bbe"
            ],

            "id": "3d293c15b9646fa6ee3c4659a3b17317",
            
            "name": "Esstisch",
            "sw_version": "1.101.2",
            "via_device_id": "ee5dbf4b9197e2863380054b26dcc3ed"
        },

So, no more easy way to get the area, now we have an additional indirection to deal with...

@zehnm zehnm added the enhancement New feature or request label Mar 27, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant