Accueil » Domotique » Home Assistant » Découvrez les packages YAML Home Assistant pour mieux organiser la configuration de votre domotique
Home Assistant

Découvrez les packages YAML Home Assistant pour mieux organiser la configuration de votre domotique

home-assistant-guide-organisation-fichier-configuration-yaml-code

La domotique Home Assistant permet de tout faire. Cela est lié à la puissance du code yaml sur lequel repose tout le systeme domotique, qui est facilement modifiable pour faire un peut tout ce que l’on veut. Que ce soit au niveau de la configuration, des entités custom via des templates ou le yaml au service de la mise en forme des cartes sur votre dashboard, le code yaml permet de tout faire.

Je vous ai proposé un premier guide la semaine dernière visant à faciliter et améliorer la gestion des fichiers de configuration avec le célèbre IDE Visual Studio Code directement dans HA. Un premier pas nécessaire.

home-assistant-guide-install-code-visual-studio-code-web

Utilisez Visual Studio Code pour personnaliser Home Assistant plus simplement

Nous avons vu au travers de nombreux guides sur le blog, que la domotique Home Assistant, bien que maintenant très accessible avant de mettre les mains dans le code devient encore plus puissante si l’on trifouille le code. Pour cela,…


Voyons aujourd’hui la continuité de cet article qui vous propose une organisation bien pratique de votre fichier configuration. Là où le code est le plus souvent modifié, c’est au coeur de la configuration, dans le fameux fichier configuration.yaml. C’est dans ce fichier que l’on vient ajouter nos templates, sensors custom et un tas d’autres choses.

Le problème c’est qu’avec le temps, plus on y ajoute du code, plus le fichier configuration.yaml devient lourd et indigeste. Pas pour le système domotique à qui des centaines et des centaines de lignes dans le fichier configuration.yaml ne font pas peur.

Mais pour nous autres humains qui revenons après plusieurs mois dans le code pour agir sur une fonction, un template ou tout autre configuration et c’est rapidement compliqué de retrouver ses petits. Bien sûr, il faut ajouter des commentaires dans le code, cela aide grandement pour la maintenance quand il faut y revenir plus tard.

Mais tout de même, si coller tout dans le fichier de configuration fonctionne très bien, on se perd vite et du fait qu’il n’est pas possible de dupliquer les lignes de catégorie de type :

sensor:
template:
...

Il devient difficile d’organiser et de grouper le code par fonction/besoin. On se retrouve alors avec un code où tout y est mélangé et devient rapidement compliqué à gérer à la longue…

schéma d’un fichier configuration.yaml qui regroupe tout – © domo-blog

Exemple de fichier configuration.yaml par défaut

sensor:
  - platform: history_stats
    name: "pump_activity_today"
    ...
  - platform: rest
    name : "piscineW"
    device_class: energy
    ...
  - platform: history_stats
    name: "frigo_droite_today_time"
    ...
  - platform: history_stats
    name: "frigo_temps_compresseur_hier"
    ...
  
template:
  - sensor:
    - name: "Solar production total KWh"
      ...
    - name: "temps filtration"
      unit_of_measurement: "H"
      state: >
      ...
    - name: "conso piscine"
      unit_of_measurement: "W"
      state: >
      ...
    - name: "CE state"
      state: >
      ...
    - name: "Comptage Machine a laver"
      state: >
      ...
    - name: "compresseur_frigo"
      state: >
      ...

Dans ce “petit exemple” de cas d’utilisation de base du fichier de configuration principale, on retrouve tout mélangé et entremêlé. Ce n’est qu’un court extrait, et pourtant c’est déjà le bazar.

Du fait que l’on ne peut pas dupliquer les termes “template:” ou “sensor:”, on doit ajouter les nouveaux périphériques sensors ou template dans les bonnes sections sans pouvoir les regrouper. De fait on se retrouve avec un compteur pour la machine à laver, un device du frigo ou encore des compteurs sur la production solaire et la piscine. Cela reste gérable avec un fichier configuration pas trop dense et quelques commentaires, mais quand l’installation devient compliquée c’est rapidement le drame en cas de maintenance.

La solution pour organiser le fichier de configuration, les packages !

Qu’on se le dise, il n’y a pas une manière de faire pour organiser sa configuration HA mais de nombreuses. On peut par exemple dissocier les types/catégories via des fichiers secondaires. C’est-à-dire que les sections “templates:” ou “sensor:” sont indépendantes du fichier de configuration avec seulement un appel des fichiers via des includes dans le fichier configuration.yaml.

Schéma d’organisation du fichier configuration.yaml avec des sous-fichiers par type – © domo-blog

C’est un bon début, cela permet de soulager et rendre plus lisible le fichier configuration.yaml, mais les sous-fichiers sensor et template restent fouillis avec tous les usages mélangés dedans.

Un package, un usage, un sous fichier, toutes les entités regroupées

