DampAlert
Détection prédictive du risque de moisissure ; IoT LoRaWAN
L'humidité et les moisissures dégradent la santé des occupants et la valeur du bâti, et les mesures classiques alertent trop tard. Tech Fox a conçu et livré DampAlert, un dispositif IoT de maintenance prédictive qui ne se contente pas de mesurer l'humidité : il calcule en temps réel le point de rosée pour anticiper la condensation avant qu'elle n'apparaisse. Chaîne complète (nœud capteur STM32 + BME680, transmission LoRaWAN sur The Things Network, dashboard web souverain à alertes) prototypée et validée en conditions réelles.
Contexte & problème résolu

La qualité de l'air intérieur est un déterminant majeur de santé publique : l'exposition à l'humidité et aux moisissures est corrélée à une prévalence accrue d'asthme, d'infections respiratoires et de troubles associés, et pèse lourdement sur le bâti (dégradations, corrosion, litiges, rénovations). En Europe, environ un logement sur cinq est concerné, pour un taux de rénovation d'à peine 2 % par an.
Le point clé est physique : la prévention repose sur la maîtrise du point de rosée, pas sur la seule humidité relative. On recommande de maintenir le point de rosée intérieur sous 12,8 °C ; au-delà de 15,6 °C, les conditions deviennent propices à un développement rapide de moisissures et les interventions arrivent trop tard.
DampAlert répond à une double exigence : informer l'occupant en temps réel pour déclencher une action corrective immédiate (ventiler, chauffer), et historiser sur le temps long pour le gestionnaire (preuve de bonne gestion, détection de ponts thermiques ou d'infiltrations, supervision multi-sites).
Architecture IoT de bout en bout

Le système forme une chaîne d'acquisition complète, du capteur physique à l'interface, en quatre blocs : acquisition et traitement sur le STM32, transmission radio LoRaWAN, réception par une passerelle relayée au serveur de réseau The Things Network, puis une application web qui interroge l'API de TTN pour afficher les tableaux de bord et gérer les alertes.
Parti pris d'architecture fort : plutôt qu'une solution clés en main (type Datacake/TagoIO), Tech Fox a privilégié une intégration directe par API, avec un pont exécuté localement ; garantissant la souveraineté des données et une flexibilité totale de l'interface. La boucle est fermée par l'occupant, qui déclenche les actions correctives et fait redescendre le risque.
- LoRaWAN retenu contre le Wi-Fi et le cellulaire : modulation à étalement de spectre pour la pénétration deep indoor à travers des parois épaisses, bande ISM libre, faible consommation, indépendance vis-à-vis de la box du locataire.
- Encodage Cayenne LPP (7 octets utiles) : charge compacte et auto-décodable nativement côté TTN, sans parser fragile à maintenir.
Nœud capteur & firmware embarqué

Le nœud associe un microcontrôleur STM32L432KC (Cortex-M4 à 80 MHz, choisi pour son efficacité énergétique), un capteur environnemental Bosch BME680 (température, humidité, pression, COV) sur bus I2C, et un transceiver LoRa Semtech SX1276 piloté en SPI sur la bande EU868. Le firmware, en C sous STM32CubeIDE (HAL L4), s'appuie sur la pile LoRaWAN LMIC et son ordonnanceur coopératif non bloquant.
Décision d'ingénierie déterminante pour la fiabilité : le BME680 embarque une résistance chauffante (mesure des COV) qui, laissée active, biaise la température de +5 à +10 °C et invaliderait tout calcul de point de rosée. Le firmware désactive explicitement ce chauffage, de sorte que la mesure reflète uniquement l'ambiant. L'acquisition se fait en mode « forced » (réveil, mesure unique, retour en sommeil) pour économiser l'énergie.
Le rattachement au réseau se fait en OTAA (activation over-the-air, clés de session dynamiques), préféré à l'ABP pour sa sécurité. La conformité au duty cycle réglementaire de la bande 868 MHz (~1 %) est prise en charge nativement par LMIC ; la période d'émission constitue le curseur du compromis réactivité / autonomie batterie / duty cycle.
Cloud souverain & dashboard temps réel

Côté TTN, l'application reçoit les uplinks, les décode nativement (Cayenne LPP vers JSON) et les expose. Un pont Node.js/Express local interroge l'API Storage de TTN à intervalle régulier, normalise les données et publie une API locale simplifiée que le navigateur consomme : contournant au passage les restrictions CORS et le flux JSON non standard renvoyé par TTN.
Le tableau de bord « Surveillance HygroThermique » exécute l'ensemble des calculs thermodynamiques côté client et affiche en continu température, humidité relative et absolue, point de rosée, indice de risque de moisissure, courbes temporelles et journal d'alertes. Il propose trois modes (Production lissée, Instantané pour le diagnostic, Démo par curseurs pour tester les scénarios critiques). Les retours sensoriels sont synthétisés par la Web Audio API (tonalités distinctes selon le type d'alerte), doublés d'un flash visuel.
Fondements thermodynamiques (publics)

Le cœur scientifique est la conversion de mesures brutes (T, HR) en indicateurs de risque, à l'aide de modèles publics et standards ; gage de justesse. Le point de rosée est calculé par l'approximation de Magnus-Tetens, valide de −40 à +50 °C avec une erreur inférieure à 0,1 °C et très peu coûteuse en calcul : gamma = ln(HR/100) + (b·T)/(c+T), puis Tdp = c·gamma / (b − gamma), avec les constantes b = 17,625 et c = 243,04 °C.
L'humidité absolue (masse d'eau réelle par mètre cube), dérivée du modèle des gaz parfaits avec la constante spécifique de la vapeur d'eau Rv = 461,5 J·kg⁻¹·K⁻¹, permet de distinguer une baisse de température d'une vraie variation de charge hydrique : donc de savoir s'il faut chauffer ou ventiler. L'indice de risque combine, sur moyenne glissante, un score humidité et un score point de rosée (pondération 60/40).
- Seuils retenus : humidité relative 60 % (confort) et 80 % (seuil biologique de germination), point de rosée 12,8 °C (vigilance) et 15,5 °C (critique).
- Logique d'alerte à deux niveaux : rouge + sirène cyclique si HR ≥ 80 % ou Tdp ≥ 15,5 °C ; orange + bip simple si HR ≥ 60 % ou Tdp ≥ 12,8 °C.
Résultats, difficultés & compétences
La chaîne complète a été validée de bout en bout (acquisition, encodage LPP, transmission LoRaWAN, réception TTN, pont local et dashboard) avec un flux d'uplinks régulier et cohérent visible dans la console TTN (Live Data et Storage), et un essai de référence filmé en conditions réelles. Limite assumée en toute honnêteté : la littérature n'offre pas de modèle quantitatif reliant précisément le risque de moisissure à l'humidité absolue ; l'indice combiné est affiché à titre indicatif.
Plusieurs pièges classiques ont été résolus : biais thermique du BME680 (chauffage désactivé), endianness des identifiants OTAA (AppEUI/DevEUI en little-endian, AppKey en big-endian), blocage CORS (pont local), flux JSON concaténé (parsing résilient), fausses alertes sur transitoires (moyennes glissantes). Le projet démontre une palette complète : électronique embarquée, radiofréquence/LoRaWAN, thermodynamique appliquée, développement full-stack et architecture IoT souveraine.
Construisons-le.
Présentez le problème, même s'il est encore flou. On transforme le besoin en système clair.