En résumé : Créer sa propre station météo domotique consiste à séparer l'acquisition physique de l'affichage. En plaçant un pluviomètre à augets sur votre toit relié à un ESP32 dans votre garage, et en y ajoutant des thermomètres Zigbee extérieurs, vous pouvez centraliser toutes vos données météo sur un magnifique tableau de bord Home Assistant 100 % local. Fini les piles qui lâchent en plein hiver et les données perdues dans le cloud.
Pourquoi créer sa propre station météo avec Home Assistant ?
Les stations météo grand public du commerce souffrent de trois limites majeures qui agacent les passionnés de domotique :
- La dépendance au Cloud : Vos données font trois fois le tour de la terre avant de s'afficher sur votre smartphone, avec des pannes régulières de serveurs.
- Le coût des consoles de salon : Les consoles de salon en plastique vieillissent mal et consomment de l'énergie inutilement.
- L'obsolescence des piles en extérieur : Les capteurs extérieurs soumis au gel vident leurs petites piles en quelques mois, faussant les données au moment où vous en avez le plus besoin.
En créant votre propre système hybride (filaire pour l'alimentation sur secteur + protocoles radio locaux), vous reprenez le contrôle total de vos données. L'intégration dans vos automatisations de chauffage, de store banne ou d'arrosage de jardin devient instantanée.
La Liste du Matériel Indispensable (Le Choix de la Fiabilité)
Pour fabriquer ce système de mesure de niveau professionnel, nous recommandons une architecture hybride éprouvée :
1. La partie Pluviométrie mécanique
Nous utilisons un pluviomètre à augets basculants standard vendu comme pièce détachée. Ce mécanisme purement physique n'embarque aucune électronique fragile (découvrez son fonctionnement détaillé dans notre guide explicatif sur le pluviomètre à augets), ce qui lui assure une durée de vie exceptionnelle sur votre toiture.
- Le Pluviomètre : Nous recommandons le Pluviomètre de remplacement à augets basculants.
2. Le Cerveau : L'ESP32 alimenté sur secteur
Le hack classique qui consiste à souder un capteur d'ouverture Zigbee à pile (type Aqara ou Sonoff) directement sur le pluviomètre présente un inconvénient majeur : la pile CR2032 ne résiste pas aux hivers rigoureux et les réveils fréquents liés aux basculements vident la batterie en quelques mois.
- La solution de rupture : Placer un microcontrôleur ESP32 à l'abri dans votre garage, relié par un câble blindé au pluviomètre situé sur le toit. L'ESP32 est alimenté en continu via USB/secteur.
3. La partie Thermométrie
Pour la température et la mesure d'humidité de l'air (consultez notre définition de l'hygrométrie dans le glossaire), un capteur sans fil Zigbee 3.0 placé sous abri ventilé fait des merveilles de réactivité et de portée.
- Le Thermomètre : Nous recommandons un Thermomètre/Hygromètre LCD Zigbee 3.0 connecté à votre coordinateur.
- La Clé Zigbee : L'incontournable SONOFF ZigBee 3.0 USB Dongle Plus avec l'intégration native ZHA (ou Zigbee2MQTT).
Étape 1 : Le Câblage et le Hack Physique
Le principe de fonctionnement d'un pluviomètre à augets est très simple : chaque fois que l'auget se remplit d'une certaine quantité d'eau (environ 0,28 mm), il bascule sous le poids (un phénomène physique et mécanique détaillé dans notre article comment fonctionne un pluviomètre). Ce basculement fait passer un aimant devant un petit interrupteur magnétique (interrupteur Reed ou Reed Switch), fermant brièvement le circuit électrique.
Le processus est mécanique, cyclique et extrêmement fiable :
- 🌧️ Accumulation : La pluie tombe et remplit l'un des deux augets du pluviomètre.
- ⚖️ Bascule : Une fois le poids limite atteint, l'auget bascule sous l'effet de la gravité et commence à vider son eau, tandis que le second auget commence à se remplir.
- 🧲 Contact magnétique : Lors du basculement, un petit aimant fixé sur l'axe des augets passe devant un interrupteur magnétique (appelé Reed Switch).
- ⚡ Impulsion : L'interrupteur se ferme brièvement sous l'effet magnétique et envoie une impulsion électrique de type "circuit fermé" vers l'ESP32.
Le montage dans le garage
- Tirez un câble bifilaire (un câble réseau Ethernet blindé ou un câble téléphonique fait parfaitement l'affaire) depuis le pluviomètre sur le toit jusqu'à l'ESP32 dans votre garage.
- Connectez l'un des fils sur le pin GND de votre ESP32.
- Connectez l'autre fil sur un pin de lecture (le pin GPIO16 configuré sur notre ESPRain) configuré en résistance de tirage vers le haut (
INPUT_PULLUP).
⚠️ L'astuce du Maker : Le condensateur anti-parasites
!IMPORTANT Un interrupteur magnétique mécanique crée des micro-étincelles et des rebonds (bouncing) lors de la bascule. De plus, la longueur du câble agissant comme une antenne peut capter des parasites électriques (parasites de secteur, foudre lointaine). Sans filtrage, Home Assistant comptera des dizaines de fausses impulsions.
La solution : Soudez un petit condensateur de 100 nF (nanofarads) en parallèle entre le pin GPIO et le GND, au plus proche de votre ESP32. Ce condensateur va absorber les variations rapides et lisser le signal, réduisant fortement les fausses mesures.
Étape 2 : Configuration sous ESPHome
Pour intégrer l'ESP32 dans Home Assistant, nous utilisons ESPHome. C'est de loin la méthode la plus rapide et la plus stable.
Dans votre fichier de configuration ESPHome (par exemple esphome-web-f64264.yaml), nous déclarons le pluviomètre comme un simple capteur binaire (binary_sensor) avec un filtre logiciel anti-rebond pour doubler la sécurité du condensateur physique :
binary_sensor:
- platform: gpio
pin:
number: GPIO16 # Le pin physique connecté à votre câble de pluviomètre
mode: INPUT_PULLUP # Utilise la résistance de pull-up interne de l'ESP32 pour stabiliser le signal
name: "Rain Sensor"
device_class: door
filters:
- delayed_on: 10ms # Filtre anti-rebond logiciel de 10 millisecondes
- delayed_off: 10ms
Une fois cette configuration flashée, votre ESPHome remontera automatiquement une entité binary_sensor.esphome_web_f64264_rain_sensor (ou un nom similaire basé sur votre identifiant d'appareil) dans votre intégration Home Assistant.
💡 Fichier de configuration complet (ESPRain)
Voici le code YAML complet, propre et ordonné pour notre module ESPRain, débarrassé de toute fonction annexe pour se concentrer uniquement sur la télémétrie réseau, le système et votre pluviomètre à augets basculants :
substitutions:
name: esphome-web-f64264
friendly_name: ESPRain
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: "1.1"
esp32:
board: esp32dev
framework:
type: arduino
# Activer les logs de débogage
logger:
# Activer l'API pour l'intégration automatique dans Home Assistant
api:
# Autoriser les mises à jour sans fil (Over-The-Air)
ota:
- platform: esphome
# Permettre la configuration Wi-Fi initiale via liaison série
improv_serial:
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
fast_connect: true
ap: {}
# Portail captif de secours (si perte Wi-Fi)
captive_portal:
dashboard_import:
package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
import_full_config: true
# Improv BLE pour la configuration Wi-Fi initiale sans fil
esp32_improv:
authorizer: none
# Serveur Web local pour interface et diagnostic direct
web_server:
port: 80
auth:
username: !secret web_username
password: !secret web_password
# Diagnostics réseau et Wi-Fi de l'ESP32
text_sensor:
- platform: wifi_info
ip_address:
name: "${friendly_name} IP Address"
ssid:
name: "${friendly_name} WiFi SSID"
- platform: template
name: "${friendly_name} WiFi Channel"
lambda: |-
return to_string(WiFi.channel());
update_interval: 86400s
sensor:
- platform: uptime
name: "${friendly_name} Uptime"
- platform: wifi_signal
name: "WiFi Signal Strength"
update_interval: 600s
# Capteur Pluviomètre physique à impulsions
binary_sensor:
- platform: gpio
pin:
number: GPIO16
mode: INPUT_PULLUP # Résistance de pull-up interne pour stabiliser le signal électrique
name: "Rain Sensor"
device_class: door # Défini comme un capteur de contact sec
filters:
- delayed_on: 10ms # Filtre anti-parasite et anti-rebonds logiciels de 10ms
- delayed_off: 10ms
!NOTE Le bloc
web_serverutilise!secret web_usernameet!secret web_password. Ces deux valeurs doivent être définies dans votre fichiersecrets.yamlESPHome (situé dans le répertoire/config/esphome/secrets.yamlde Home Assistant), comme ceci :web_username: mon_identifiant web_password: mon_mot_de_passe_fortSi vous ne souhaitez pas protéger le serveur web, supprimez simplement le bloc
auth:— le serveur restera accessible mais sans authentification.
Étape 3 : Conversion des Impulsions en Millimètres
Sur le modèle de pluviomètre recommandé, chaque basculement d'auget équivaut à précisément 0,2794 mm de pluie.
Pour transformer nos impulsions binaires en volume d'eau dans Home Assistant, nous allons passer par un compteur virtuel et un capteur de modèle (template sensor).
1. Créer le compteur d'impulsions (Counter Helper)
Dans Home Assistant, allez dans Paramètres -> Appareils & Services -> Entrées -> Créer une entrée -> Compteur.
- Nommez-le
rainsensor_flips. Cela va générer l'entitécounter.rainsensor_flips.
2. Créer l'automatisation d'incrémentation
Chaque fois que le capteur passe à on (l'auget a basculé), nous incrémentons notre compteur :
alias: "Pluie - Incrémentation Compteur Pluviomètre"
description: "Incrémente le compteur d'augets à chaque impulsion du capteur ESP32"
trigger:
- platform: state
entity_id: binary_sensor.esphome_web_f64264_rain_sensor
to: "on"
condition: []
action:
- action: counter.increment
target:
entity_id: counter.rainsensor_flips
mode: single
3. Créer le Template Sensor de conversion en mm
Dans votre fichier configuration.yaml de Home Assistant, ajoutez le code suivant pour effectuer la multiplication mathématique en temps réel et exposer la pluie totale accumulée :
template:
- sensor:
- name: "Pluie Cumulée Brute"
unique_id: "pluie_cumulee_brute"
unit_of_measurement: "mm"
device_class: precipitation
state_class: total_increasing
state: "{{ states('counter.rainsensor_flips') | float * 0.2794 }}"
Étape 4 : Les Compteurs Temporels (Utility Meter)
Maintenant que vous disposez d'un capteur global cumulé (sensor.pluie_cumulee_brute), nous devons configurer des compteurs glissants pour obtenir la pluie du jour, du mois, et de l'année.
La méthode moderne et sans code consiste à utiliser les Helpers (Entrées) graphiques de Home Assistant :
- Allez dans Paramètres -> Appareils et services -> Entrées -> Créer une entrée.
- Sélectionnez Compteur de services publics (Utility Meter).
- Remplissez les paramètres pour le Jour :
- Nom :
sensor.rainfall_today(ou Rainfall today) - Capteur d'entrée :
sensor.pluie_cumulee_brute - Cycle de remise à zéro :
Quotidien
- Nom :
- Recommencez la même opération pour créer le compteur du Mois (cycle
Mensuel) pour obtenirsensor.rain_month. - Recommencez une dernière fois pour le compteur de l'Année (cycle
Annuel) pour obtenirsensor.rain_year.
Home Assistant se charge d'archiver vos données et de réinitialiser automatiquement les compteurs à minuit, en fin de mois et en fin d'année !
Étape 5 : Le Dashboard Lovelace (Le rendu Visuel)
Voici le rendu visuel et concret de ce tableau de bord de suivi de la pluie obtenu directement dans Home Assistant :

Pour obtenir ce magnifique rendu avec les indicateurs instantanés et le graphique historique des 30 derniers jours, copiez-collez ce code YAML dans l'éditeur de votre carte de tableau de bord :
type: vertical-stack
cards:
- type: heading
heading: Pluie
- type: grid
columns: 3
square: false
cards:
- type: tile
entity: sensor.rainfall_today
name: Jour
- type: tile
entity: sensor.rain_month
name: Mois
- type: tile
entity: sensor.rain_year
name: Année
vertical: false
features_position: bottom
- type: custom:apexcharts-card
graph_span: 30d
header:
show: true
title: Historique 30 jours
series:
- entity: sensor.rainfall_today
type: column
color: "#00d2ff"
group_by:
func: max
duration: 1d
!TIP Ce code utilise la carte personnalisée
apexcharts-card(disponible gratuitement via HACS). Elle permet d'afficher des barres d'historique quotidiennes en récupérant la valeur maximale atteinte parsensor.rainfall_todaychaque jour juste avant sa réinitialisation de minuit. Une méthode ultra-légère pour votre base de données !
Conclusion et automatisations possibles
Votre station météo domotique locale est maintenant opérationnelle. Grâce à ces données fiables et à l'absence totale de piles dans votre pluviomètre, vous pouvez créer des automatisations intelligentes d'une grande valeur d'usage :
- Fermeture automatique des stores dès les premières gouttes détectées par l'ESP32.
- Désactivation de l'arrosage automatique si la pluie accumulée sur le jour glissant dépasse un certain seuil.
- Notification SMS/téléphone en cas de précipitations extrêmes pour protéger vos plantes ou vérifier les gouttières.
Pour aller plus loin dans la protection de vos capteurs de température Zigbee contre le rayonnement solaire direct, n'hésitez pas à consulter notre guide complet sur les abris météo et leur installation. Si vous préférez une solution domotique clé en main utilisant le protocole Matter sans passer par le DIY, découvrez également notre avis complet sur la SwitchBot Weather Station.



