Anthias
mail
4 connectés     # # # #

e

Domotique via Internet
PHP et MySQL

w


Introduction
Remplissage base MySQL
Les grands principes

Conclusion

Maj : 19/08/2024

Abstract :
The purpose of this page is to manage a collection of wireless sensors using an ESP32, which updates a database table on a website via a WiFi connection. The data collected can be viewed on this HTML page and is visualized through interactive graphs
This page is a part of my project <Nextion> arduino

Résumé :
Le but de cette page est de gérer une collection de capteurs sans fil via un ESP32, en alimentant une base de données sur un site web grâce à une connexion WiFi. Les résultats peuvent être consultés directement sur cette page HTML et visualisés sous forme de courbes interactives.
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 DS18b20

---->

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

p Chaque carte fonctionnait de manière indépendante, ce qui entraînait des divergences dans les résultats et la synchronisation temporelle.
p Les longs câbles utilisés étaient sensibles aux interférences, provoquant des plantages fréquents.
p 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.

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 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 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 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.

p Le terminal en http, visible sur un browser est décrit ici : Domotique via Internet 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

p L’affichage sur un moniteur HDMI est décrit ici  :Atom PSRAM display nextion

tri

Divers affichages

Haut de page

arduino  Conclusion

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 bezier). 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.

Haut de page

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


* Page vue   14629   fois       IP : 3.139.234.124

 Haut de page         Dernière retouche le 19 Août 2024 à 10 h         Retour page précédente

   Collector