Home assistant a énormément travaillé l’interface pour éviter d’utiliser le YAML. Mais celui-ci reste très puissant lorsque l’on sait l’utiliser. Dans cet article nous allons voir les bases ainsi que quelques astuces d’organisation pour votre configuration Home Assistant.
Étant présent depuis le début, la configuration YAML n’a aucune limite. Toutes les intégrations ne peuvent pas encore être configurées via l’interface utilisateur d’Home Assistant même si à termes elles le devraient.
Partager vos configurations avec le YAML est plus facile. Si vous rencontrez une erreur, il vous suffit de copier les quelques lignes YAML pour trouver assistance.
Utiliser les l’interfaces et le YAML ensemble est possible, nous allons voir comment à la fin de l’article.
Le YAML se représente de la forme `clé: valeur`. Les valeurs peuvent représenter différent type de donnés, je vous les listes ici. Je me suis basé sur le Gist partagé par Franck Nijhof qui fait maintenant parti de l’équipe cœur d’Home Assistant.
Les commentaires sont précédés de `#`
# Commentaire
hello: "world" # commentaire
Nous utiliserons particulièrement les entiers ou décimales.
entier: 1
decimal: 0.1234
Attention ceci n’est pas un entier mais un octal car il est précédé d’un 0:
pas_entier: 014 # Ceci est égal à 12
Utilisé ` »` pour indiquer un string. Ceci est optionnel.
string: Hello World
string2: "Hello world"
string3: "2"
Souvent utilisé pour activer une intégration sans configuration:
hassio: ~
discovery:
Utilisez de préférence `true et
`false`
oui: true
non: false
oui2: yes
non2: no
Une liste (array) se représente de la façon suivante:
ma_liste:
- 1
- 2
- 3
# ou
ma_liste_2: [1,2,3]
# l'indentation n'a pas d'importance
Les dictionnaires sont gérés grâce à l’indentation de la façon suivante:
dictionaire:
propriete: valeur
propriete2: valeur
Il peut être difficile de lire une longue chaîne de caractères. Il existe des opérateurs pour pouvoir l’étaler sur plusieurs lignes sans forcément garder les sauts de lignes. Les exemples suivant seront très utiles pour écrire vos templates (ex: messages Telegram). Plus d’information sur les Templates dans un prochain article.
`|` permets de garder les sauts de ligne mais supprime les doubles sauts.
text: |
Voici un exemple de paragraphe de deux lignes, ceci étant la première.
Et celle la la deuxième.
`-` après `|` permet de supprimer le dernier saut de ligne.
text: |-
Voici un exemple de paragraphe de deux lignes, ceci étant la première.
Et la deuxième ligne sans espaces après celle-ci.
text2: "Autre texte"
Contrairement au `+` qui assurera la présence des sauts de ligne de fin.
text: |+
Voici un exemple de paragraphe de deux lignes, ceci étant la première.
Puis la deuxième avec trois sauts de ligne qui suivent.
text2: "Autre texte"
J’ai suivi la méthode partagé par Franck dans une vidéo du DrZzs. Les règles principales sont simples:
Voici par exemple mon fichier configuration.yaml
# This is the starting point of the configuration
homeassistant:
whitelist_external_dirs:
- /tmp
# All Integrations:
packages: !include_dir_named integrations
customize: !include customize.yaml
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
scene: !include scenes.yaml
climate: !include climate.yaml
sensor: !include_dir_merge_list sensors
Je dois encore migrer certaines entrées.
Celui de Franck encore plus minimum (Toute la configuration de Franck Nijhof):
---
# Welcome to my Home Assistant configuration!
#
# Don't be scared by the size of my configuration file...
# It is probably the smallest you've ever seen.
#
# My system is very modular and very differently structured
# compared to other configurations you'll find online.
#
# Basically, each file in the repository does 1 (one, uno, eins)
# thing only! Click through it, you'll get it pretty fast.
#
# The configuration.yaml is only used to bootstrap the system.
#
homeassistant:
# Load packages
packages: !include_dir_named integrations
Nous avons vu précédemment les dictionnaires et les listes. Chaque listes et dictionnaires peuvent être déplacés dans un autre fichier.
La directive `include` se construit de la manière suivante:
Comment choisir la bonne directive. On commence par détecter si l’on veut intégrer une liste ou un dictionnaire. Ensuite on décide si l’on veut plusieurs entrées par fichier.
sensor:
- platform: time_date
display_options:
- "time"
- "date"
- "date_time"
- "time_date"
- platform: history_stats
name: battery_bike_charged_today
entity_id: binary_sensor.bike_battery
state: 'on'
type: count
start: '{{ now().replace(hour=10, minute=0, second=0) }}'
end: '{{ now() }}'
peut se décomposer de la sorte: Lien vers ma configuration sensor
ou si plusieurs entrées par fichier: Lien vers ma configuration switch
input_boolean:
sleeping_mode:
name: Dodo
icon: mdi:hotel
vacation_mode:
name: En vacance
icon: mdi:beach
washing_machine_full:
name: Machine Pleine
icon: mdi:washing-machine-alert
peut se décomposer de la sorte: Lien vers ma configuration input_boolean
ou si plusieurs entrées par fichier: Lien vers ma configuration yeelight
Le YAML permet un mode avancé mais pour des changements rapides l’interface graphique (UI) reste très pratique. Voici quelques astuces pour concilier les deux:
Une astuce est d’ajouter une clé `id` à vos automatisations (Exemple d’automatisation). De cette manière vos automatisations seront modifiables sur l’interface utilisateur.
Le code suivant vous permettra d’avoir les automatisations créés sur l’interface graphique ainsi que celles créés en YAML:
automation: !include ../automations.yaml
automation split: !include_dir_list ../automations
Cette astuce est aussi valable pour les scènes.
Voici comment utiliser vos Dashboard créés sur l’interface graphique ainsi que ceux créés en YAML:
lovelace:
# Le mode de défault sera storage
mode: storage
# Mais nous ajouterons des Dashboards YAML
dashboards: !include ../lovelace/dashboards.yaml
Voir ma configuration Lovelace
Voila vous savez tout de YAML et des bonnes pratiques pour organiser votre configuration Home Assistant. À vous de jouer, et si vous rencontrez des problèmes n’hésitez pas de partager dans la section commentaires ou sur La Meilleur Communauté Française Pour Home Assistant
Vous ne parlez pas Anglais, mais vous vous intéressez à Home Assistant. Voici une communauté…
Home Assistant, le contrôleur domotique par excellence pour 2020. Listons ensemble les raisons qui font…
Quelques soit votre chauffage, vos thermostats ou votre contrôleur domotique, il y a de forte…
Avoir plusieurs détecteurs de mouvement dans un couloir ou plusieurs télécommandes dans une pièce est…
« Alexa, allume la lumière du salon » « Plusieurs éléments porte ce nom, lequel voulez-vous ? ». Rien…
Un des meilleurs podcasts tech Français lance son dossier Domotique. Une des meilleures porte d'entrée…
View Comments
Hello,
Je suis moi-même en train de débroussailler mon yaml et je ne sais pas encore comment gérer les scripts et automatisations.
Je travaille principalement en packages pour créer des sous-répertoires par domaine et des fichiers par sous-domaine avec la commande "packages: !include_dir_named packages/", ça marche assez bien. Mais quand j'intègre mes automatisations dans mon package je ne sais plus les updater via l'interface et il est impossible de commenter le fichier automation.yaml de façon durable.
As-tu une astuce pour organiser les automatisations?
Je ne vois pas très bien comment "automation split: !include_dir_list ../automations" auquel tu fais référence fonctionne
Salut Frédéric,
J’imagine que si tu vas vers l’approche packages, tu n’auras aucun souci en gardant la ligne chargeant le fichier `automations.yaml`. Sachant qu'aujourd'hui seulement les automations dans ce fichier seront modifiables via l’UI.
Dans ma configuration, je ne fonctionne pas par package, mais par pièce pour mes automatisations. C’est la raison pour laquelle j’ai partagé cette astuce qui permet de charger le `automations.yaml` puis le dossier automations (ligne avec ‘split’).
Est-ce que cela répond-il à ta question ?