Bonjour à tous,
Je me lance à mon tour pour vous présentez un projet d’afficheur pour par exemple l’heure et les infos de vos capteurs. Il s’agit d’un bloc de 4 matrices 8*8 max7219 et d’un esp8266 wemos D1 mini.
Il vous permettra d’afficher ce que vous souhaitez de home assistant. L’affichage actuellement est en alternance selon un temps défini paramétrable : l’heure et une température dans mon cas.
Le coût du projet est d’environ 10€.

Ce projet n’est pas nouveau en soi, on retrouve des projets similaires sur ce forum.
Pour celui-ci, je me suis attaché à créer un boitier compact en 3D intégrant l’afficheur et un wemos D1 et bien documenter ce projet et tout mettre à votre disposition ( fichiers d’impression 3D en stl et le fichier fusion 360 (f3d) si vous désirez le modifier tout est disponible ici.
Le cablage est simple :
On peut pousser assez facilement l’interface avec home assistant comme les timers entre l’affichage des différentes entités : heure, température … ou la gestion de l’éclairage. J’ai encore un peu de temps devant moi avant la fin du concours ![]()
On peut aussi décider de passer le texte en défilement. Vous trouvez tout ici sur ce component sous esphome.
Bien sûr la couleur affichée est à choisir au moment de l’achat de votre dalle. J’avais un rouge en stock.
Le code esphome
esphome:
name: Display-MAX7219
friendly_name: Display MAX7219
esp8266:
board: esp01_1m
# Enable logging
logger:
# Enable Home Assistant API
api:
encryption:
key: "xxxxxxxx"
ota:
- platform: esphome
password: "xxxxxxxx"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
# Optional manual IP
manual_ip:
static_ip: 192.168.1.XXX
gateway: 192.168.1.1
subnet: 255.255.255.0
# Enable fallback hotspot (captive portal) in case wifi connection fails
ap:
ssid: "Display-MAX7219 Fallback Hotspot"
password: "Da5dersVX7Cp"
captive_portal:
web_server:
port: 80
spi:
clk_pin: GPIO5
mosi_pin: GPIO4
display:
- platform: max7219digit
cs_pin: GPIO0
num_chips: 4
scroll_enable: False
lambda: |-
// éteindre avant d'écrire
it.turn_on_off(false);
if (id(mode) == 1) {
it.strftime(5, 0, id(digit_font), "%H:%M", id(hass_time).now());
} else {
it.printf(5, 0, id(digit_font), "%.1f°", id(ha_ext).state);
id(timer) = 1;
}
// rallumer après
it.turn_on_off(true);
#} else {
# it.printf(40, 0, id(digit_font), "%s", id(ha_weather).state.c_str());
#id(timer) = 1;
#}
font:
- file: "fonts/pixelmix.ttf"
id: digit_font
size: 8
time:
- platform: homeassistant
id: hass_time
sensor:
- platform: homeassistant
id: ha_ext
entity_id: sensor.exterieure
#text_sensor:
# - platform: homeassistant
# id: ha_weather
# entity_id: sensor.xxxxxx_daily_original_condition
globals:
- id: mode # 1 = time, 2 = temperature 3 = xxxxxx
type: int
initial_value: "1"
- id: timer
type: int
initial_value: "0"
- id: time_duration # en intervalles de 5s
type: int
initial_value: "4" # 4 * 5s = 20s
- id: temp_duration
type: int
initial_value: "1" # 1 * 5s = 5s
#- id: sensor_duration
# type: int
# initial_value: "1" # 1 * 5s = 5s
interval:
- interval: 5s
then:
- lambda: |-
id(timer) += 1;
if (id(mode) == 1 && id(timer) >= id(time_duration)) {
// après X intervalles d'heure → passe à température
id(mode) = 2;
id(timer) = 0;
} else if (id(mode) == 2 && id(timer) >= id(temp_duration)) {
// après Y intervalles de température → passe à heure
id(mode) = 1;
id(timer) = 0;
}
En espérant que ce projet vous plaira et vous occupera pour vos journées d’automne ou d’hiver à venir ![]()


