Anthias
mail

e

Domotique via Internet
PHP et MySQL

w


Introduction
Remplissage base MySQL
Les grands principes

Conclusion

Maj : 22/11/09

Abstract :
The purpose of this page is to manage a collection of various wireless sensors, thrue an ESP32, filling a table of a database on a site by WiFi link.
Results can be read on this HTML page, and displayed by curves.
This page is a part of my project <Nextion> arduino

Résumé :
Le but de cette page est de gérer une collection de différents capteurs sans fil, via un ESP32, en remplissant un tableau d'une base de données sur un site par lien WiFi.
Les résultats peuvent être lus sur cette page HTML, et affichés par des courbes.

Cette page fait partie de mon projet <Nextion> arduino

Compteur Geiger
Privé !

----> .
24 h
.
4 jours
.
1 mois
.
1 an
Consommation EDF
Privé !
----> .
24 h
.
4 jours
.
1 mois
.
1 an

WiFi connect
milliSeconds

----> .
24 h
.
4 jours
.
1 mois
.
1 an
   
   

Tension Volts
Master

---->

Tension Volts
Balise 3

---->

   
   

.
Count Master

----> .
1 an

.
Count Nord (1)

---->

.
1 an

.
Count mobile (2)

---->

.
1 an
   
   

Ecarts b Temper.
BME280 <>AHT21

---->

.
1 an

Ecarts b Pression
Bureau - Nord

---->

.
1 an

Ecarts b Humidité
BME280 <>AHT21

---->

.
1 an

Les zones grisées
ne sont pas
ouvertes au public !

 

Pour les experts seulement :

Debug
calculs


Nombre de lignes


Mode


Température t°C
Nord par BME280

---->

.
1 an

Température t°C
Nord par AHT 21

---->

.
1 an

Température t °C
Bureau par BME280

---->

.
1 an

Température t °C
Salon par BME280

---->

.
1 an
   
   

Pression QNH clock hPa
Nord par BME280

---->

.
1 an

Pression QNH clock hPa
Bureau par BME280

---->

.
1 an
   
   

Humidité p %
Nord par BME280

---->

.
1 an

Humidité p %
Nord par AHT 21

---->

.
1 an

Humidité p %
Bureau par BME280

---->

.
1 an
   
   

Capteur solaire s lux
Nord par TSL2561

---->

.
1 an

Haut de page

arduino  Introduction

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 :
p Chaque carte vivant sa vie indépendante, tous les résultats et le temps divergeaient.
p Les longs fils étaient sensibles aux parasites ce qui induisait des plantages.
p 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.

Haut de page

arduino  Remplissage base MySQL

Pour envoyer des données à une base sur un serveur, il y a deux approches principales :
p 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.
p 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 arduino 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

Haut de page

arduino  Les grands principes

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.
p Le terminal en http, visible sur un browser est décrit ici : Domotique via Internet (cette page) arduino
p L’affichage en dur sur un Nextion en 800x480 est décrit ici : Domotique Nextion locale arduino
p L’affichage sur un Pc via Processing est décrit ici : Interpréteur Processing nextion

tri

Trois affichages

 

Haut de page

arduino  Conclusion

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 :
p 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).
p 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.

Haut de page

© Christian Couderc 1999-2023     Toute reproduction interdite sans mon autorisation


* Page vue   9626   fois       IP : 3.227.251.94

 Haut de page         Dernière retouche le 30 Novembre 2022 à 10 h         Retour page précédente

   Collector