![]() |
![]() |
![]() |
Domotique via Internet |
Maj : 01/03/22
|
|
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 sensorr 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 calée pour émettre à un temps très précis (minute impaire +55 sec , + 50 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 très interminable car le manque de fiabilité est un problème très lourd à résoudre. Quand on se connecte et que l’on se déconnecte du WiFi, il y a des échecs fréquents. En temps normal on ne s’en aperçoit pas car cela se raccroche au bout d’un temps variable, mais quand il s’agit d’envoyer un paquet de données synchrone, cela fait un trou dans la base de données.
Le compteur C0 (master) montre ces problèmes récurrents.
Le compteur « WiFi connect milliSeconds » montre les difficultés de l’accrochage en passant du mode WiFi au mode ESPNow toutes les deux minutes.
En contrepartie les liaisons ESPNow semblent fiables car très peu de paquets sont perdus (hors les trous liés aux erreurs du master en WiFi), voir les compteurs C1…C3 pour les esclaves.
Autre problème non résolu les cartes plantent de temps en temps (et restent plantées), sans aucune raison expliquée, et ce malgré les chiens de garde. Aux heures ouvrables, les coupures sont souvent dues à des tests et reprogrammations.