Dans cet article, je raconte comment se fabriquer une station météo autour d’un Raspberry pi équipé du logiciel Home Assistant et de capteurs communicants grâce au protocole ZigBee.
Motivation initiale
En cet été 2026, alors que nous enchaînions une série de canicules pas à piquer des hannetons, j’ai profité de mon expertise croissante en thermique du bâtiment pour gérer au mieux la température dans mon logement :
- pas de soleil qui rentre directement, on ferme les volets quand c’est nécessaire
- on n’ouvre jamais les fenêtres s’il fait plus chaude dehors que dedans
- on aère quand la température le permet, en utilisant un ventilateur si nécessaire
- on n’utilise pas d’appareils qui produisent de la chaleur sauf si c’est nécessaire
Avec les incendies est arrivée une nouvelle contrainte : considérer la qualité de l’air pour éviter de faire rentrer de l’air pollué aux micro-particules.
En plus des thermomètres installés à l’intérieur et à l’extérieur, j’avais donc rassemblé un certain nombre de ressources :
- la carte weathermap des capteurs de température (il y en a forcément près de chez vous), qui en ville permet d’avoir la vraie température la nuit, car les mesures fournies par Météo France et les sites officiels sont issues de capteurs placés à l’extérieur des villes, et l’inertie thermique urbaine n’est donc pas prise en compte,
- les prévisions météo des heures à venir sur Meteociel
- les relevés horaires d’un capteur de qualité de l’air de proximité, avec les données des particules PM2.5 et PM10,
- le site feuxgironde pour avoir une idée de l’intensité des incendie en Gironde, et du panache de fumée qui traversait la France, secondé par flamap,
- une imagerie radar des nuages, pour suivre précisément le panache de fumées


Quand la chaleur était importante, et qu’il ne restait que très peu d’heures dans la nuit où on pouvait ouvrir les fenêtres, je croisais toutes ces infos, et je mettais un réveil pour ouvrir les fenêtres, en estimant l’heure où les températures intérieures et extérieures allaient s’inverser chez moi.
Mais je me suis très vite dit qu’avec une centrale météo, on aurait pu piloter tout ça pour avoir un réveil automatisé.
Installation matérielle
On peut acheter des centrales météo existantes, mais elles sont peu configurables, et souvent le logiciel propriétaire est assez verrouillé. On peut aussi fabriquer une solution maison, soit à partir d’un Arduino et de quelques capteurs, soit à base d’un Raspberry Pi.
Pour aller vers une solution plutôt extensible, j’ai donc choisi une solution basée sur un Raspberry Pi, couplé à quelques capteurs de température connectés.
Les capteurs connectés s’appuient en général sur un protocole ouvert de communication : rarement le Bluetooth, souvent le WiFi, parfois le ZigBee. L’intérêt de ce dernier protocole est qu’il consomme très peu d’énergie, ce qui est parfait pour une installation durable, sans avoir besoin d’amener le 220V aux capteurs. Cependant, comme le ZigBee n’est pas un protocole utilisé sur les ordinateurs en général, il faut ajouter à la configuration une antenne ZigBee pour le Raspberry Pi, connectée sur port USB.
Je me suis donc équipé d’un Raspberry Pi 8 de seconde main (environ 100 euros pour 8Go de RAM, mais on aurait pu choisir moins, voir plus bas), d’une antenne ZigBee (16 euros), d’un thermomètre/hygromètre d’intérieur avec écran (16 euros), et d’un thermomètre/hygromètre d’extérieur sans écran et qui supporte la pluie (23 euros) :



