Aziz Bench

Premiers pas avec ESPHome

ESPHome transforme un court fichier YAML en firmware pour un ESP32 ou un ESP8266 et relie la carte à Home Assistant, sans écrire de C++. Ce guide vous accompagne de l’installation d’ESPHome jusqu’à un capteur de température, d’humidité et de pression sur votre tableau de bord, en expliquant chaque ligne de la configuration.

Par AzizPublié le 12 min de lecture

Vérifié le 4 novembre 2026 avec ESPHome 2026.10.2, la version actuelle : chaque configuration de ce guide est validée par esphome config dans cette version. Les noms des menus suivent la documentation d’ESPHome et de Home Assistant à la même date.

Ce qu’est ESPHome

Vous décrivez l’appareil dans un fichier YAML : quelle carte, quels capteurs sur quelles broches, comment il rejoint votre réseau. ESPHome transforme cette description en firmware, le compile et l’installe sur la carte. Home Assistant dialogue ensuite avec l’appareil par l’API native d’ESPHome, une connexion directe sur le port TCP 6053 que l’on peut chiffrer avec une clé de 32 octets.

YAMLvotre fichierESPHomecrée le firmwareESP32votre carteHome Assistanttableau de bordd’abord : USBpuis : Wi-FiAPI chiffréeYAMLvotre fichierESPHomecrée le firmwareESP32votre carteHome Assistanttableau de bordd’abord : USBpuis : Wi-FiAPI chiffrée
D’un fichier YAML à un appareil dans Home Assistant. La première installation demande un câble ; ensuite, les mises à jour passent par le Wi-Fi.

Pour l’essentiel, il n’y a pas de code à écrire. Quand vous modifiez le YAML, vous réinstallez et l’appareil tourne avec le nouveau firmware.

Installer ESPHome

L’outil dans lequel vous travaillez s’appelle ESPHome Device Builder : un tableau de bord web qui conserve vos fichiers YAML, les compile et installe le firmware. Choisissez comment le lancer :

  • Dans Home Assistant. Dans les paramètres, à la rubrique des applications (Home Assistant appelle désormais « apps » ses modules complémentaires), installez ESPHome Device Builder, démarrez-le et ouvrez son interface web. S’il n’apparaît pas, ajoutez le dépôt https://github.com/esphome/home-assistant-addon depuis le menu ⋮.
  • En application de bureau. La page d’installation propose ESPHome Device Builder pour macOS (un .dmg), pour Windows et pour Linux (un .deb ou une AppImage). Sous Linux, si les ports série n’apparaissent pas, ajoutez votre utilisateur au groupe dialout.
  • Dans Docker. Le même tableau de bord écoute sur le port 6052. Lancez le conteneur avec le réseau de l’hôte (--net=host) pour qu’il trouve les appareils par mDNS ; avec Docker Desktop, publiez plutôt le port 6052.
  • En ligne de commande. pip install esphome (dans un environnement virtuel si possible), puis esphome run salon.yaml valide, compile, installe et affiche le journal en une seule fois.

Pour le tout premier flashage, vous pouvez aussi utiliser ESPHome Web, sur web.esphome.io, qui écrit le firmware sur la carte directement depuis le navigateur. Il faut un navigateur compatible Web Serial : Chrome, Edge et, d’après la documentation d’ESP Web Tools, Firefox ; iOS n’est pas pris en charge.

Choisir la carte

N’importe quelle carte de développement à ESP32 ou ESP8266 convient. Ces quatre-là sont courantes, peu chères et bien prises en charge ; c’est l’identifiant de la carte qui va dans le YAML.

CarteYAMLIdéale pourBroches
ESP32 DevKitesp32: board: esp32devLa plupart des tutoriels et exemples, beaucoup de brochesbrochage de l’ESP32
ESP32-C3 SuperMiniesp32: board: esp32-c3-devkitm-1Petits capteurs bon marché et sobresbrochage de la C3 SuperMini
ESP32-S3 DevKitC-1esp32: board: esp32-s3-devkitc-1Plus de mémoire, USB natif, caméras et écransbrochage de la S3 DevKitC-1
Wemos D1 miniesp8266: board: d1_miniCapteurs et relais simples, sur une puce plus ancienne et plus petitebrochage de la D1 mini

Identifiants vérifiés avec esphome config sur ESPHome 2026.10.2. Notre comparatif ESP32 détaille les différences entre les puces.

En cas de doute, commencez par un ESP32 DevKit : c’est celui qu’utilise ce guide, et la plupart des réponses que vous trouverez en ligne partent du principe que vous en avez un.

Une première configuration, ligne par ligne

Dans le Device Builder, Create device lance un assistant qui écrit presque tout pour vous. Voici le fichier complet d’un appareil nommé salon, encore sans capteur :

