Home Assistant Config Maintenance

I was inspired to finally start cleaning up my Home Assistant config file last night after watching Dr Zzzs and Franck talking about how YAML works. It's interesting to note that YAML is used outside of Home Assistant, something I was not always aware of and there are various way to write the same thing in YAML. Getting a good understanding on how the language work helps a lot when working with your config. Very, very simply put yaml, has either a list or a dictionary.

#List with 2 item - From my automations for example
- id: '1552475178483'
  alias: (Gate) Check Gate is Closed
    platform: time
    at: '22:55:00'
    service: switch.turn_off
      entity_id: switch.gate_open
- id: '1552488155107'
  alias: Number Plate Reader
  - event_data:
      entity_id: image_processing.openalpr_gate
      plate: XXXXXX
    event_type: image_processing.found_plate
    platform: event
  - data:
      entity_id: cover.gate
    service: cover.open_cover

#Dictionary with 2 item - your main config is a dictionary
     - host: 192.168.1.XXX
  username: !secret door_bird_user
  password: !secret door_bird_password
  token: !secret door_bird_token
  name: Door Bell
     - doorbell_1
     - motion_detected_gate
  name: Bedroom Lights On
  has_date: false
  has_time: true

It would be best to see the fully explanation here:

The main take away I found useful to know is that in your configuration.yaml file you can load an integration twice. The example was given for automations:

automation: !include automations.yaml
automation whateveryouwant: !include_dir_list automations

You may have a file that contains a lot of automations in one file including the ones generated in the GUI and on the second line you can also load your automations created in the text editor from a directory /config/automations each file in that directory will be one automation. This can be helpful to slowly sort all your files out instead of doing one big change over and having lots of errors.

To breakup your config you can use the following directory types:

#Will return the content of a directory as a list with each file #content being an entry in the list. The list entries are ordered #based on the alphanumeric ordering of the names of the files
typeone: !include_dir_list typeone

#Will return the content of a directory as a list by merging all #files (which should contain a list) into 1 big list
typetwo: !include_dir_merge_list typetwo

#Will return the content of a directory as a dictionary which #maps filename => content of file.
typethree: !include_dir_named typethree

#Will return the content of a directory as a dictionary by #loading each file and merging it into 1 big dictionary
typefour: !include_dir_merge_named typefour

So I went ahead and started sorting my config out with this information and everything is still working, which is great. Even though I removed script: !include scripts.yaml from config, and replaced it with script: !include_dir_names scripts for some reason home assistant GUI would place the new script in the file scripts.yaml and if you don't have a scripts.yaml file you can't edit script at all in the GUI.

Anyway I will continue and let you know how operation config cleanup goes.

166 views0 comments

Recent Posts

See All