Pourquoi ESPHome ?
ESPHome est le moyen le plus simple pour relier un ESP32 à Home Assistant sans écrire une ligne de code Arduino. Il génère automatiquement un firmware à partir d'un fichier de configuration YAML, et une fois le premier flash effectué par USB, toutes les mises à jour se font en OTA (Over-The-Air), directement depuis le réseau WiFi.
⚠️ Prérequis avant de commencer
- Home Assistant opérationnel sur votre réseau local
- Add-on ESPHome Builder installé dans HA
- Un ESP32 (nu ou sur carte de développement) connecté en USB
- Un PC sous Microsoft Edge ou Google Chrome — Firefox ne supporte pas l'API Web Serial nécessaire au flash USB
Étape 1 — Ouvrir ESPHome Builder
Depuis votre navigateur (Edge ou Chrome), ouvrez l'interface de Home Assistant et rendez-vous dans Modules complémentaires → ESPHome Builder. Cliquez sur OUVRIR L'INTERFACE WEB pour accéder au tableau de bord ESPHome.
🌐 Pourquoi Edge ou Chrome obligatoirement ?
Le flash USB via le navigateur utilise l'API Web Serial. Firefox ne supporte pas cette API. Si vous êtes sous Firefox, la fenêtre de sélection du port n'apparaîtra tout simplement pas.
Étape 2 — Créer un nouveau dispositif
- Dans ESPHome Builder, cliquez sur NEW DEVICE
- Sélectionnez NEW DEVICE SETUP
- Choisissez un nom pour votre ESP32 — attention à ne pas réutiliser un nom déjà attribué sur votre réseau, cela provoquerait un conflit mDNS
- Cliquez sur NEXT pour continuer
💡 Bien choisir le nom
Le nom choisi ici sera utilisé comme hostname réseau (ex. : capteur-salon.local). Il doit être unique sur votre réseau Home Assistant. Privilégiez des noms descriptifs : capteur-garage, relais-chauffage, etc.
Étape 3 — Connexion USB et flash initial
C'est l'étape clé : le premier firmware est installé directement par câble USB depuis votre navigateur.
- Cliquez sur CONNECT — une fenêtre de sélection de port série s'ouvre
- Sélectionnez le port correspondant à votre ESP32 (généralement
COM3,COM4… sur Windows ou/dev/ttyUSB0sur Linux) - Cliquez sur SE CONNECTER
🔁 Si la connexion échoue (chip USB récalcitrant)
Certains clones d'ESP32 utilisent des puces USB-série moins standard (CH340, CP2102…) qui ont du mal à passer en mode bootloader automatiquement. Voici la procédure :
- Cliquez sur SE CONNECTER
- Immédiatement après, maintenez le bouton BOOT de la carte ESP32 enfoncé
- L'ESP passe en mode flash et la connexion s'établit
- Relâchez le bouton BOOT une fois la progression affichée
Étape 4 — Installation du firmware minimal
Dès que la connexion est établie, ESPHome compile et envoie un firmware minimal sur l'ESP32 :
- "Preparing installation" — compilation en cours, cela peut prendre plusieurs minutes selon la puissance du serveur HA
- "Installing..." — le firmware est en cours d'écriture sur la flash de l'ESP
- "Configuration created!" — c'est terminé pour cette partie
✅ Ce que ce firmware embarque
Ce premier firmware contient uniquement le strict nécessaire : la pile WiFi et l'agent OTA. Il n'a pas encore les identifiants WiFi — on les ajoute à l'étape suivante.
Étape 5 — Configurer le WiFi dans le YAML
De retour dans ESPHome Builder, votre nouveau dispositif apparaît dans la liste. Cliquez sur EDIT pour ouvrir l'éditeur YAML de la configuration.
La section wifi accepte de nombreuses options selon vos besoins. Voici la configuration de base :
wifi:
ssid: "NomDeVotreReseau"
password: "MotDePasseWiFi"
🔒 Bonne pratique : utiliser les secrets ESPHome
Pour ne pas stocker vos mots de passe en clair dans chaque fichier YAML, ESPHome propose un fichier secrets.yaml centralisé :
# Dans secrets.yaml
wifi_ssid: "NomDeVotreReseau"
wifi_password: "MotDePasseWiFi"
# Dans votre config ESP
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
Configurer plusieurs réseaux WiFi
ESPHome permet de déclarer plusieurs réseaux. L'ESP32 se connecte automatiquement au premier disponible, dans l'ordre de priorité défini. Idéal pour un appareil mobile entre deux zones, ou pour prévoir un réseau de secours :
wifi:
networks:
- ssid: "ReseauPrincipal"
password: "MotDePasse1"
priority: 10 # priorité haute = testé en premier
- ssid: "ReseauSecondaire"
password: "MotDePasse2"
priority: 5
- ssid: "ReseauInvites"
password: "MotDePasse3"
priority: 1 # priorité basse = dernier recours
💡 Fonctionnement de la priorité
L'ESP32 scanne les réseaux disponibles et choisit celui avec la priorité la plus élevée parmi ceux qu'il détecte. Si le réseau principal est hors portée, il bascule automatiquement sur le suivant. Dès que le réseau prioritaire redevient accessible, l'ESP se reconnecte dessus.
Adresse IP fixe (IP statique)
Par défaut l'ESP32 obtient une IP via DHCP. Pour lui attribuer une adresse fixe — utile pour faciliter l'accès direct ou figer les règles de firewall :
wifi:
ssid: "NomDeVotreReseau"
password: "MotDePasseWiFi"
manual_ip:
static_ip: 192.168.1.100
gateway: 192.168.1.1
subnet: 255.255.255.0
dns1: 192.168.1.1 # souvent l'adresse de votre box
dns2: 8.8.8.8 # DNS Google en secours
Hotspot de secours (Access Point)
Si l'ESP32 ne parvient pas à se connecter à aucun réseau WiFi après plusieurs tentatives, il peut ouvrir son propre point d'accès WiFi pour permettre une reconfiguration. C'est le filet de sécurité d'ESPHome :
ap:
ssid: "ESP32-Secours"
password: "Config1234"
🛟 Comment fonctionne le fallback AP
Si l'ESP32 échoue à joindre le WiFi pendant environ 1 minute, il active automatiquement ce point d'accès. Connectez-vous à ce réseau depuis un téléphone ou un PC, puis ouvrez 192.168.4.1 dans votre navigateur pour accéder au portail de reconfiguration. Sans mot de passe déclaré, le hotspot est ouvert (à éviter en production).
Se connecter à un réseau WiFi caché
Si votre box diffuse un SSID masqué (non visible dans les listes WiFi), ajoutez l'option hidden :
wifi:
ssid: "MonReseauCache"
password: "MotDePasse"
hidden: true
Forcer la connexion à un point d'accès précis (BSSID)
Dans un environnement avec plusieurs bornes WiFi portant le même SSID (réseau maillé, plusieurs box…), vous pouvez forcer l'ESP32 à se connecter à une borne spécifique via son adresse MAC (BSSID) :
wifi:
networks:
- ssid: "NomDuReseau"
password: "MotDePasse"
bssid: AA:BB:CC:DD:EE:FF # adresse MAC de la borne cible
channel: 6 # canal WiFi de cette borne (optionnel, accélère la connexion)
Mode économie d'énergie
Sur batterie, réduire l'activité radio peut considérablement prolonger l'autonomie. ESPHome propose trois niveaux :
wifi:
ssid: "NomDeVotreReseau"
password: "MotDePasseWiFi"
power_save_mode: light # none | light | high
| Mode | Consommation | Latence | Usage recommandé |
|---|---|---|---|
none | Maximale | Minimale | Alimentation secteur, réactivité critique |
light | Réduite | Légèrement accrue | Bon compromis, usage général |
high | Minimale | Importante | Batterie, données non temps réel |
Connexion rapide (fast_connect)
Par défaut, l'ESP32 scanne tous les canaux WiFi avant de se connecter. Si vous n'avez qu'un seul réseau déclaré et souhaitez accélérer le démarrage, activez fast_connect :
wifi:
ssid: "NomDeVotreReseau"
password: "MotDePasseWiFi"
fast_connect: true
⚠️ Attention avec fast_connect
fast_connect: true est incompatible avec la déclaration de plusieurs réseaux via networks:. À n'utiliser que si un seul réseau est configuré.
Exemple de configuration WiFi complète
Voici une configuration combinant les options les plus utiles pour un ESP32 fixe sur secteur :
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
priority: 10
- ssid: !secret wifi_ssid_backup
password: !secret wifi_password_backup
priority: 1
manual_ip:
static_ip: 192.168.1.100
gateway: 192.168.1.1
subnet: 255.255.255.0
dns1: 192.168.1.1
power_save_mode: none
ap:
ssid: "ESP32-Secours"
password: !secret ap_password
captive_portal:
📝 À quoi sert captive_portal ?
Le composant captive_portal active un portail web sur le hotspot de secours. Sans lui, le fallback AP est actif mais vous ne pouvez pas reconfigurer l'ESP via interface web. Avec lui, une page de configuration s'ouvre automatiquement dès que vous vous connectez au hotspot.
Une fois les identifiants renseignés, cliquez sur SAVE puis INSTALL.
Étape 5b — Configurer les services réseau
Dans le même fichier YAML, trois autres composants réseau méritent d'être configurés dès le départ : le serveur web intégré, l'API native pour Home Assistant, et le serveur OTA.
Le serveur web intégré (web_server)
ESPHome peut activer un serveur HTTP directement sur l'ESP32. Accessible depuis n'importe quel navigateur sur votre réseau local via l'adresse IP ou le nom mDNS de l'ESP (ex. : http://capteur-salon.local), il affiche un tableau de bord avec toutes les entités (capteurs, interrupteurs, boutons) et un journal de logs en temps réel — très pratique pour déboguer sans avoir besoin d'ouvrir Home Assistant.
web_server:
port: 80 # port HTTP (80 par défaut)
version: 3 # version de l'interface : 1, 2 ou 3 (3 = plus moderne)
🔢 Quelle version choisir ?
- Version 1 — interface minimaliste, compatible avec tous les navigateurs, chargement ultra-rapide
- Version 2 — interface améliorée avec plus d'options de visualisation
- Version 3 — interface moderne, meilleure lisibilité, recommandée si votre ESP a assez de mémoire flash
Avec authentification (mot de passe)
Sans protection, n'importe qui sur votre réseau local peut accéder à l'interface et contrôler l'ESP. Ajoutez un couple identifiant/mot de passe :
web_server:
port: 80
version: 3
auth:
username: admin
password: !secret web_server_password
🔒 Ajouter le mot de passe dans secrets.yaml
# Dans secrets.yaml
web_server_password: "MotDePasseInterface"
Le navigateur affichera une invite d'authentification HTTP Basic avant d'accéder au tableau de bord.
Mode local (sans CDN)
Par défaut, les versions 2 et 3 chargent leurs fichiers JavaScript et CSS depuis un CDN sur internet. Sur un réseau isolé ou pour garantir le fonctionnement hors ligne, activez le mode local :
web_server:
version: 3
local: true # les assets sont servis depuis l'ESP lui-même, sans accès internet
⚠️ Impact mémoire du mode local
Servir les assets en local consomme de la mémoire flash supplémentaire sur l'ESP32. Si votre firmware est déjà volumineux (nombreux capteurs, bibliothèques), préférez le mode CDN (par défaut) ou la version 1 plus légère.
Options avancées du serveur web
web_server:
port: 80
version: 3
auth:
username: admin
password: !secret web_server_password
local: true
ota: false # désactive le bouton de mise à jour OTA dans l'interface web
include_internal: true # affiche aussi les entités marquées "internal: true" dans le YAML
L'API native ESPHome (api)
C'est la brique qui permet à Home Assistant de communiquer avec l'ESP32 via le port 6053. Sans cette section, HA peut détecter l'ESP sur le réseau mais ne peut ni lire ses données ni le contrôler. ESPHome génère automatiquement une clé de chiffrement lors de la création du dispositif :
api:
encryption:
key: "aBcDeFgHiJkLmNoPqRsTuVwXyZ012345=" # clé générée automatiquement par ESPHome
🔑 Clé de chiffrement API
Cette clé sert à chiffrer les échanges entre HA et l'ESP32. Elle est générée aléatoirement par ESPHome à la création du dispositif — ne la modifiez pas manuellement. Si vous recréez un dispositif avec le même nom, la clé changera et il faudra re-valider l'intégration dans HA. Stockez-la dans secrets.yaml :
# Dans secrets.yaml
api_encryption_key: "aBcDeFgHiJkLmNoPqRsTuVwXyZ012345="
# Dans votre config ESP
api:
encryption:
key: !secret api_encryption_key
Timeout de redémarrage automatique
Par défaut, l'ESP32 redémarre automatiquement si Home Assistant reste déconnecté pendant 15 minutes (protection contre les plantages silencieux). Ce comportement se configure via reboot_timeout :
api:
encryption:
key: !secret api_encryption_key
reboot_timeout: 15min # durée avant redémarrage si HA absent (défaut : 15min)
# mettre 0s pour désactiver le redémarrage automatique
| Valeur | Comportement | Usage recommandé |
|---|---|---|
15min | Redémarre si HA absent 15 min (défaut) | La plupart des installations |
0s | Ne redémarre jamais sans HA | ESP autonome, sans HA permanent |
1h | Redémarre après 1 heure sans HA | HA parfois éteint volontairement |
Le serveur OTA (ota)
Le composant OTA gère les mises à jour firmware sans câble USB. Il est automatiquement inclus par ESPHome mais peut être personnalisé, notamment pour le protéger par un mot de passe :
ota:
- platform: esphome
password: !secret ota_password
⚠️ Pourquoi protéger l'OTA ?
Sans mot de passe OTA, n'importe qui ayant accès à votre réseau local peut flasher un nouveau firmware sur l'ESP32. Sur un réseau domestique privé le risque est faible, mais sur un réseau partagé (bureau, immeuble…) c'est indispensable. Ajoutez dans secrets.yaml :
ota_password: "MotDePasseOTA"
Configuration OTA avancée
ota:
- platform: esphome
password: !secret ota_password
on_begin: # action déclenchée au début d'une mise à jour OTA
then:
- logger.log: "Mise à jour OTA en cours..."
on_progress: # remontée de progression (0-100%)
then:
- logger.log:
format: "OTA : %d%%"
args: ["x"]
on_end:
then:
- logger.log: "Mise à jour OTA terminée, redémarrage..."
on_error:
then:
- logger.log: "Erreur OTA !"
Configuration YAML complète recommandée
Voici un bloc de référence combinant WiFi, serveur web, API et OTA, pensé pour une installation domestique standard :
# ─── WiFi ───────────────────────────────────────────
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
priority: 10
- ssid: !secret wifi_ssid_backup
password: !secret wifi_password_backup
priority: 1
manual_ip:
static_ip: 192.168.1.100
gateway: 192.168.1.1
subnet: 255.255.255.0
dns1: 192.168.1.1
power_save_mode: none
ap:
ssid: "ESP32-Secours"
password: !secret ap_password
captive_portal:
# ─── Serveur web ────────────────────────────────────
web_server:
port: 80
version: 3
auth:
username: admin
password: !secret web_server_password
# ─── API Home Assistant ─────────────────────────────
api:
encryption:
key: !secret api_encryption_key
reboot_timeout: 15min
# ─── Mise à jour OTA ────────────────────────────────
ota:
- platform: esphome
password: !secret ota_password
✅ Récapitulatif secrets.yaml
Avec cette configuration, votre fichier secrets.yaml centralise tous les mots de passe :
# secrets.yaml
wifi_ssid: "NomReseauPrincipal"
wifi_password: "MotDePassePrincipal"
wifi_ssid_backup: "NomReseauSecondaire"
wifi_password_backup: "MotDePasseSecondaire"
ap_password: "HotspotSecours"
web_server_password: "InterfaceWeb"
api_encryption_key: "aBcDeFgHiJkLmNoPqRsTuVwXyZ012345="
ota_password: "MiseAJourOTA"
Étape 6 — Deuxième flash avec le WiFi
ESPHome vous demande comment installer la nouvelle configuration :
- Choisissez Plug into this computer pour un flash USB (même procédure qu'à l'étape 3 — bouton BOOT si nécessaire)
- Une fois ce second flash terminé, l'ESP redémarre et se connecte à votre réseau WiFi
Toutes les installations suivantes pourront se faire en OTA directement depuis ESPHome Builder, sans câble USB.
Étape 7 — Intégration dans Home Assistant
L'ESP32 est maintenant connecté au WiFi et annonce sa présence sur le réseau. Home Assistant le détecte automatiquement :
- Dans HA, allez dans Paramètres → Appareils et services
- Dans la section Découvertes, votre ESP32 apparaît avec un bouton AJOUTER
- Cliquez sur AJOUTER et confirmez
- L'ESP est maintenant un appareil HA à part entière, avec toutes ses entités visibles dans le tableau de bord
🚀 La suite : programmation OTA
Maintenant que l'ESP est sur le réseau, toute modification de sa configuration (ajout d'un capteur, d'une sortie relais…) s'installe directement Over-the-Air depuis ESPHome Builder, sans débrancher ni rebrancher quoi que ce soit. C'est l'un des grands avantages de l'écosystème ESPHome + Home Assistant.
Aller plus loin : échange de données via MQTT
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger, conçu pour les objets connectés à ressources limitées. Contrairement à l'API native ESPHome (directement liée à Home Assistant), MQTT passe par un broker — un serveur central qui reçoit, filtre et redistribue les messages entre tous les appareils abonnés. Cela permet à l'ESP32 d'échanger des données avec Home Assistant, mais aussi avec Node-RED, Grafana, InfluxDB, ou n'importe quel autre système compatible MQTT.
| API native ESPHome | MQTT | |
|---|---|---|
| Broker requis | Non (direct HA) | Oui (Mosquitto ou autre) |
| Compatibilité | Home Assistant uniquement | Tout système MQTT |
| Chiffrement | Intégré (clé AES) | Optionnel (TLS port 8883) |
| Discovery HA | Automatique | Via MQTT Discovery |
| Latence | Très faible | Faible (via broker local) |
| Usage recommandé | Installation 100% HA | Multi-systèmes, interopérabilité |
1. Installer un broker MQTT
Le broker est le serveur central qui reçoit et redistribue tous les messages. L'add-on Mosquitto est le plus courant sous Home Assistant :
- Dans HA, allez dans Paramètres → Modules complémentaires → Boutique
- Recherchez Mosquitto broker et installez-le
- Activez Démarrer au démarrage et Watchdog
- Dans Paramètres → Appareils et services, l'intégration MQTT apparaît automatiquement — configurez-la avec l'adresse IP de HA, port 1883
🔐 Créer un utilisateur MQTT dédié
Ne réutilisez pas le compte administrateur HA pour MQTT. Créez un compte dédié dans Paramètres → Personnes → Utilisateurs (ex. : mqtt_esp32 avec un mot de passe fort). Ce compte sera utilisé exclusivement par vos ESP32 pour se connecter au broker.
2. Configuration de base
Ajoutez le composant mqtt dans le YAML de votre ESP32. Il remplace ou complète l'API native selon vos besoins :
mqtt:
broker: 192.168.1.10 # IP de votre serveur Home Assistant (où tourne Mosquitto)
port: 1883 # port standard MQTT non chiffré
username: !secret mqtt_username
password: !secret mqtt_password
client_id: "esp32-salon" # identifiant unique de cet ESP sur le broker
💡 client_id unique obligatoire
Si deux appareils se connectent avec le même client_id, le broker déconnecte le premier dès que le second arrive. Choisissez un identifiant basé sur l'emplacement ou la fonction de l'ESP : esp32-garage, esp32-chaufferie, etc.
3. Messages de naissance et de testament (birth / will)
Ces deux messages permettent de savoir en temps réel si un ESP est en ligne ou hors ligne :
- birth_message — publié par l'ESP dès qu'il se connecte au broker
- will_message — enregistré à l'avance par le broker, et publié automatiquement si l'ESP se déconnecte de façon anormale (coupure réseau, crash…)
mqtt:
broker: 192.168.1.10
username: !secret mqtt_username
password: !secret mqtt_password
client_id: "esp32-salon"
birth_message:
topic: "esp32/salon/status"
payload: "online"
qos: 1
retain: true # le broker mémorise ce message pour les futurs abonnés
will_message:
topic: "esp32/salon/status"
payload: "offline"
qos: 1
retain: true
4. QoS et retain
Deux paramètres importants accompagnent chaque message MQTT :
| QoS | Garantie de livraison | Usage |
|---|---|---|
0 | Au plus une fois (fire & forget) | Capteurs fréquents, perte acceptable |
1 | Au moins une fois (accusé de réception) | Commandes, alertes importantes |
2 | Exactement une fois (double handshake) | Rarement utile sur ESP32 (lourd) |
Le flag retain: true demande au broker de mémoriser le dernier message sur ce topic. Tout nouvel abonné le reçoit immédiatement, même si l'ESP ne vient pas de le publier — très utile pour les états (allumé/éteint, température courante…).
5. Publier des données (publish)
ESPHome publie automatiquement toutes les entités sur MQTT dès que le composant mqtt est activé. Chaque capteur, interrupteur ou bouton obtient son propre topic. Vous pouvez aussi publier manuellement via l'action mqtt.publish dans vos automatisations :
sensor:
- platform: dht
pin: GPIO4
model: DHT22
update_interval: 30s
temperature:
name: "Température Salon"
on_value: # déclenché à chaque nouvelle mesure
then:
- mqtt.publish:
topic: "esp32/salon/temperature"
payload: !lambda 'return to_string(x);'
qos: 0
retain: true
humidity:
name: "Humidité Salon"
on_value:
then:
- mqtt.publish:
topic: "esp32/salon/humidite"
payload: !lambda 'return to_string(x);'
retain: true
📡 Topics générés automatiquement par ESPHome
Sans configuration explicite, ESPHome publie chaque entité sur un topic de la forme :
esphome/<client_id>/sensor/<nom>/state
Par exemple : esphome/esp32-salon/sensor/temperature_salon/state
6. Recevoir et réagir à un message (subscribe)
L'ESP32 peut s'abonner à un topic MQTT et déclencher des actions dès qu'un message arrive — idéal pour piloter un relais, allumer une LED ou modifier un paramètre à distance :
mqtt:
broker: 192.168.1.10
username: !secret mqtt_username
password: !secret mqtt_password
on_message:
- topic: "esp32/salon/relais/set"
payload: "ON"
then:
- switch.turn_on: relais_chauffage
- topic: "esp32/salon/relais/set"
payload: "OFF"
then:
- switch.turn_off: relais_chauffage
- topic: "esp32/salon/commande"
then: # réagir à n'importe quel contenu
- logger.log:
format: "Commande reçue : %s"
args: ["x.c_str()"]
7. Découverte automatique dans Home Assistant (MQTT Discovery)
Avec l'option discovery: true, ESPHome publie automatiquement la description de chaque entité dans le topic homeassistant/. Home Assistant les détecte et les intègre sans aucune configuration manuelle — exactement comme avec l'API native :
mqtt:
broker: 192.168.1.10
username: !secret mqtt_username
password: !secret mqtt_password
discovery: true # active la découverte automatique HA
discovery_prefix: homeassistant # préfixe standard HA (ne pas modifier)
✅ API native ou MQTT Discovery : les deux sont compatibles
Vous pouvez activer simultanément l'API native et MQTT dans le même YAML. L'API native gère la communication directe avec HA (contrôle, logs), MQTT ajoute la publication vers d'autres systèmes (Node-RED, InfluxDB…). Les deux coexistent sans conflit.
8. Connexion chiffrée TLS (port 8883)
Sur un réseau non sécurisé ou pour des données sensibles, activez le chiffrement TLS. Mosquitto doit être configuré avec un certificat côté serveur, puis ESPHome vérifie l'empreinte du certificat :
mqtt:
broker: 192.168.1.10
port: 8883 # port MQTT chiffré (TLS)
username: !secret mqtt_username
password: !secret mqtt_password
certificate_authority: | # certificat CA du broker (PEM)
-----BEGIN CERTIFICATE-----
MIIBxTCCAW+gAwIBAgIJAMaH...
-----END CERTIFICATE-----
🔒 Alternative : vérification par empreinte SHA1
Plus simple à mettre en place, la vérification par empreinte évite de coller le certificat complet dans le YAML. Obtenez l'empreinte de votre broker avec :
openssl s_client -connect 192.168.1.10:8883 | openssl x509 -fingerprint -noout
Puis dans ESPHome :
ssl_fingerprints: ["AA:BB:CC:DD:EE:FF:..."]
9. Configuration MQTT complète de référence
# ─── MQTT ───────────────────────────────────────────
mqtt:
broker: !secret mqtt_broker
port: 1883
username: !secret mqtt_username
password: !secret mqtt_password
client_id: "esp32-salon"
discovery: true
discovery_prefix: homeassistant
birth_message:
topic: "esp32/salon/status"
payload: "online"
qos: 1
retain: true
will_message:
topic: "esp32/salon/status"
payload: "offline"
qos: 1
retain: true
on_message:
- topic: "esp32/salon/relais/set"
payload: "ON"
then:
- switch.turn_on: relais_chauffage
- topic: "esp32/salon/relais/set"
payload: "OFF"
then:
- switch.turn_off: relais_chauffage
✅ Entrées à ajouter dans secrets.yaml
mqtt_broker: "192.168.1.10"
mqtt_username: "mqtt_esp32"
mqtt_password: "MotDePasseMQTT"
Récapitulatif des étapes
| # | Étape | Outil |
|---|---|---|
| 1 | Ouvrir ESPHome Builder (Edge/Chrome) | Navigateur |
| 2 | NEW DEVICE → NEW DEVICE SETUP → Nommer l'ESP | ESPHome Builder |
| 3 | CONNECT → Sélectionner le port → SE CONNECTER (+ bouton BOOT si besoin) | USB + navigateur |
| 4 | Attendre "Configuration created!" | Automatique |
| 5 | EDIT → Configurer WiFi (réseaux, IP fixe, hotspot secours, options) | YAML ESPHome |
| 5b | Configurer web_server (auth, version), api (clé chiffrement, timeout), ota (mot de passe) → SAVE | YAML ESPHome |
| 6 | INSTALL → Plug into this computer (+ bouton BOOT si besoin) | USB + navigateur |
| 7 | Paramètres → Appareils et services → AJOUTER l'ESP découvert | Home Assistant |
| 8 | Programmation OTA disponible — plus besoin de câble USB | ESPHome Builder (WiFi) |