This post will be short, but I hope it prove to be useful.
This is the 8th post in the My journey with Home Assistant focus series.Other posts include:
- Why Home Assistant?
 - The Home Assistant model
 - Replace Philips Hue automation with Home Assistant’s
 - An example of HACS: Adaptive Lighting
 - The Home Assistant companion app
 - Cloudflare Tunnel for Home Assistant
 - Getting a single value from a device’s state in Home Assistant
 - Loosely coupled configuration for Home Assistant (this post)
 
My home is getting more and more connected, and the number of my automations grows each passing month. Recently, I equipped my roller shutters with connected Somfy engines so they could roll down automatically when it’s too hot in summer. Spoiler: given the current heatwave, it’s a boon!
I naively created the following automation configuration:
- id: '1742926520608'
  alias: Close all shutters
  description: Close all shutters if it's already hot in the morning
  triggers:
  - trigger: time                                                      (1)
    at: 07:00:00
  conditions:
  - condition: numeric_state
    entity_id: sensor.saint_julien_en_genevois_temperature
    above: 23                                                          (2)
  actions:
  - action: cover.close_cover                                          (3)
    metadata: {}
    data: {}
    target:
      entity_id: cover.all_shutters                                    (4)
  mode: single
| 1 | If at 7 AM local time | 
| 2 | The temperature where I live is higher than 23°C | 
| 3 | Close | 
| 4 | All shutters | 
Note the entity ID cover.all_shutters:
it’s not an out-of-the-box entity.
I explicitly created a group for it:
.configuration.yaml
cover:
  - platform: group
    name: "All shutters"
    entities:
      - cover.left_shutter
      - cover.middle_shutter
      - cover.right_shutter
      - cover.bedroom_shutter
      - cover.office_shutter
I copied the same approach to switch all the lights off when I leave home. I soon realized there were flaws in this approach.
While the probability of adding more shutters is pretty low, I’ll likely add more smart lights in the future. Every time I add one, I’ll need to put it in the group. Also, I added lights in waves; I ID’d the lights in French at first, but later switched to English. As I renamed them all in English to be coherent, I had to update my dashboard to adapt to the new IDs.
Home Assistant already has everything to cater for the above, Areas.
You can–and you probably should-assign every device to an Area.
Once done, you can replace the target part of the automation with a list of area_id instead of entity_id.
- id: '1742926520608'
  alias: Close all shutters
  description: Close all shutters if it's already hot in the morning
  triggers:
  - trigger: time
    at: 07:00:00
  conditions:
  - condition: numeric_state
    entity_id: sensor.saint_julien_en_genevois_temperature
    above: 23
  actions:
  - action: cover.close_cover
    metadata: {}
    data: {}
    target:
      area_id:                                                         (1)
        - office
        - bedroom
        - living_room
  mode: single
| 1 | Now, Home Assistant closes all shutters that are in any of these areas | 
Areas tend to be much more stable than individual devices. How often do you add a new area to your home? Granted, an area doesn’t explicitly map to a room, but I think that’s a better approach than my original one. Home Assistant will now manage every new device of the same type added to the area, e.g., if you motorize a new shutter or add a new light.
There’s one drawback to this approach. UI Tiles accept only a single entity ID. Thus, if you want to use the GUI, you must create a group as I did in my first approach.
In this post, I showed how you could replace the explicit grouping of devices by areas. It’s the same idea of loose coupling we have in software, but applied to Home Assistant configuration.