One thing i’ve missed in HA for a while is the ability to have floors instead of only areas.
We could call them super-areas if you want.
The idea is that very often people that have homes with more than one floor (I have two, three if you consider the garage/laundry/workshot a floor) but many people have more. Are some lucky ones they may even have adjacent buildings (guesthouse) or wings in their big homes.
Very often I find all the family moves to one floor for breakfast or dinner, or because everyone but me goes to sleep to the top floor. In those situations I’ve wanted to have areas that comprise several other areas. I could ask my voice assistant of choice to turn off the lights of an entire floor or close the blinds.
Another example for me is front garden and north garden. Sometimes is useful to have them separated and sometimes I just want to perform an action on my garden, on all areas.
Also with you have groups of speakers you want to group them by areas wider than the room they are in, like an entire floor when throwing a party.
One other situation that this would solve is to place devices that don’t really belong to a room. My robot vacuum cleaner happens to have its charging station in my office, but I think about it like the ground floor vacuum, as it moves to all rooms. Also my heating has “zones” than match my floors (I don’t have per-room zoning for heating). For certain devices it makes more sense to be associated to a floor or a wing rather than the smaller living space for which areas.
Yet another usage is for big areas, like living rooms. Some rooms are big enough to have different spaces . The TV, couch in front of TV and related lighting around those could be an small area within a larger area (the entire living room).
For all those reason I think it would be a nice addition to allow areas within areas. How I reason they should be:
- Just a regular area that can have devices of its own and all the features they have today.
- In addition to existing features, they can have other areas inside. And performing actions on an area performs in areas within it.
Caveats/things to be aware of:
- Should we allow any level of nesting or should we cap it?
- We must implement some basic cycle detection so we don’t have Area 1 containing Area 2 which in turn contains Area 1. Detecting it is quite simple, but would take some work to make an UI that prevents it and explains the user why they are making a mistake.
- I don’t know how this is stored in the database of the performance implications of what I assume can be a source of joins or subqueries quite often.
- I don’t know if voice assistants (Alexa user here) understand the concept of areas containing areas (probably no). That is not a problem if they allow to have devices in several rooms, but I don’t know if they allow it either. Not the end of the world and nothing people with open plan homes and smart speakers don’t suffer today.