Simplifier la configuration des appareils sous ESPHome

Logo - ESPHome

Mutualiser les fichiers secrets.yaml d'Home Assistant et d'ESPHome

Petite astuce disponible dans la FAQ d'ESPHome, permettant de faire en sorte qu'ESPHome utilise le fichier secrets.yaml d'Home Assistant au lieu d'utiliser son propre fichier secrets.yaml.

Pour mutualiser les 2 fichiers, il suffit de remplacer le contenu du secrets.yaml d'ESPHome par :

---
<<: !include ../secrets.yaml

Dorénavant, ESPHome ira chercher les secrets dont il a besoin dans le fichier secrets.yaml d'Home Assistant 🎉

Regrouper la configuration commune des équipements dans un fichier

Il faut créer, dans un premier temps, un fichier à la racine du répertoire d'ESPHome (astuce : si le nom du fichier commence par un point, il sera caché sur l'interface utilisateur WEB d'ESPHome).
Voici mon fichier .common.yaml :

---
# Core Configuration: https://esphome.io/components/esphome.html
esphome:
  name: ${esphome_name}

# WiFi Component: https://esphome.io/components/wifi.html
wifi:
  ssid: !secret esphome_wifi_ssid
  password: !secret esphome_wifi_password
  ap:
    ssid: "FH - ${devicename}"
    password: !secret esphome_wifi_ap_password

# OTA Update Component: https://esphome.io/components/ota.html
ota:
  password: !secret esphome_ota_password

# Logger Component: https://esphome.io/components/logger.html
logger:
  level: $logger_level

# Native API Component: https://esphome.io/components/api.html
api:
  encryption:
    key: $api_encryption_key
  password: $api_password

# Captive Portal: https://esphome.io/components/captive_portal.html
captive_portal:

# Web Server: https://esphome.io/components/web_server.html
web_server:
  auth:
    username: !secret esphome_web_server_username
    password: !secret esphome_web_server_password
  local: true
  port: 80

# Time: https://esphome.io/components/time.html
time:
  - platform: homeassistant
    id: homeassistant_time

# Status Binary Sensor: https://esphome.io/components/binary_sensor/status.html
binary_sensor:
  - platform: status
    name: "${devicename} - Status"

# Restart Button: https://esphome.io/components/button/restart.html
button:
  - platform: restart
    name: "${devicename} - Restart"

Il ne me reste plus qu'à l'inclure pour chacun de mes appareils sous ESPHome :

---
substitutions:
  esphome_name: nom de l'appareil
  devicename: Nom de l'appareil
  logger_level: INFO
  api_encryption_key: !secret nom_de_l_appareil_api_encryption_key
  api_password: !secret nom_de_l_appareil_api_password

<<: !include .common.yaml

Je vous invite à lire la documentation d'ESPHome sur les substitutions ou sur les packages pour une configuration encore plus modulaire !