Improve information architecture for Home Assistant #1017
Replies: 12 comments 6 replies
-
I noticed the points about Averaging temperature, etc. One of the challenges with the energy dashboard it the huge level of detail. I wonder if power consumption should also be summed at the area level. |
Beta Was this translation helpful? Give feedback.
-
I had a similar issue when I wanted to get the area temperature and humidity for my Dasboard, I solved it by hiding the entities which I didn't need, and is |
Beta Was this translation helpful? Give feedback.
-
I struggle to understand the link between the problem "We do not know if sensor This architecture proposal seems to hide two proposals into one
Both seem independant |
Beta Was this translation helpful? Give feedback.
-
When you think about it, it would be very complex for an entity to state "I am responsible for an area" if we cannot even explain what's an area. |
Beta Was this translation helpful? Give feedback.
-
Reading all the examples, I initially struggled to understand the benefits of defining specifically a Anyway: you should add Vacuums to the example list. |
Beta Was this translation helpful? Give feedback.
-
From what I understand, by default, I'll have a Where do I attach weather? But if I do that, without hacking something weird on voice side, will I be able to ask for the current weather? |
Beta Was this translation helpful? Give feedback.
-
This floors (and associated infrastructure concept) seems too rigid in the face of diversity in home architecture and needs.
If 'elevation' or height is the discriminator that end users are to use to define a floor, but they've put climate sensors in all those ares, are they likely going to get the result they expect or want from an 'average' of all climate sensors for the floor (or for the home containing that floor)?
I think overlapping climate controls are not as uncommon as you'd expect. A floor might be partially served by a central forced air system, partially by mini-split heat pumps, baseboard heaters or wall furnaces... the systems may or may not serve overlapping areas. This is really common on homes that have had additions made over many years. Even in the same room, say a bathroom, it might have a central HVAC duct, but also a radiant heat system in the floor. Heated tile floors often operate in opposition to guarantee a particular floor temp regardless of the air temp. For the media player example, someone might be watching the game with headphones on the TV while their partner has got the AV Receiver that'd normally play the TV audio streaming music over the speakers. Hiding the controls for either wouldn't be a good result for the end users. Even weather might not really be a singleton. Sure, if someone is pulling cloud weather data, a singleton makes sense. But a person living in a big city, with a back yard/patio that's shaded by a tall building? Sure, if it's raining or windy, it'll be rainy or windy all over. On a hot day, though, the outside weather in that shaded yard is likely quite a bit different versus what's out the front door. I guess the point I'm making here is that this all seems very rigid for what has been a very flexible and customizable platform.
I wasn't sure if my comment was best placed here or in the proposal for floors, so happy to move if to the other discussion if preferred. |
Beta Was this translation helpful? Give feedback.
-
I really don't get why a 'floor' concept would be a good idea in absence of a more flexible method of grouping areas and assigning devices' location. And I still have a house with several vertical levels, I don't think that will be the case the next time I move house. I certainly see merit in the idea of larger structures, but for me they would need to be less rigid and less tied to the vertical level. Some examples, mostly from my own situation so likely just a fraction of the issues that the userbase faces:
I know several areas in my house that I would like to make groups of and nest together into a larger structure. None of these groups would contain all the areas on one floor, and several of them would contain areas and/or devices spread over different floors. |
Beta Was this translation helpful? Give feedback.
-
Could the root node at least be "building" instead of "home"? I see no point i ln having a single, immuable root node. |
Beta Was this translation helpful? Give feedback.
-
FWIW, screenshot from 23 year-old home automation software (Premise). It models an entire property using nested areas. Each area has a "type" selected from a list containing about 100 types. Root node's type is "Property". Other node's have types like:
It was easy to model my entire property with it (openHAB offers something similar). It allowed me to select entities based on membership in a nested area (sprinkers in the FrontYard area and its sub-areas) or membership by area type (temperature sensors in all Bedroom areas). Basically, an area is whatever location you need it to be; by specifying its type it can be a bedroom, bathroom, closet, floor, house, shed, lawn, patio, etc. Areas can be nested in order to accurately model an entire property, having multiple buildings and exterior areas, all while preserving spatial relationships such as a bedroom and its ensuite bathroom and walk-in closet. If I understood the proposed Home architecture correctly, it uses a dedicated "Floor" to group areas (no area nesting) and a separate "House" to group Floors. These two purpose-built features still fall short of being able to accurately model an entire property, or preserve the more sophisticated spatial relationships that can exist inside a house. Enhancing the existing "area" feature seems to offer more 'bang for the buck' and builds on something that users already know and use. |
Beta Was this translation helpful? Give feedback.
-
I don't know about you, but I define my entire property as my home. What if I had a detached building (external garage with additional rooms etc), would I then need to create a whole new instance of home assistant? The idea of using floors vs areas seems silly and would not need that much of a change to allow for a much higher level of customization for those users that could take advantage of it. Nested objects (areas, zones, whatever you want to call them, they are objects at the end of the day) with an assigned type would accomplish everything people are looking for. Why impose an artificial limitation when this can be expandable for not that much effort. Personally I'm just starting to convert everything over to smart devices, however, I'm not far enough into it that jumping ship is a hard decision, and this is definitely a huge deciding factor. |
Beta Was this translation helpful? Give feedback.
-
Why even give each level in the hierarchy a dedicated type? Couldn't everything just be an "area" object (or whatever name) that allows for arbitrary nesting? Users could still assign a type or label for visual classification if needed, but why complicate things with specific types? |
Beta Was this translation helpful? Give feedback.
-
Dec 21, 2023: This proposal was initially called area responsibilities. I have updated the proposal to include floors and structures.
Dec 22, 2023: Structures has been reduced to just a single "Home" structure.
Context
Home Assistant allows sensors to indicate with a device class what kind of data they represent. However, this indication is not specific enough. A sensor could indicate that it represents a temperature but it doesn't represent what this is a temperature of. Is it the temperature of the room, your 3D printer nozzle or your computer's CPU ?
At an area level, we currently cannot automatically detect what entities should be used for this. This is causing issues with automatic creation of dashboards or responding to voice queries (what is the current temperature solely relies on climate entities because of this issue). It also limits the type of automations that we can offer.
Currently we only offer areas to create area infrastructure. Areas are currently used in different ways. Here are some frequent ones:
Proposal
We should define a more formal infrastructure for your house, and a way for things to hook into that. We should add/update the concepts:
Although interesting to solve too, People, Junk, Services are not part of the scope of this proposal.
Once we have such structure in place, we can define level properties (ie temperature) that span multiple layers in the infrastructure with each level property their own aggregating behavior.
Entities can define how they are be used in their EntityDescription using the new field
responsibility
. Weather entity would set it tolevel="structure", property="weather"
.It is important that when an entity is first discovered, that it is automatically assigned to the right part of the information architecture if possible. If ambigious, we could ask the user when a device is added to Home Assistant.
We would store this information in the entity registry. A user would be able to override the responsibility of an entity. It can set it to
none
or to any other qualifying responsibility.Example level properties (as examples, not part of this proposal perse)
Some examples of how the new structure could be leveraged by different level properties. Each property here is shown to force us how the concept can be beneficial. Adding/changing properties would require their own architecture issue.
Note that each property needs to be defined in advance and requires its own code to show/use it. This allows us to add specific logic for each property.
Weather
Weather is an easy one and would be defined on the structure level. There would only be a single entity allowed to be assigned to it.
Current Temperature/humidity
This allows us to query, show and automate temperature on each level.
Motion
Climate
This is a tricky one as it can go many places. Some people have both AC and heat integrated in 1 unit. Others have window ACs and a heating system. Others have just heating or AC. This can also be defined at different levels.
At each level, the "current" climate entity is the one that is active. If a user has both heating and cooling active, we should send them a warning and select the first active one.
Energy
Energy consumption can be measured by measuring one or more groups of power going towards an area, or come from devices itself. For every level, if the level below has energy sensors, we could display the accounted and unaccounted energy usage.
Media player
This one would include both an entity for source selection and for output. Each can be picked only at an area level.
Consequences
We will be able to start reasoning on a home/floor/area level about parts of the home. This unlocks a whole list of cool things:
Example Home architecture
weather.home
binary_sensor.living_room_motion
sensor.living_room_temperature
media_player.living_room_apple_tv
media_player.living_room_receiver
binary_sensor.kitchen_motion
sensor.kitchen_temperature
binary_sensor.bedroom_parents_motion
sensor.bedroom_parents_temperature
binary_sensor.bedroom_kids_motion
sensor.bedroom_kids_temperature
Beta Was this translation helpful? Give feedback.
All reactions