Configuration logicielle
J’ai installé sur la carte mémoire du Raspberry Pi un Linux dédié en utilisant Raspberry Pi Imager, puis j’ai suivi ce tutoriel pour installer plusieurs logiciels dans des docker : Zigbee2MQTT et Home Assistant, ainsi que Mosquitto pour la communication. C’est peut-être la partie la plus technique de l’installation, mais tout me semble bien documenté, excepté qu’il manque une ligne restart: always pour mosquitto (sinon ce dernier ne redémarre pas quand le Raspberry Pi redémarre).
En résumé, chaque logiciel joue son rôle : Zigbee2MQTT s’occupe de collecter à intervalle régulier les informations des capteurs, qu’il transforme en flux MQTT exploitable par Home Assistant, le logiciel libre phare de la domotique. Grâce à ça, et comme on le verra plus bas, on peut configurer simplement des tableaux de bord, notification ou alarmes à partir des informations collectées.
Une fois tout installé, l’interface web de Zigbee2MQTT permet d’associer les capteurs très facilement, ils sont d’ailleurs directement reconnus grâce à une base de données très complète (et au fait que j’ai choisi des capteurs de marques très répandues) :

Une fois réalisé ces associations, on n’aura plus besoin de revenir à cette interface. Je n’ai donc rien fait pour la rendre accessible depuis l’extérieur.
L’intérêt d’avoir suivi le tutoriel, c’est que ces deux capteurs seront directement disponibles dans l’interface web de Home Assistant, au moment d’ajouter de nouvelles sources :

Chaque capteur physique fourni grâce au MQTT un flux de données contenant différentes valeurs nommées et augmentées de méta-données, comme l’unité par exemple. Le capteur extérieur fourni ainsi la température, l’humidité, et l’état de sa batterie, et c’est Home Assistant qui s’occupe d’en garder un historique, pour pouvoir notamment tracer des courbes de suivi.


J’ai également pris soin de configurer ma box fibre pour que les connexions depuis l’extérieur soient redirigées vers l’interface de Home Assistant, ce qui me permet d’y accéder depuis n’importe où, soit par l’interface web, soit par l’application smartphone. Bien sûr, ça n’est pas du tout obligatoire.
Home Assistant a été conçu dans l’idée de la maison connectée. On peut faire plein de choses avec ça, comme piloter son chauffage ou son éclairage automatiquement, il est donc pourvu d’un grand nombre de facilités d’automatisation, comme nous le verrons plus bas. Il est par exemple possible de suivre son smartphone pour identifier si on est à la maison ou pas1, et ainsi changer le comportement du dispositif suivant la situation.
Au final, l’installation consomme moins de 1Go sur le Raspberry Pi car j’ai assez peu de sources intégrées et le CPU est très peu sollicité. La machine est un peu sur-dimensionnée, mais ça me permet de voir venir et de faire évoluer l’installation suivant les besoins.
Intégrer d’autres sources
Afin de compléter mon dispositif, et dans l’idée d’avoir une information aussi complète que ce que je faisais à la main, j’ai donc regardé comment intégrer d’autres informations. Il existe un nombre très impressionnant de sources possibles d’intégrations déjà mises en place par la communauté, pour en quelques clics ajouter des ressources très diverses à Home Assistant.

Voici ci-dessous deux exemples de mise en pratique.
Agréger une information externe

Je n’ai pas de capteur PM2.5 ou PM10 à domicile, mais la donnée que produit Atmo AuRA est mise à jour une fois par heure, et pas très loin de chez moi. Ça suffit donc amplement. Il n’y a pas à proprement parlé de flux en OpenData, juste une interface de visualisation proposées aux internautes.
En regardant les connexions que fait le site, j’ai remarqué que des fichiers au format json étaient récupérés, qui correspondaient exactement aux données présentées dans le graphe. Or, il existe dans Home Assistant un outil d’intégration dédié au traitement de ce type de sources : RESTful.
Malheureusement, sur le site d’Atmo, l’adresse à consulter change chaque jour (il faut mettre la date du jour dans l’url), et le fichier contient toutes les informations de la journée.
J’ai donc implémenté un petit service léger en python, qui tourne dans une image docker, et qui lorsque RESTful l’interroge récupère les données depuis le site d’Atmo, la reformate, et la renvoie pour intégration. Je peux fournir sur demande ce code source, mais il n’y a rien de révolutionnaire dedans.
On a donc maintenant en temps réel et mis à jour une fois par heure (comme sur le site d’Atmo) le taux de particules PM2.5 et PM10 disponible dans Home Assistant.
Monitorer la santé de l’infrastructure
J’héberge chez moi plusieurs services informatiques, dont l’agenda culturel participatif pommesdelune.fr. J’aime bien suivre l’état de santé du serveur et du routeur. J’ai donc trouvé une solution très légère : installer glances sur ces machines, puis utiliser le support de Glances dans Home Assistant pour ajouter autant de services que de machines :