esphome:
  name: salon                  # nom d’hôte : minuscules, chiffres, tirets
  friendly_name: Salon         # le nom affiché par Home Assistant

esp32:
  board: esp32dev              # votre carte
  framework:
    type: esp-idf              # par défaut depuis la 2026.1

logger:                        # journal par USB et Wi-Fi

api:                           # le lien avec Home Assistant
  encryption:
    key: !secret api_key

ota:
  - platform: esphome          # mises à jour par Wi-Fi
    encryption:                # reprend la clé de l’API

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  ap:                          # point d’accès de secours
    password: !secret ap_password

captive_portal:                # sa page de configuration
  • esphome: → name est le nom d’hôte sur votre réseau, salon.local : 31 caractères au plus, lettres minuscules, chiffres et tirets. friendly_name est le nom qu’affiche Home Assistant.
  • esp32: → board indique à ESPHome la puce et la taille de la flash. Depuis ESPHome 2026.1, le framework par défaut sur l’ESP32 est ESP-IDF ; l’indiquer explicitement rend le fichier plus clair. Arduino reste pris en charge avec type: arduino.
  • logger: → le journal par USB et par le réseau, par défaut au niveau DEBUG et à 115200 bauds.
  • api: → l’API native qu’utilise Home Assistant, avec sa clé de chiffrement. Sans clé, la connexion n’est pas chiffrée.
  • ota: → les mises à jour par Wi-Fi. Depuis ESPHome 2026.9, un encryption: vide les chiffre avec la clé de l’API.
  • wifi: → votre réseau, lu dans secrets.yaml. ap: ouvre un point d’accès de secours, au nom de l’appareil, si celui-ci ne parvient pas à se connecter en 90 secondes.
  • captive_portal: → une page sur ce point d’accès pour saisir de nouveaux identifiants Wi-Fi.

Les valeurs !secret viennent d’un second fichier, secrets.yaml, dans le même dossier :

wifi_ssid: "MyNetwork"
wifi_password: "MyWiFiPassword"
api_key: "…"                   # openssl rand -base64 32
ap_password: "…"

La clé de l’API se compose de 32 octets aléatoires encodés en base64 : l’assistant en génère une, tout comme la commande indiquée en commentaire. Ne publiez jamais secrets.yaml.

Un premier capteur : le BME280 en I²C

Le BME280 mesure la température, l’humidité et la pression et dialogue en I²C : deux fils de signal lui suffisent. Sur un ESP32 DevKit, les broches I²C qu’ESPHome utilise d’habitude sont GPIO21 pour SDA et GPIO22 pour SCL.

ESP32 DevKitBME2803V3VINGNDGNDGPIO21SDAGPIO22SCLESP32 DevKitBME2803V3VINGNDGNDGPIO21SDAGPIO22SCL
Quatre fils : l’alimentation en 3,3 V, la masse et les deux lignes I²C. La plupart des modules BME280 ont leurs propres résistances de pull-up, et ESPHome active en plus, par défaut, les pull-up internes de l’ESP32.

Ajoutez ceci à la fin du fichier :

i2c:
  sda: GPIO21
  scl: GPIO22
  scan: true                   # liste les adresses trouvées

sensor:
  - platform: bme280_i2c
    address: 0x76              # ou 0x77, voir le journal
    temperature:
      name: Température
    pressure:
      name: Pression
    humidity:
      name: Humidité
    update_interval: 60s
  • i2c: → le bus et ses broches. scan: true, la valeur par défaut, inscrit dans le journal les adresses trouvées.
  • platform: bme280_i2c → le pilote du BME280. Son adresse par défaut est 0x77 ; beaucoup de modules bon marché répondent en 0x76, comme ici. Notre page sur l’adresse du BME280 explique comment la broche SDO choisit entre les deux.
  • Chaque mesure reçoit un name, qui devient une entité dans Home Assistant. update_interval: 60s lit le capteur une fois par minute.

Vous préférez cliquer ? Notre générateur produit un fichier équivalent, avec ce BME280 déjà ajouté, et crée les clés pour vous. Il met la clé de l’API directement dans le fichier plutôt que dans secrets.yaml, et ajoute des capteurs de signal Wi-Fi et de temps de fonctionnement.Ouvrir le générateur ESPHome

Un autre capteur ? Notre comparatif de capteurs met côte à côte les plus courants, du DHT22 aux SHT4x.

Le premier flashage par USB, puis par Wi-Fi

La toute première installation doit passer par un câble USB. Dans le Device Builder, cliquez sur Install dans la vignette de l’appareil et choisissez la méthode :

  • Plug into this computer flashe depuis votre navigateur. Cette option utilise Web Serial, qui exige une page sécurisée : le tableau de bord ouvert en HTTPS, ou sur localhost, comme avec l’application de bureau.
  • Plug into the computer running ESPHome Device Builder flashe depuis la machine qui fait tourner le tableau de bord, par exemple votre serveur Home Assistant.
  • Manual download, puis Factory format, fournit un fichier .bin à écrire avec ESPHome Web : Connect, choix du port, Install.