La notion de package devient alors intéressante pour mettre de l’ordre dans la configuration tout en allégeant le fichier configuration.yaml

Schéma d’organisation du fichier configuration.yaml avec les packages – © domo-blog

Avec les packages, on dispose d’un sous-fichier par usage qui peut regrouper à la fois des templates, des sensors, et d’autres catégories qui figurent dans le fichier configuration.yaml mais un seul et même usage.

Créer l’arborescence package sous votre configuration HA

Les packages sont natifs à Home Assistant, pas besoin d’installer une intégration, tout est déjà nativement pris en charge, il n’y a qu’à créer un répertoire “packages” sous CONFIG.

1. Pour ce faire, ouvrez Studio Code Server sous l’interface de votre Home Assistant, placez-vous au niveau du fichier configuration.yaml et créez un nouveau répertoire packages.

2. Editez à présent le fichier configuration.yaml et ajoutez-y les lignes suivantes :

homeassistant:
  packages: !include_dir_named packages

3. Relancez Home Assistant pour prendre en compte la nouvelle configuration et voilà les packages actifs.

4. Il ne reste plus qu’à créer des fichiers YAML par usage dans le répertoire packages pour y regrouper les lignes de votre configuration par groupe d’usage.

Les Packages, organisation et maintenance simplifiées

La configuration devient alors plus lisible et organisée. Chaque fichier yaml dans le répertoire package est alors dédié à un usage et permet d’y regrouper l’ensemble des lignes du fichier de configuration (sensors, templates, binary_sensors, etc…).

Plus ordonné, mais aussi plus simple à maintenir dans le temps. Finalement la logique de maintenance reste la même, on va éditer un fichier yaml, simplement on n’a plus à rechercher la partie à modifier au milieu des centaines de lignes du fichier configuration.yaml, mais simplement en ouvrant le fichier dédié.

Je vous recommande chaudement de regrouper et de transférer les éléments de votre fichier configuration.yaml vers des sous-fichiers packages pour avoir une configuration mieux organisée et plus simple à maintenir.

Domo-blog a fait le choix de ne pas polluer votre lecture avec de la publicité. Vous trouverez cependant des liens affiliés vers les produits recommandés dans le contenu. Cela ne perturbe en rien votre experience de lecture et permet de financer le blog.
Vous pouvez également soutenir le blog en m'offrant un café sur Ko-Fi.


discord

Restez connecté aux nouveautés domotiques, inscrivez-vous à notre newsletter

A propos de cet auteur

Aurélien Brunet

Chef de projet informatique, anciennement informaticien spécialisé dans l'IT industrielle, le réseau et les bases de données. Un peu geek à mes heures perdues, je me suis mis à la domotique en 2012 pour sécuriser mon domicile.
Depuis, je teste, j’installe, je code, j’améliore mon installation et surtout, je partage avec vous mon expertise via ce blog et mon podcast Domotique Chronique pour améliorer votre quotidien dans la maison connectée !

5 Comments

Cliquez ici pour poster un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

  • Hello ! Top, merci pour l’astuce que je ne connaissais pas ! C’est un truc que je cherchais à faire depuis quelques jours, car en effet ça devient vite le bazar 😅

    • Hello, you’re welcome !
      Oui en effet les includes c’est bien mais ça reste quand même compliqué à gérer dans le temps quand on a une grosse installation.
      J’utilise les packages depuis presque un an et ça change vraiment tout.

  • Bonjour,
    Merci pour cet article (et pour le blog que je découvre) dont on perçoit bien l’intérêt !
    Un exemple concret m’aurait bien aidé pour construire la bascule du fichier au package.
    Merci

    • Bonjour,
      c’est une explication de la mise en œuvre, le problème avec HA c’est qu’il y a plusieurs manières de configurer/gérer son yaml. Difficile donc de donner un exemple qui correspond à tout le monde, c’est pourquoi j’ai opté pour des schémas/exemple plus parlant, mais les prochains guides du blog seront basés sur les packages, il y aura donc bien des exemples concrets à venir.
      C’est tout le but d’introduire la notion de package maintenant.

energie
promos domotique
green
promos domotique

Exemple de fichier configuration.yaml par défaut

sensor: - platform: history_stats name: "pump_activity_today" ... - platform: rest name : "piscineW" device_class: energy ... - platform: history_stats name:

La solution pour organiser le fichier de configuration, les packages !

Qu’on se le dise, il n’y a pas une manière de faire pour organiser sa configuration HA mais de nombreuses.

Les Packages, organisation et maintenance simplifiées

La configuration devient alors plus lisible et organisée. Chaque fichier yaml dans le répertoire package est alors dédié à un

  • Exemple de fichier configuration.yaml par défaut
  • La solution pour organiser le fichier de configuration, les packages !
  • Les Packages, organisation et maintenance simplifiées