Les informations ainsi collectées contiennent le taux d’usage de la RAM, du CPU, du disque, ou encore la température des capteurs.
Tableau de bord
Le tableau de bord de Home Assistant est complètement configurable, et on peut ajouter de nombreuses vues complémentaires de manière très modulable, à la fois sur le filtrage des données et sur le type de représentation choisie. Il existe même un store de la communauté, que l’on peut installer à ses risques et périls, pour augmenter les possibilités de l’outil.
Voici donc quelques vues que j’ai configurées, ici consultées depuis l’application Android, mais dont la mise en page s’adapte très bien sur l’écran d’un ordinateur.



Il existe même sur Android des widgets qui permettent d’afficher la valeur d’un capteur sans avoir à ouvrir l’application.
Notification et alarmes
Création d’une notification
Les notifications sont complètement automatisables depuis l’interface de Home Assistant, en créant des règles par une série de choix, avec trois grandes étapes : l’élément déclencheur (quand), les conditions supplémentaires (et si), puis la ou les actions (faire). On peut aussi écrire tout ou partie dans un langage décrit en yaml, et un LLM type Chat GPT saura très bien vous épauler au besoin.
Ci-dessous, on envoie une alerte sur le smartphone si le taux de PM2.5 est plus élevé qu’un seuil choisi, et le yaml correspondant :

alias: Seuil pollution PM2.5 (25)
description: ""
triggers:
- trigger: air_quality.pm25_crossed_threshold
target:
entity_id: sensor.atmo_pm2_5
options:
behavior: each
for:
hours: 0
minutes: 0
seconds: 0
threshold:
type: above
value:
active_choice: number
number: 25
conditions: []
actions:
- action: notify.mobile_app_galaxy_s23
metadata: {}
data:
title: ℹ️ Alerte Pollution
message: "Alerte pollution : les particules PM2.5 ont dépassé 25µg/m3"
data:
importance: low
channel: silent_channel
mode: single
Configuration des notifications

Ce qui est intéressant, c’est qu’on peut définir autant de canaux de communication que l’on veut. Côté smartphone, on peut alors ajuster le type d’alerte pour chaque canal : type de sonnerie, notification simple ou alarme, etc.
Illustration
J’ai ainsi pu écrire des règles plus élaborées, du type : si la température extérieure dépasse la température intérieure, qu’il fait plus de 23 degrés à l’intérieur, que je suis à la maison, et que l’air n’est pas trop pollué, alors envoyer une alerte pour suggérer de fermer les fenêtres. On reçoit donc une notification sur le smartphone, que j’ai réglée pour faire vibrer le smartphone, lancer une petite sonnerie, et afficher une notification :

Et après ?
L’intérêt du système, c’est qu’il est très facilement extensible : on peut ajouter de nouveaux capteurs s’ils supportent le protocole ZigBee, mais aussi intégrer d’autres sources extérieures pour compléter et augmenter les informations collectées et traitées.

Par exemple, je m’étais équipé il y a quelques temps d’un capteur de C02 qui utilise un protocole propriétaire pour communiquer avec une application spécifique. Et bien un travail d’ingénierie inverse a été réalisée par une personne de la communauté Home Assistant sur un appareil de la même marque, qui me permettra peut-être d’intégrer les mesures de ce capteur à mon interface.
- à noter que cette fonctionnalité de géolocalisation n’existe pas dans la version minimale de l’application disponible sur F‑Droid, il faudra alors privilégier la version disponible sur le Store de Google. ↩︎