Domotique via Internet |
Maj : 19/08/2024 Abstract : Résumé : |
|
Les zones grisées
Pour les experts seulement :
|
|
Mon projet domotique a débuté avec l'implantation de nombreux capteurs sur une série de cartes basées sur Arduino Due, permettant d'afficher les résultats sous forme de graphiques. Cependant, cette approche présentait plusieurs inconvénients majeurs :
Chaque carte fonctionnait de manière indépendante, ce qui entraînait des divergences dans les résultats et la synchronisation temporelle.
Les longs câbles utilisés étaient sensibles aux interférences, provoquant des plantages fréquents.
Les données n'étaient pas accessibles depuis l'extérieur via smartphone, tablette ou PC.
Pour remédier à ces problèmes, j'ai adopté une nouvelle approche basée sur un ESP32 principal, appelé « Central ». Cet ESP32 « Central » collecte les données provenant de diverses « Balises » disséminées dans la maison, puis envoie l'ensemble des mesures à une base de données externe toutes les minutes paires via le réseau WiFi.
Plusieurs « Clients » distants, connectés via le réseau ou le WiFi, peuvent ensuite exploiter ces données pour afficher les courbes sur différents dispositifs tels que PC, tablette, smartphone ou écran Nextion.
La communication entre les balises autonomes et le central se fait via un protocole unidirectionnel ESPNow, à très faible consommation. En effet, chaque balise est active pendant moins d'une seconde (3.3 V et 150 mA) pour une mise en sommeil de 2 minutes moins une seconde, ce qui réduit sa consommation à quasi nulle (100 microampères). Pour limiter au maximum son temps d'activité, la balise n'écoute pas, elle se contente d'émettre à des moments précis (par exemple, à 55 secondes ou 50 secondes après une minute impaire).
Grâce à cette gestion optimisée de l'énergie, les petites batteries des balises offrent une autonomie d'environ un an. Une page dédiée détaillera ce fonctionnement ainsi que la synchronisation des horloges.
Pour envoyer des données à une base sur un serveur, il y a deux approches principales :
Utiliser un « connecteur ». Arduino en fournit de base et il y a de très nombreux exemples. Cela n’a besoin d’aucun autre fichier.
Envoyer ses données en « Post » vers un fichier PHP qui se chargera de les insérer dans la base.
Les résultats sont équivalents. Cette page utilise la méthode « Post » en se basant au début sur un excellent tutorial de la famille Santos : Random Nerd Tutorials
Je ne reviendrai pas sur cette première phase consistant à déposer ses données dans une base MySql, leurs explications sont suffisantes.
La page Domotique Nextion explique le choix de la période des 2 minutes entre les enregistrements, soit 720 points par jour utilisés ici.
Pour l’affichage de 1 à 4 jours, les données sont sauvées dans une table de : 24h * 60m / 2m * 4j = 720 * 4 = 2880 lignes.
Pour l’affichage sur un mois les données sont sauvées dans une autre table toutes les heures entières, soit : 24 heures * 30 jours = 720 points.
Pour l’affichage sur un an, seules les données à 12:00 et minuit sont conservées, soit : 365 jours * 2 = 730 points
L’ESP32 maître est en écoute permanente en ESPNow de toutes les balises qui émettent chacune pendant moins d’une seconde aux minutes impaires, aux secondes 55, 50, 45, etc..,
Chaque minute paire, à la seconde zéro,le maître passe en émission WiFi (environ une seconde) pour envoyer toutes les données collectées à un fichier post-esp-data.php sur le serveur dont la fonction est de tout copier dans une nouvelle ligne de la base.
Cette page HTML, domus.php est l’interface client permettant les choix.
Une fois les choix validés et le bouton d’exécution cliqué, cette page passe les sélections du client à une page esp-data.php qui lance la récupération des données dans la base, fait les calculs et affiche la courbe dans la page domus.php.
Pour le moment seul le minimum est affiché en public. D’autres capteurs seront rajoutés par la suite.
Le propriétaire de la base a seul accès à un menu plus complet, permettant de piloter les chauffages, climatisations, alarmes..
Dans ce chapitre commun, ce petit gribouillis vous montrera peut-être plus clairement les approches décrites dans mes pages pour afficher graphiquement les données d’acquisition, à partir du "maître", l’ESP32 central, qui centralise une dizaine de capteurs variés. Ces trois affichages fonctionnent bien simultanément sur le même ESP32 maître. Il semble que cela fasse de multiples emplois redondantsi, car en définitive il s’agit de divers affichages qui affichent les mêmes courbes, mais avec des approches totalement différentes, afin de montrer divers chemins possibles. Le terminal en http, visible sur un browser est décrit ici : Domotique via Internet L’affichage en dur sur un Nextion en 800x480 est décrit ici : Domotique Nextion locale L’affichage sur un Pc via Processing est décrit ici : Interpréteur Processing L’affichage sur un moniteur HDMI est décrit ici :Atom PSRAM display |
Le développement est désormais achevé, et tout fonctionne correctement. En cas d'échec de connexion via ESPNow ou WiFi, un nouvel essai est automatiquement déclenché, ce qui résout généralement le problème. Cependant, il subsiste encore quelques autres problèmes !
En raison d'une erreur de conception, j'avais surestimé la portée d'ESPNow. J'ai effectué tout le développement des balises mobiles dans mon bureau , situé au premier étage de la maison (Balise radio
pour système domotique ). Cependant, lors du déploiement réel au rez-de-chaussée, j'ai été surpris de constater que le signal passe mal à travers le plancher en béton, entraînant des pertes de signal aléatoires des balises lointaines. Pour résoudre ce problème, je vais développer un autre système utilisant le WiFi, qui est disponible dans toute la maison.
Un autre problème non résolu est que, quelques fois par an, certaines cartes se plantent de manière aléatoire (et restent bloquées), sans aucune raison apparente, malgré l'utilisation de watchdogs. Après une coupure, puis une remise sous tension, certaines cartes redémarrent normalement, tandis que d'autres (pourtant identiques) nécessitent une pression sur le bouton de réinitialisation pour redémarrer.
Enfin, pendant les heures ouvrables, les coupures visibles sur les courbes sont souvent dues à des tests et reprogrammations, ce qui est normal dans le cadre du développement, ou à des coupures de la box pendant les vacances.