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 !