![]() |
![]() |
![]() |
Domotique via Internet |
Maj : 22/11/09
|
|
Les zones grisées
Pour les experts seulement :
|
|
Mon projet domotique a commencé en implantant de nombreux capteurs sur une collection de cartes à base d’Arduino Due et en affichant les résultats sous forme de courbes graphiques. Cette approche avait des défauts majeurs :
Chaque carte vivant sa vie indépendante, tous les résultats et le temps divergeaient.
Les longs fils étaient sensibles aux parasites ce qui induisait des plantages.
Les données n’étaient pas visibles de l’extérieur par smartphone, tablette et PC.
La nouvelle approche est basée sur un ESP32 principal dit « Central ».
Cet ESP32 « Central » collecte les résultats de diverses «Balises » réparties dans la maison, et toutes les minutes paires envoie l’ensemble des mesures à une base de données externe (WiFi -> Réseau).
Divers « Clients» à distance (Réseau et Wifi) exploitent cette base pour afficher les courbes, sur PC, tablette , smartphone ou Nextion.
La liaison des balises autonomes vers le central se fait en ESPNow unidirectionel à très faible consommation, car le temps d’activité (3.3 V et 150 mA) est inférieur à la seconde pour une mise en sommeil de 2 minutes -1 seconde, à consommation quasi nulle (100 microAmp). La balise n’écoute pas pour limiter au maximum son temps d’activité.
Chaque balise est décalée en fonction de son rang, pour émettre à un temps très précis (minute impaire +50 sec , +40 sec, +30 sec…).
Les petites batteries ont un an d’autonomie. Une page détaillera cela 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 des époux 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 trois 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 triple emploi, car en définitive il s’agit de trois affichages qui affichent les mêmes courbes, mais avec des approches totalement différentes, afin de montrer divers chemins possibles.![]() ![]() ![]() ![]() ![]() ![]() |
Le développement est maintenant terminé, tout fonctionne bien et en cas d’échec de connexion en ESPNow ou WiFi, un nouvel essai se déclenche et résout en principe le problème.
Restent toutefois quelques autres problèmes non résolus :
Comme le montrent les compteurs, il y a des pertes erratiques dans les liaisons WiFi et ESPNow que je ne sais pas expliquer. Ces trous sont de l’ordre d’une dizaine par jour (sur 720 points).
Les cartes plantent de temps en temps (et restent plantées), sans aucune raison expliquée, et ce malgré les chiens de garde. Après coupure et remise des alimentations, certaines cartes rebootent normalement et d’autres (strictement identiques) ne repartent qu’après un appui sur le reset.
Aux heures ouvrables, les coupures visibles sur les courbes sont souvent dues à des tests et reprogrammations, ce qui est normal.