En ligne de commande, esphome run salon.yaml demande quel port série utiliser. Si aucun port n’apparaît :

  • Essayez un autre câble USB : ceux qui ne font que charger n’ont pas de fils de données.
  • Installez le pilote de la puce USB-série de la carte, en général un CH34x ou un CP2102.
  • Maintenez le bouton BOOT de la carte enfoncé pendant que vous la branchez, puis relâchez-le : la puce démarre alors en mode téléchargement.

Une fois l’appareil connecté à votre Wi-Fi, chaque Install suivant propose Wirelessly, et esphome run envoie le firmware par le réseau.

L’ajouter à Home Assistant

Si le mDNS fonctionne sur votre réseau, Home Assistant trouve tout seul le nouvel appareil. Allez dans Paramètres → Appareils et services : parmi les appareils Découverts, une vignette ESPHome porte son nom. Cliquez sur Configurer, saisissez la clé de chiffrement quand elle est demandée (si le Device Builder tourne en tant qu’application Home Assistant, elle est souvent préremplie) et choisissez une pièce.

Si rien n’est découvert, cliquez sur Ajouter une intégration, choisissez ESPHome et saisissez salon.local ou l’adresse IP de l’appareil. Les trois mesures du capteur apparaissent comme entités, prêtes pour le tableau de bord.

Parmi les options de l’intégration, celle qui autorise l’appareil à exécuter des actions de Home Assistant est désactivée par défaut. Ne l’activez que pour des appareils de confiance, et seulement si votre YAML en a besoin.

Lire le journal

C’est dans le journal que tout problème apparaît en premier. Dans le Device Builder, Logs le lit par USB si la carte est branchée, sinon par le réseau ; en ligne de commande, esphome logs salon.yaml. À la connexion, l’appareil affiche sa configuration, dont le balayage I²C :

[C][i2c:113]: Results from bus scan:
[C][i2c:119]: Found device at address 0x76

Le nombre qui suit i2c est le numéro de la ligne dans le code source d’ESPHome : il change d’une version à l’autre. « Found no devices » signale un problème de câblage ou d’alimentation, pas de YAML. Une mesure par minute, dans les lignes [D], veut dire que le capteur fonctionne.

Erreurs courantes

SymptômeCause probableQue faire
Aucun port série n’apparaîtCâble de charge uniquement, ou pilote manquantPrenez un câble de données ; installez le pilote CH34x ou CP2102 ; maintenez BOOT en branchant
S’installe, puis redémarre en boucleMauvaise carte dans le YAML, ou une broche de strapping au mauvais niveau au démarrageVérifiez l’identifiant de la carte ; libérez GPIO0, 2, 5, 12 et 15 sur l’ESP32 (notre brochage de l’ESP32 les signale). Après 10 démarrages ratés, ESPHome passe en mode sans échec, avec seulement le Wi-Fi et les mises à jour
« Found no devices », ou capteur introuvableSDA et SCL inversés, mauvaise adresse, pas d’alimentation, ou un BMP280Vérifiez les quatre fils ; indiquez l’adresse trouvée par le balayage ; voir le conseil plus haut
Mesures ADC figées ou en erreurUne broche de l’ADC2, que l’ESP32 d’origine partage avec le Wi-FiPrenez une broche de l’ADC1 : GPIO32 à 39 sur l’ESP32
Ne rejoint jamais le Wi-Fi, le point d’accès de secours apparaîtUn réseau uniquement en 5 GHz, ou une faute de frappe dans secrets.yamlUtilisez un réseau 2,4 GHz : dans ESPHome, seul l’ESP32-C5 peut utiliser le 5 GHz, avec son option band_mode
Redémarre toutes les 15 minutesLe reboot_timeout de l’API : Home Assistant n’est pas connectéAjoutez l’appareil à Home Assistant, ou mettez reboot_timeout: 0s sous api:

Les broches de strapping déterminent le mode de démarrage de la puce : un capteur ou une LED qui en maintient une au niveau haut ou bas peut l’empêcher de démarrer.

Sécurité

  • Chiffrement de l’API. Définissez toujours une clé : sans elle, la connexion n’est ni chiffrée ni authentifiée, et n’importe quel appareil de votre réseau peut s’y connecter.
  • Mises à jour chiffrées. Avec encryption: sous ota: (ESPHome 2026.9 et suivants), l’appareil n’accepte qu’un firmware chiffré avec votre clé. Les guides plus anciens utilisent password: ; ESPHome avertit désormais que cette option consomme de la flash et de la RAM, et recommande le chiffrement ; les deux ne se combinent pas.
  • Un mot de passe sur le point d’accès de secours. Sa page permet à quiconque s’y connecte de modifier les paramètres Wi-Fi et d’envoyer un firmware.
  • Protégez vos secrets. Ne partagez pas secrets.yaml et sauvegardez-le : sans la clé, impossible de mettre l’appareil à jour par Wi-Fi.

