Écran OLED I2C (SSD1306) avec ESPHome
Introduction
Après avoir exploré le son, intéressons-nous à l’affichage. L’objectif de cet article est d’intégrer un petit écran OLED I2C, basé sur le populaire contrôleur SSD1306, avec ESPHome et Home Assistant. Ces petits écrans sont parfaits pour afficher des informations de manière compacte et avec une excellente lisibilité.
ESPHome rend l’utilisation de ces écrans incroyablement simple, nous permettant d’afficher du texte, des formes et même des graphiques provenant directement de Home Assistant.
L’écran OLED SSD1306
L’écran SSD1306 est un écran à diodes électroluminescentes organiques (OLED) monochrome, très apprécié dans le monde du DIY pour son contraste élevé (les pixels noirs sont vraiment noirs et ne consomment pas d’énergie), sa faible consommation et son interface de communication simple (I2C ou SPI).

Sa petite taille le rend idéal pour de nombreux projets de domotique où l’on a besoin d’un retour d’information visuel sans l’encombrement d’un grand écran.
Caractéristiques techniques
- Tension d’alimentation : 3.3V à 5.0V.
- Interface de communication : I2C (le plus courant) ou SPI.
- Résolution : Typiquement 128x64 pixels ou 128x32 pixels.
- Couleur : Monochrome (généralement blanc, bleu ou bicolore).
- Contrôleur : SSD1306.
Installation
Les composants nécessaires sont :
- 🛒 Un écran OLED SSD1306 (version I2C 4 broches) ~2-3€
- 🛒 Un WEMOS D1 Mini ou un autre ESP32/ESP8266 ~2-3€
- 🛒 Quelques câbles Dupont
1. Câblage
Le câblage via le bus I2C est très simple car il ne nécessite que 4 fils : deux pour l’alimentation (VCC et GND) et deux pour les données (SDA et SCL).
Sur un WEMOS D1 Mini (ESP8266) :
- VCC de l’écran -> 3.3V du WEMOS
- GND de l’écran -> GND du WEMOS
- SDA de l’écran -> D2 (GPIO4) du WEMOS
- SCL de l’écran -> D1 (GPIO5) du WEMOS
2. Le code
Le code ESPHome pour afficher des informations de base est très concis. Nous allons configurer l’écran et lui faire afficher l’heure actuelle, ainsi qu’une valeur de capteur provenant de Home Assistant.
esphome:
name: oled_display
friendly_name: oled_display
esp8266:
board: d1_mini
# ... (votre configuration wifi, api, etc.)
# Activer le bus I2C
i2c:
sda: D2
scl: D1
scan: true
# Déclarer une police de caractères
font:
- file: "gfonts://Roboto"
id: roboto
size: 12
# Déclarer un capteur de Home Assistant que l'on veut afficher
sensor:
- platform: homeassistant
id: temperature_salon
entity_id: sensor.temperature_salon # Remplacez par votre entité
# Configurer l'écran
display:
- platform: ssd1306_i2c
model: "SSD1306 128x64"
address: 0x3C
lambda: |-
// Affiche l'heure en haut à droite
it.strftime(128, 0, "%H:%M", id(roboto), TEXT_ALIGN_TOP_RIGHT, id(homeassistant_time).now());
// Affiche un titre
it.print(0, 15, "Température Salon:", id(roboto));
// Affiche la valeur du capteur
if (id(temperature_salon).has_state()) {
it.printf(0, 35, "%.1f °C", id(temperature_salon).state);
} else {
it.print(0, 35, "N/A", id(roboto));
}
3. Intégration et affichage
Une fois le code téléversé sur l’ESP, l’écran devrait s’allumer et afficher les informations. L’intégration avec Home Assistant se fait via l’API ESPHome comme d’habitude. La magie ici est que l’ESP va chercher de lui-même l’état de l’entité sensor.temperature_salon
et l’affiche.
Cas d’usage (Use Cases)
Use Case 1 : Centre de Notifications Discret
Le besoin : Être notifié d’événements importants sans avoir le son d’un téléphone ou une lumière qui clignote.
La solution : Utilisez l’écran OLED comme un “ticker” de notifications. Vous pouvez créer une automatisation dans Home Assistant qui, lorsqu’un événement se produit (ex: “personne détectée par la sonnette”, “machine à laver terminée”, “prochain rendez-vous dans 15 min”), envoie le texte à afficher sur l’écran.
Exemple d’automatisation (action) :
action:
- service: esphome.oled_display_display_text
data:
text: "Machine à laver terminée !"
L’écran peut afficher le message pendant quelques secondes/minutes avant de revenir à l’affichage par défaut (l’heure, par exemple). C’est un moyen très efficace et peu intrusif de rester informé.
Use Case 2 : Indicateur de Statut “En un coup d’œil”
Le besoin : Connaître rapidement l’état de plusieurs services ou appareils critiques sans avoir à ouvrir une application.
La solution : Transformez l’écran en un tableau de bord minimaliste avec des icônes ou des symboles. Chaque symbole représente un service.
Exemple d’affichage :
- Une icône “Monde” : Statut de la connexion Internet (OK / KO).
- Une icône “Serveur” : Statut de votre serveur NAS ou Plex (En ligne / Hors ligne).
- Une icône “Imprimante” : Niveau d’encre bas.
- Une icône “Lune” : Indique si le mode “Nuit” de la maison est activé.
Comment faire : ESPHome permet d’afficher des images et des icônes (au format PBM). Vous pouvez créer une automatisation qui met à jour l’icône correspondante en fonction de l’état d’une entité dans Home Assistant. Cela donne un retour visuel immédiat sur l’état de votre “système”.
Conclusion
L’écran OLED SSD1306 est un ajout fantastique à tout projet de domotique. Pour un coût minime et avec une configuration très simple grâce à ESPHome, il offre un retour d’information visuel clair et personnalisable. Que ce soit pour afficher des données, recevoir des notifications ou vérifier l’état de vos systèmes, ses applications sont nombreuses et ne sont limitées que par votre imagination.