De directory structuur van Home Assistant nader bekeken om inzicht te krijgen in de verwijzingen naar (sub)folders en met name configuratiebestanden. Uitgangspunt hierbij is de Home Assistant OS versie.
De hoofd-directory van Home Assistant is /homeassistant en hierin staat wellicht het meest belangrijke bestand: configuration.yaml en hierin staat in ieder geval de basis voor Home Assistant:
# Loads default set of integrations. Do not remove. default_config:
gevolgd door optionele instellingen die na een aanpassing ingelezen kunnen worden met de service homeassistant.reload_core_config
zonder Home Assistant te hoeven herstarten.
een voorbeeld voor een basis-instelling zou het volgende kunnen zijn:
homeassistant: name: Home latitude: 32.87336 longitude: 117.22743 elevation: 0 unit_system: metric currency: EUR country: NL time_zone: "Europe/Amsterdam"
Vervolgens worden in configuration.yaml de verwijzingen gemaakt naar de Home Assistant domain-instellingen, zoals:
automation: !include automations.yaml script: !include scripts.yaml scene: !include scenes.yaml
waarbij !include een verwijzing is naar een bestand dat hiervoor ingelezen moet worden. Met andere woorden, er zijn dus tevens de volgende yaml-bestanden aanwezig:
/homeassistant/automations.yaml
/homeassistant/scripts.yaml
/homeassistant/scenes.yaml
en hierin staan de de specifieke instellingen voor de betreffende domains.
Verder staan specifieke domain-instellingen in configuration.yaml zoals bijvoorbeeld:
# Alarmpanel settings alarm_control_panel: - platform: manual name: Home Alarm code_arm_required: false code: !secret alarmcode armed_away: arming_time: 30 delay_time: 20 trigger_time: 4 # Load frontend themes from the themes folder frontend: themes: !include_dir_merge_named themes
en allerlei andere instellingen die je als gebruiker hebt toegevoegd.
Aparte bestanden
Om geen onoverzichtelijk bestand te krijgen in alleen maar configuration.yaml kunnen de diverse onderdelen in aparte bestanden worden geplaatst en ge-include worden in configuration.yaml. Bijvoorbeeld:
bestand frontend.yaml:
--- # Use this file to maintain frontend # themes: !include_dir_merge_named /config/themes
bestand homeassistant.yaml:
--- # Use this file to maintain core settings # name: Home latitude: !secret latitude longitude: !secret longitude elevation: 0 unit_system: metric currency: EUR country: NL time_zone: "Europe/Amsterdam"
bestand templates.yaml:
--- # Use this file to maintain templates # sensor: - name: "light on count" state: > {{ states.light | selectattr('state', 'eq', 'on') | list | count }}
bestand mqtt.yaml:
--- # Use this file to maintain mqtt entities # sensor: - name: "zon" unique_id: "zon" state_topic: "ha_sun"
Die includen we vervolgens in configuration.yaml die er dan zo uit gaat zien:
--- ## Home Assistant Core settings ## default_config: homeassistant: !include homeassistant.yaml frontend: !include frontend.yaml ## Additional settings ## template: !include templates.yaml automation: !include automations.yaml group: !include groups.yaml script: !include scripts.yaml light: !include lights.yaml sensor: !include sensors.yaml switch: !include switches.yaml mqtt: !include mqtt.yaml
De volgende stap is om dan ook alle instellingen voor de entiteiten in yaml-bestanden te plaatsen, dus voor de sensors, lights, input_booleans, switches, sensors, etc…
Alle yaml-bestanden staan dan in de directory /homeassistant en wellicht is dat niet de meest ideale plek als het op overzicht aan komt.
Directories
We kunnen directories aanmaken met daarin de yaml-bestanden en dan die directories includen in de configuration.yaml. Deze directory-structuur plaatsen we dan ook weer in twee sub-directories, één voor de core-settings, genaamd ‘core‘ en één voor de overige instellingen, genaamd ‘additional‘, beide sub-directories komen in de directory ‘settings‘
Bijvoorbeeld de volgende structuur waarbij meerdere yaml-bestanden in een directory (kunnen) staan:
settings ├── core │ ├── homeassistant.yaml │ ├── frontend.yaml ├── additional │ ├── automations │ │ └── rssfeed.yaml │ ├── groups │ │ └── persons.yaml │ │ └── iphones.yaml │ ├── lights │ │ └── inside.yaml │ │ └── outside.yaml │ ├── mqtt │ │ └── sensors.yaml │ ├── scripts │ │ └── scripts.yaml │ ├── sensors │ │ └── templates.yaml │ ├── switches │ │ └── basement.yaml │ │ └── groundfloor.yaml │ │ └── secondfloor.yaml │ │ └── thirdfloor.yaml │ └── templates │ └── sensors.yaml
en dan de directories dus includen in configuration.yaml:
--- ## Home Assistant Core settings ## default_config: homeassistant: !include settings/core/homeassistant.yaml frontend: !include settings/core/frontend.yaml automation ui: !include automations.yaml ## Additional settings named ## template: !include_dir_merge_named settings/additional/templates group: !include_dir_merge_named settings/additional/groups script: !include_dir_merge_named settings/additional/scripts switch: !include_dir_merge_named settings/additional/switches mqtt: !include_dir_merge_named settings/additional/mqtt ## Additional settings list ## automation manual: !include_dir_merge_list settings/additional/automations sensor: !include_dir_merge_list settings/additional/sensors
Voor de automatiseringen geldt een uitzondering:
– Automatiseringen gemaakt via de web-pagina van HA worden in automations.yaml bewaard zoals aangegeven in ‘automation ui‘
– Automatiseringen die via YAML bestanden worden aangemaakt staan in de directory aangegeven via ‘automation manual‘
Zoals je ziet zijn er hier drie ‘includes’ gebruikt, !include, !include_dir_merge_named en !include_dir_merge_list.
!include – is dus het includen van een enkel bestand,
!include_dir_merge_named – is het includen van van bestanden in een directory die samengevoegd kunnen worden
!include_dir_merge_list – is het includen van bestanden in een directory die samengevoegd kunnen worden EN waarin een list is opgenomen. Een list-item wordt altijd vooraf gegaan door een ‘-‘ teken.
Een voorbeeld van een bestand met daarin een list-item (-) is sensors.yaml:
- platform: template sensors: favorite_playlist_of_nearest_person: value_template: > {% if is_state_attr("proximity.home", "nearest", "Nico") -%} 413ool2QBpl7TWp3TkQiNq {%- else -%} 41oalksdhfhurjvlllQNbx {%- endif %}
Het resultaat is een strak overzicht, vooral in de File Editor add-on: