Dans ce tutoriel, je vais vous montrer comment afficher les données de l’intégration Météo‑France de Home Assistant sur un reTerminal E1001 à l’aide du framework ESPHome. Vous apprendrez à récupérer les informations météorologiques (température, conditions, prévisions) depuis Home Assistant et à les afficher sur l’écran e‑paper du reTerminal.

Pour mieux comprendre la configuration du reTerminal et l’affichage d’informations issues de Home Assistant, je vous recommande la lecture de mon précédent tutoriel Intégrer un reTerminal E1002 dans Home Assistant avec ESPHome.
Intégration Météo-France de Home Assistant
Commencez par ajouter l’intégration Météo-France dans Home Assistant, puis sélectionnez la ville correspondant à votre lieu de résidence ou celle pour laquelle vous souhaitez obtenir les prévisions météorologiques (Nantes par exemple).

L’intégration Météo‑France prend en charge les deux plateformes suivantes dans Home Assistant : Weather et Sensor, qui permettent d’accéder aux conditions et prévisions météorologiques :
- Weather : fournit des données météorologiques complètes, incluant la météo actuelle, les prévisions horaires détaillées ainsi que les prévisions journalières sur 2 semaines.
- Sensor : expose une série de capteurs spécifiques qui délivrent des mesures précises sur les conditions locales. Parmi ces capteurs, on retrouve la température, la pression atmosphérique, la vitesse et la direction du vent, le taux d’humidité, la probabilité de neige, ainsi que les alertes météorologiques officielles.
Nous allons d’abord vérifier les informations fournies par cette intégration, en utilisant l’onglet « États » des Outils de développement. En saisissant « weather.nantes » comme filtre, vous pouvez constater que cette entité possède la condition météorologique (rainy) comme état et plusieurs attributs (temperature, humidity, etc.). Il s’agit ici des informations exposée par la plateforme Sensor de l’intégration Météo-France.

Pour accéder aux prévisions météo il faut récupérer les données de la plateforme Weather de l’intégration Météo-France. Pour cela il faut aller dans l’onglet Actions et exécuter l’action weather.get_forecasts sur l’entité weather.nantes et en indiquant le type daily (pour les prévisions journalières) ou hourly (pour les prévisions horaires).
Voici la configuration YAML de cette action pour récupérer les prévisions journalières :
action: weather.get_forecasts
entity_id: weather.nantes
data:
type: daily
target:
entity_id: weather.nantesLes données de la plateforme Weather de l’intégration Météo-France s’afficheront, incluant les prévisions météorologiques de prochains jours : condition, temperature (max), templow (min), precipitation, humidity.

Récupération de la température extérieure
Pour afficher la température extérieure, j’utilise la température actuelle fournie par la plateforme Sensor de l’intégration Météo-France.

L’entité temperature de l’intégration Météo-France n’est pas activée par défaut. Il faut donc l’activer dans la configuration de l’intégration. Notez l’identifiant de cette entité, qui dans cet exemple est : sensor.nantes_temperature.


Il faut déclarer cette entité en tant que capteur (sensor) dans la configuration YAML de ESPHome :
# Declaration du capteur home assistant sensor.nantes_temperature
sensor:
- platform: homeassistant
id: temperature_nantes
entity_id: sensor.nantes_temperatureVous pouvez afficher la valeur de ce capteur sur l’écran du reTerminal E1001 via la configuration ESPHome suivante :
it.printf(20, 50, id(myFont), "Temperature: %.1f °C", id(temperature_nantes).state);Récupération de la température et humidité intérieure
Pour afficher la température et l’humidité intérieure, j’utilise le capteur interne STH40 du reTerminal.

Le microcontrôleur ESP32-S3 du reTerminal E1001 communique avec le capteur STH40 au travers d’un bus I2C. Son adresse I2C est 0x44, et le bus I2C utilise les broches suivantes :
- Serial Data (SDA) : GPIO19
- Serial Clock (SCL) : GPIO20
Voici la configuration YAML qui permet de récupérer la température et l’humidité depuis ce capteur, à copier juste après la ligne captive_portal: du fichier de configuration ESPHome :
# define I2C interface
i2c:
sda: GPIO19
scl: GPIO20
scan: false
# temperature and humidity sensor
sensor:
- platform: sht4x
temperature:
name: "Temperature"
id: sht4x_temperature
humidity:
name: "Humidity"
id: sht4x_humidity
address: 0x44
update_interval: 60sVous pouvez afficher la valeur de ce capteur sur l’écran du reTerminal E1001 via la configuration ESPHome suivante :
it.printf(10, 10, id(myFont), BLUE, "Temperature: %.1f°C", id(sht4x_temperature).state);
it.printf(10, 40, id(myFont), BLUE, "Humidity: %.1f%%", id(sht4x_humidity).state); Notez que le formatage %.1f indique qu’il faut afficher la température en nombre flottant avec 1 chiffre derrière la virgule (ex: 18.1).
Récupération des prévisions journalières
Je souhaite afficher les prévisions météorologiques journalières, incluant le jour, la condition, la température minimale et la température maximale pour aujourd’hui et les 4 prochains jours. Pour cela j’utilise la plateforme Weather de l’intégration Météo-France.

L’utilisation de la plateforme Weather est un peu plus complexe que celle du capteur Sensor présentée au paragraphe précédent. Elle nécessite de modifier le fichier de configuration de Home Assistant (configuration.yaml) afin d’y créer une automatisation qui exécute l’action weather.get_forecasts ainsi qu’un capteur personnalisé (template sensor) pour récupérer les prévisions météo.
Voici un exemple de configuration d’un capteur personnalisé et de son automatisation, qui récupère les prévision pour le jour J et J+1.
template:
- trigger:
- platform: time_pattern
hours: /1
- platform: homeassistant
event: start
action:
- service: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.nantes
response_variable: hourly
sensor:
- name: "Prévisions Météo"
unique_id: previsions_meteo_nantes
state: "{{ hourly['weather.nantes'].forecast[0] }}"
attributes:
forecast: "{{ hourly['weather.nantes'].forecast }}"
availability: "{{ states('weather.nantes') not in ['unknown', 'unavailable', 'none'] }}"
- sensor:
- name: "Météo Jour Nantes"
unique_id: meteo_jour_nantes
state: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[0] }}"
attributes:
# Jour_0
condition0: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[0].condition | default(0) }}"
jour0: >
{{ ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'][as_timestamp(state_attr('sensor.previsions_meteo_nantes','daily_forecast')[0].datetime) | timestamp_custom('%w', true) | int] }}
temperature0: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[0].temperature | float(0) }}"
templow0: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[0].templow | float(0) }}"
# Jour_1
condition1: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[1].condition | default(0) }}"
jour1: >
{{ ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'][as_timestamp(state_attr('sensor.previsions_meteo_nantes','daily_forecast')[1].datetime) | timestamp_custom('%w', true) | int] }}
temperature1: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[1].temperature | float(0) }}"
templow1: "{{ state_attr('sensor.previsions_meteo_nantes','daily_forecast')[1].templow | float(0) }}"Deux déclencheurs sont définis :
- Un déclencheur basé sur time_pattern toutes les heures (hours: /1)
- Un déclencheur sur l’événement homeassistant start, pour exécuter l’action au redémarrage de Home Assistant.
L’action fait appel au service weather.get_forecasts pour demander les prévisions horaires pour l’entité météo weather.nantes. Les résultats sont stockés dans la variable hourly pour être utilisés par la suite dans les capteurs.
Le premier capteur template “Prévisions Météo” (sensor.previsions_meteo_nantes) possède l’attribut forecast qui expose toute la liste des prévisions quotidiennes du service météo.
Le deuxième capteur template, “Météo Jour Nantes” (sensor.meteo_jour_nantes), exploite les attributs de sensor.previsions_meteo_nantes et sa clé “daily_forecast“. Les attributs suivants sont créés pour ce second capteur, pour chaque jour (ici les deux premiers jours) :
- jour0 (et jour1) : calcule le nom du jour en français en s’appuyant sur la date et la fonction timestamp_custom().
- condition0, temperature0, templow0 : contiennent la condition météo, températures max/min attendues pour le jour J (idem pour J+1).
Pour vérifier la bonne configuration de ces capteurs, redémarrer Home Assistant et vérifier leur état en utilisant l’outil de développement.

Une fois que les capteurs sont configurés dan Home Assistant, il faut les déclarer dans la configuration ESPHome.
Comme le jour et les conditions météorologiques sont fournies sous forme de texte (par exemple, « Lundi », « ensoleillé »), elles doivent être définies comme text_sensor.
text_sensor:
- platform: homeassistant
name: "Jour0"
entity_id: sensor.meteo_jour_nantes
attribute: jour0
id: jour0
- platform: homeassistant
name: "Jour1"
entity_id: sensor.meteo_jour_nantes
attribute: jour1
id: jour1
name: "ConditionJ0"
entity_id: sensor.meteo_jour_nantes
attribute: condition0
id: conditionJ0
- platform: homeassistant
name: "ConditionJ1"
entity_id: sensor.meteo_jour_nantes
attribute: condition1
id: conditionJ1
- platform: homeassistant Les températures minimales et maximales étant des valeurs à virgule flottante, elle doivent être définies comme sensor.
sensor:
- platform: homeassistant
name: "TemperatureJ0"
entity_id: sensor.meteo_jour_nantes
attribute: temperature0
id: temperatureJ0
accuracy_decimals: 1
- platform: homeassistant
name: "TemperatureJ1"
entity_id: sensor.meteo_jour_nantes
attribute: temperature1
id: temperatureJ1
accuracy_decimals: 1
- platform: homeassistant
name: "TemplowJ0"
entity_id: sensor.meteo_jour_nantes
attribute: templow0
id: templowJ0
accuracy_decimals: 1
- platform: homeassistant
name: "TemplowJ1"
entity_id: sensor.meteo_jour_nantes
attribute: templow1
id: templowJ1
accuracy_decimals: 1
Récupération des prévisions horaires
Les prévisions météorologiques horaires (heure, condition, température, précipitation) sont également fournies par la plateforme Weather de l’intégration Météo-France.

Voici un exemple de configuration d’un capteur personnalisé et de son automatisation, qui récupère les prévision pour les heures H et H+1.
template:
- trigger:
- platform: time_pattern
hours: /1
- platform: homeassistant
event: start
action:
- service: weather.get_forecasts
data:
type: hourly
target:
entity_id: weather.nantes
response_variable: hourly
sensor:
- name: "Prévisions Météo"
unique_id: previsions_meteo_nantes
state: "{{ hourly['weather.nantes'].forecast[0] }}"
attributes:
forecast: "{{ hourly['weather.nantes'].forecast }}"
availability: "{{ states('weather.nantes') not in ['unknown', 'unavailable', 'none'] }}"
- sensor:
- name: "Météo Heure Nantes"
unique_id: meteo_heure_nantes
state: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[0] }}"
attributes:
# Heure_0
condition0: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[0].condition | default(0) }}"
heure0: "{{ as_timestamp(state_attr('sensor.previsions_meteo_nantes','forecast')[0].datetime) | int(0) | timestamp_custom('%H:%M', true) }}"
temperature0: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[0].temperature | float(0) }}"
precipitation0: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[0].precipitation | float(0) }}"
# Heure_1
condition1: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[1].condition | default(0) }}"
heure1: "{{ as_timestamp(state_attr('sensor.previsions_meteo_nantes','forecast')[1].datetime) | int(0) | timestamp_custom('%H:%M', true) }}"
temperature1: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[1].temperature | float(0) }}"
precipitation1: "{{ state_attr('sensor.previsions_meteo_nantes','forecast')[1].precipitation | float(0) }}"L’automatisation est similaire que pour la récupération des prévisions quotidiennes. L’automatisation et le premier capteur template sont identiques. Seul le deuxième capteur template est différent. Le capteur tempate “Météo Heure Nantes” (sensor.meteo_heure_nantes) exploite les attributs de sensor.previsions_meteo_nantes mais avec la clé “hourly_forecast” et non plus “daily_forecast“.
Plusieurs attributs personnalisés sont créés, pour chaque heure (ici les deux premières heures): condition0, temperature0, precipitation0 : contiennent la condition météo, la température et la précipitation attendues pour l’heure H (idem pour H+1). Notez que l’heure est au format heure locale grâce au second argument de timestamp_custom positionné à true.
Pour vérifier la bonne configuration de ces capteurs, redémarrer Home Assistant et vérifier leur état en utilisant l’outil de développement.

Une fois que les capteurs sont configurés dans Home Assistant, il faut les déclarer dans la configuration ESPHome.
Comme l’heure et les conditions météorologiques sont fournies sous forme de texte (par exemple, « 11:00 », « ensoleillé »), elles doivent être définies comme text_sensor.
text_sensor:
- platform: homeassistant
name: "Condition0"
entity_id: sensor.meteo_heure_nantes
attribute: condition0
id: condition0
- platform: homeassistant
name: "Condition1"
entity_id: sensor.meteo_heure_nantes
attribute: condition1
id: condition1
- platform: homeassistant
name: "Heure0"
entity_id: sensor.meteo_heure_nantes
attribute: heure0
id: heure0
- platform: homeassistant
name: "Heure1"
entity_id: sensor.meteo_heure_nantes
attribute: heure1
id: heure1 Les précipitations et la température, étant des valeurs à virgule flottante, doivent être définies comme sensor. Cet exemple illustre une configuration ESPHome pour des capteurs affichant la température et les précipitations pour les deux prochaines heures.
sensor:
- platform: homeassistant
name: "Temperature0"
entity_id: sensor.meteo_heure_nantes
attribute: temperature0
id: temperature0
accuracy_decimals: 1
- platform: homeassistant
name: "Temperature1"
entity_id: sensor.meteo_heure_nantes
attribute: temperature1
id: temperature1
accuracy_decimals: 1
- platform: homeassistant
name: "Precipitation0"
entity_id: sensor.meteo_heure_nantes
attribute: precipitation0
id: precipitation0
accuracy_decimals: 1
- platform: homeassistant
name: "Precipitation1"
entity_id: sensor.meteo_heure_nantes
attribute: precipitation1
id: precipitation1
accuracy_decimals: 1
Vous pouvez ensuite afficher les valeurs de ces capteurs sur l’écran du reTerminal E1001 via la configuration ESPHome suivant :
// Condition meteo H0 (texte)
it.printf(100, 50, id(myFont), "%s", id(condition0).state.c_str());
// Precipitations H0 (float, avec une décimale)
it.printf(100, 100, id(myFont), "%.1f", id(precipitation0).state);
// Temperature H0 (float, pas de décimale)
it.printf(100, 150, id(myFont), "%.0f", id(temperature0).state);Récupération de la charge de la batterie
Pour récupérer le niveau de batterie du reTerminal, il faut activer la mesure de la tension de la batterie en configurant le GPIO21 (VBAT ENABLE) lors du boot du reTerminal.
La lecture s’effectue ensuite sur le GPIO1 (VBAT ADC), qui est relié en interne à la batterie via un circuit de mesure.
esphome:
name: reterminal
friendly_name: reTerminal
on_boot:
priority: 600
then:
- output.turn_on: bsp_battery_enable
- delay: 500ms
captive_portal:
output:
- platform: gpio
pin: GPIO21
id: bsp_battery_enable
sensor:
# ADC for battery voltage measurement
- platform: adc
pin: GPIO1
name: "Battery Voltage"
id: battery_voltage
update_interval: 600s
attenuation: 12db
filters:
- multiply: 2.0 # Voltage divider compensationEn lisant la valeur analogique sur ce GPIO1, nous récupérons la tension de la batterie interne. La documentation technique montre que la tension est mesurée à l’aide d’un pont diviseur de tension, il faut donc appliquer un filtre pour compenser la division de la tension par deux liée à ce pont diviseur constitué de 2 résistances de 10kΩ.


La tension aux bornes de la batterie interne permet d’en déduire son niveau de charge. La batterie lithium est considérée comme déchargée si sa tension est inférieure à 3.3 V.
Conclusion
Grâce au reTerminal E1001 et à son intégration dans Home Assistant, j’ai enfin la station météo parfaitement adaptée à mes attentes. Le framework ESPHome demande une courte phase d’apprentissage pour en maîtriser les principes, mais une fois ces notions acquises, il se révèle remarquablement puissant et flexible.
L’ensemble de la configuration Home Assistant et ESPHome utilisée dans ce tutoriel est disponible sur mon GitHub.
Je vous recommande la lecture du test des reTerminal E1001 et E1002 et je remercie son auteur WarC0zes pour son aide sur le forum HACF.
J’espère que ce tutoriel vous aura intéressé. N’hésitez pas à donner votre avis en cliquant sur les étoiles ci-dessous ou en laissant un commentaire.