Le tenir à jour

ESPHome publie une nouvelle version chaque mois. Mettre à jour le Device Builder (ou pip install --upgrade esphome) ne change pas vos appareils : chacun garde le firmware avec lequel il a été compilé jusqu’à ce que vous cliquiez de nouveau sur Install. Lisez d’abord les changements incompatibles dans les notes de version, puis testez la mise à jour sur un seul appareil avant les autres.

Sur batterie : la veille profonde

Un capteur qui n’a besoin de remonter ses mesures qu’à quelques minutes d’intervalle peut dormir entre-temps avec le composant deep_sleep:, réglé par run_duration et sleep_duration. Tant qu’il dort, Home Assistant l’affiche comme indisponible, et il ne peut recevoir de mise à jour que lorsqu’il est réveillé. Carte, batterie, régulateur et consommations réelles sont traités dans notre guide pour alimenter un ESP32 sur batterie.

Questions fréquentes

Faut-il Home Assistant pour utiliser ESPHome ?

Non. Le Device Builder fonctionne aussi en application de bureau, dans Docker ou en ligne de commande, et les appareils ESPHome peuvent publier leurs données en MQTT ou afficher une page web locale. L’API native, elle, est faite pour Home Assistant.

Quelle version d’ESPHome ce guide utilise-t-il ?

ESPHome 2026.10.2, la version actuelle au 4 novembre 2026. Toutes les configurations présentées sont validées par esphome config dans cette version.

ESP32 ou ESP8266 ?

Un ESP32 pour tout nouveau projet : plus de mémoire et de broches, et c’est la carte de la plupart des exemples. Un ESP8266 comme la D1 mini convient encore aux capteurs et relais simples.

Arduino ou ESP-IDF ?

Depuis ESPHome 2026.1, l’ESP32 utilise ESP-IDF, sauf indication contraire. Arduino reste pris en charge avec framework: type: arduino, pour les bibliothèques ou composants qui en ont besoin.

Pour l’OTA, mot de passe ou chiffrement ?

Le chiffrement, à partir d’ESPHome 2026.9 : encryption: sous ota: reprend la clé de l’API. ESPHome affiche désormais un avertissement pour password:, et les deux ne peuvent pas cohabiter.

Pourquoi mon appareil redémarre-t-il toutes les 15 minutes ?

Avec api: et sans Home Assistant connecté, l’appareil redémarre au bout de reboot_timeout, 15 minutes par défaut, en supposant que le réseau est bloqué. Ajoutez-le à Home Assistant, ou mettez reboot_timeout: 0s.

Mon BME280 ne donne aucune mesure et le journal indique « Wrong chip ID or no response ». Pourquoi ?

C’est sans doute un BMP280, qui n’a pas de capteur d’humidité : le pilote du BME280 attend l’identifiant de puce 0x60, le BMP280 en renvoie un autre et le pilote s’arrête. Utilisez platform: bmp280_i2c ; notre comparatif BME280 et BMP280 explique comment les distinguer.

Peut-on flasher depuis un téléphone ?

Pas avec ESPHome Web : Web Serial n’existe pas sur iOS, et selon la documentation d’ESP Web Tools, Android n’est pas encore pris en charge. Utilisez un ordinateur pour le premier flashage ; ensuite, les mises à jour passent par le Wi-Fi.

Sources

  1. ESPHome : installer ESPHome
  2. ESPHome : premiers pas
  3. ESPHome : connecter physiquement l’appareil
  4. ESP Web Tools (ESPHome Web)
  5. ESPHome : passer d’Arduino à ESP-IDF sur ESP32
  6. ESPHome 2026.9.0 : notes de version (mises à jour chiffrées)
  7. ESPHome sur PyPI (version actuelle)
  8. ESPHome : composant API native
  9. ESPHome : composant WiFi
  10. ESPHome : portail captif
  11. ESPHome : mode sans échec
  12. ESPHome : bus I²C
  13. ESPHome : messages du balayage I²C (code source, 2026.10.2)
  14. ESPHome : capteur BME280
  15. ESPHome : vérification de l’identifiant de puce du BME280 (code source, 2026.10.2)
  16. ESPHome : capteur ADC
  17. ESP-IDF : pilote ADC oneshot (ADC2 et Wi-Fi)
  18. Home Assistant : intégration ESPHome
  19. Apollo Automation : relier un appareil ESPHome à Home Assistant
  20. Waveshare : votre premier appareil ESPHome (options d’installation)