Go Down

Topic: PoolMaster: gestion et domotisation de ma piscine (Read 21140 times) previous topic - next topic

Loulou74

Hello,
J'ai réalisé un système de gestion simple de ma piscine (filtration basée sur la température de l'eau, commandes du robot et de l'éclairage), et j'ai commencé à étudier l'extension de ce système pour le traitement de l'eau. Je tombe alors sur votre projet et bien évidemment j'ai été séduit pas sa qualité et son potentiel de personnalisation.
Je suis retraité, geek senior pratiquant depuis les premiers microprocesseurs au début des années 70, passé de l'assembleur avec 4k de mémoire aux incroyables systèmes sur puce actuels. Bref, j'ai l'intention de faire une variante de votre projet pour mes plateformes préférées que sont l'ESP32 et le RaspberryPi.
L'ESP32 parce que beaucoup plus puissant, plus petit (ce qui nécessitera sans doute une break-out board telle que celle de bb06 pour faciliter le câblage), moins cher, double-coeur, WiFi, Bluetooth, GPIO avec Touch et effet Hall, FreeRTOS intégré donc possibilité de gérer du vrai multi-tâches, d'avoir un système de fichiers pour notamment stocker les fichiers html, css et js d'un serveur web (sans artifice type progmem). Le tout avec possibilité d'utiliser le framework Arduino, donc de bénéficier de 90% des librairies. Et je développe avec PlatformIO, bien plus efficace que l'IDE Arduino, pour éditer et structurer ses sources, librairies et data et utilisation d'un véritable débogueur (ES-Prog) sans Serial.print partout (il paraît qu'Arduino Pro arrive, mais quand ?).
Le RaspberryPi ensuite pour héberger la partie gestion serveur avec Node-Red, Mosquitto, InfluxDB et Grafana, montés en containers sous Docker. Mes deux serveurs domotiques actuels tournent dessus H24 depuis des lustres, avec un reboot annuel et encore...
Avant de me lancer, j'ai néanmoins quelques questions et je vous remercie à l'avance pour vos réponses éclairées :

- je suis surpris par la régulation PID. Arrive-t-on en particulier à avoir une action dérivée avec des temps de réaction aussi long après injection de produit ? Ça doit être vrai puisque ça marche, mais je n'y aurais pas pensé à priori.
- je vois notamment chez bb06 une alim 12V pour un Arduino 5V, le pauvre régulateur de la carte doit beaucoup chauffer non ?
- j'ai vu des ensembles sondes (version "pro")+ amplis identiques (V2) aux vôtres sur AliExpress, bien moins chères qu'en Europe. On y trouve également les isolations galva DFRobot. Avez-vous une idée de la durée de vie de vos propres sondes qui justifierait la différence de prix ?
- quelle est la fonction de la pression dans le filtre ? Est-ce un indicateur de présence du débit ?
- dans la configuration de bb06, je vois les sondes du côté du refoulement : ne serait-ce pas plus indiqué de les mettre avant le filtre ?
- quel produit chloré injectez-vous ?
- Cette installation n'est pas donnée, pas loin de 1000€ au final. Est-ce que la qualité du traitement est au rendez-vous ?

Désolé pour toutes ces questions. Il est bien évident que je m'engage à faire état de mon avancement, peut-être sous forme d'un "fork" de votre projet ?
Un autre fan !
Denis

Bonjour Denis, c'est toujours bien d'avoir des experts dans un domaine particulier qui arrivent sur un projet pour le faire progresser.
Pour répondre à tes questions:
- PID: si tu regardes le code le le PID n'est en fait qu'un 'P', les parties I et D sont mises à zero. En fait la régulation PID n'est pas très adaptées à ce genre de problème (chimie) qui souffre d'effets non-linéaires et tampons... Mais ça fonctionne correctement en l'état, c'est juste un peu overkill mais tellement plaisant de jouer avec du PID :)
- Alim 12V: oui, c'est un retour pour bb06
- les sondes c'est au petit n=bonheur la chance. Je suis passé chez Hanna, ça marche bien
- Pression: oui ça permet de vérifier qu'il y a du flux (ou pas -> Erreur) et de vérifier à l'avenir si le filtre à sable est encrassé
- Montage sondes: j'ai ajouté au GIT un schéma sur la bonne manière de les monter
- Chlore: du chlore liquide
- coût: j'en suis très satisfait et le vrai coût au final est celui des consommables...
A+
Loic

gixy31

Super, merci pour la rapidité de la réponse.
Pour le PID ça confirme ce que je pensais en effet, une régulation proportionnelle à l'écart mesure/consigne est bien ce que j'aurais fait à priori.
Pour les sondes, les sondes dites "industrielles" chez Ali semblent correctes, mais elles ont un diamètre et un pas de vis 3/4" incompatible avec toutes les chambres d'analyse que je vois qui sont en 1/2". Il faut que les sondes restent immergées et dans mon cas, le local est plus haut que le niveau de la piscine, donc il me faut une chambre qui reste en eau lorsque la filtration est arrêtée. Il y a des indicateurs de débit à palette qui donnent un signal binaire, plus simple à gérer ce me semble.
J'ai déjà vu ce schéma. C'est bien mais on peut améliorer un peu en mettant l'entrée après le filtre pour avoir de l'eau  propre sur les sondes, tout en conservant une dépression entrée-sortie.

Bon, y'a plus qu'à...
@+
Denis

bb06

Alors je reponds pour ma partie sur l'alimentation.
J'ai fait le choix de partir sur une version arduino mega 2560 de Keyestudio avec un régulateur MP2307 DN modifié qui peut délivrer sur l'ensemble des pins jusqu'à 2A. Ce choix a été aussi motivé pour utiliser une masse commune pour tous les périphériques et pour cela j'ai conçu ma carte fille avec plus de pin male 5V/GND et pour mes besoins futurs. J'ai branché mon alimentation sur le input standard. Plus d'info sur cette carte : https://wiki.keyestudio.com/Ks0342_Keyestudio_MEGA_2560_Compatible_Board_Advanced
L'alimentation utilisée est plus grosse c'est une Mean Well 12V HDR-30


Concernant les sondes, je crois que le mieux c'est aussi chez Hanna, les autres se détériorent vite et ça restera du consommable car ça s'use.
Pour la mise en place de mon Pod Zodiac (ph, orp et température) et des colliers de prise en charge pour l'injection clore et acid, je sais pas si c'est le mieux avant ou après. Chez Zodiac, ils mettent ça derrière le filtre : https://www.azialo.com/786-module-tri-pro-regulation-ph-et-chlore-pour-electrolyseur-zodiac-tri-3478581975159.html
Je vous recommande le POD ZODIAC pour les mesures car c'est bien conçu (1 seul trou à faire) et surtout plus trop besoin de faire un gruyere dans ses tuyaux !
a+
ESP 32 est une super Board et tres bon marché aussi. Personnellement sur la communication en WIFI suivant ou se trouve le local technique ça peut poser problème. Personnellement j'ai tiré un CAT7 de mon routeur à l'arduino et là ça marche niquel sur la négociation réseau et l'obtention de l'IP. Je suis en dessous de 4 secondes après reboot.  
Bref oui ce projet à un coup et on est dans la fourchette des 1000 €. Si ça vous interesse, je peux ecrire ma BOM de ma V2 avec les liens de mes achats.

gixy31

Merci bb06 pour ces infos. Ma remarque sur l'alim concernait le niveau de tension en entrée. Un régulateur linéaire classique doit dissiper la différence des tensions en entrée et sortie, soit ici 7V, ce qui le ferait bien chauffer. Mais ici en effet on a un régulateur à découpage à base de MOSFET, donc pas de problème (sauf peut-être du rayonnement à cause de la fréquence de découpage).
Les sondes après le filtre pour avoir de l'eau propre c'est en effet mieux. En revanche dans votre montage, elles ne sont pas en dérivation, donc elles prennent toute la pression de refoulement, ce qui peut nuire à leur longévité. Pour ma part, je vais plutôt mettre une chambre d'analyse pour avoir de l'eau en permanence, et pas avec un fort débit, avec l'entrée après le filtre et la sortie avant la pompe.
Pas de souci de WiFi pour moi, le local est dans le garage et la connexion se fait instantanément avec l'ESP32. De même, la synchronisation de la RTC intégrée par NTP est immédiate. 
Je veux bien la BOM, j'ai commencé mes recherches, ça m'aidera, surtout avec un retour de votre part sur la qualité des produits concernés.
Merci,
@+

bb06

Voici ma BOM pour ma V2 :

Je pense que je vais moi aussi partir sur des sondes Hanna et dans ce cas faire une dérivation sur la ma sortie du filtre (merci gixY31)


ObjetlienPrix UnitaireQuantitéPrix Total
1 Alimenation MeanWell 12V HDR-30https://fr.aliexpress.com/item/4000512714343.html?spm=a2g0s.9042311.0.0.27426c372DwVi716116
1 carte fille mega 2560 DIY + connecteur 515
cables dupont 30cmhttps://fr.aliexpress.com/item/32987024879.html?spm=a2g0s.9042311.0.0.6d836c373sh99I326
cable PH2.0 duponthttps://fr.aliexpress.com/item/4000983636722.html?spm=a2g0s.9042311.0.0.6d836c373sh99I515
mega2560 R3 Advanced Keyestudiohttps://fr.aliexpress.com/item/32902050141.html?spm=a2g0s.9042311.0.0.27426c37zPn48813113
W5100 Ethernet Shield Keyestudiohttps://fr.aliexpress.com/item/2042247327.html?spm=a2g0s.9042311.0.0.27426c37zPn488818
Nextion bordure 6https://fr.aliexpress.com/item/4000127982680.html?spm=a2g0s.9042311.0.0.27426c37zPn488616
Nextion NX4832K035 https://fr.aliexpress.com/item/4000127982680.html?spm=a2g0s.9042311.0.0.27426c37zPn48833,59133,59
DS3231 Clockhttps://fr.aliexpress.com/item/33000531103.html?spm=a2g0s.9042311.0.0.27426c37PumqU7313
Support Rail DIN plastiquehttps://fr.aliexpress.com/item/4000539460290.html?spm=a2g0s.9042311.0.0.27426c37PumqU71,3711,37
Relay shieldhttps://fr.aliexpress.com/item/33050594625.html?spm=a2g0s.9042311.0.0.27426c37PumqU75,715,7
Rail din 20cmhttps://fr.aliexpress.com/item/32903957266.html?spm=a2g0s.9042311.0.0.27426c3755H1y5224
sonde pressionhttps://fr.aliexpress.com/item/32851667666.html?spm=a2g0s.9042311.0.0.27426c3755H1y511111
Connecteur RJ45 https://fr.aliexpress.com/item/32901871650.html?spm=a2g0s.9042311.0.0.27426c37qMQp8c716
boitier legrand Marinaebay 60160
tole galvanisé 300x200ebay 11111
pompe peristatique PR4 SEKOebay 1302260
sonde PH Hanna 70170
Sonde ORP 70170
sonde temperature DS18B20https://fr.aliexpress.com/item/32983291667.html?spm=a2g0o.productlist.0.0.e0e53d72IxKCHF&algo_pvid=2980e191-fc29-4909-a726-a084531c435b&algo_expid=2980e191-fc29-4909-a726-a084531c435b-0&btsid=2100bdd516058594106438183e0f24&ws_ab_test=searchweb0_0,searchweb201602_,searchweb201603_7,5417,54
Module d'isolation de signal DFR0504https://www.gotronic.fr/art-module-d-isolation-de-signal-dfr0504-27832.htm21,9244
Adaptateur pH/ORP 1130https://www.gotronic.fr/art-adaptateur-ph-orp-1130-12112.htm30,5271
2 Relay de puissance 2P 25A 2NO 220V 
 (commande Lumiere + electrovanne )
https://fr.aliexpress.com/item/4000198627842.html?spm=a2g0s.9042311.0.0.27426c37qVlc3P6,68213
Disjoncteur C2 15115
1 kit mise à la terre poolterre 50150
accessoires divers  20120
     
   total815,2

gixy31

#215
Nov 21, 2020, 05:51 pm Last Edit: Nov 21, 2020, 06:55 pm by gixy31
Merci,
Je cherche les cannes d'aspiration avec détection de niveau pour les bidons. Pas facile à trouver ou alors à des prix...
Loïc, as-tu des références ?

Trouvé un site belge avec de bons tarifs pour le hardware : www.my-pool-covers.com/

@+
Denis

gixy31

#216
Nov 21, 2020, 06:29 pm Last Edit: Nov 21, 2020, 06:54 pm by gixy31
Et les électrodes Hanna, on se perd dans les références. Beaucoup sont amplifiées, donc pas besoin d'un ampli supplémentaire. Suis perplexe...
De plus je lis que la durée de vie est de un à deux ans, ce qui grève bien le budget consommable.

gixy31

#217
Nov 28, 2020, 11:04 am Last Edit: Nov 28, 2020, 11:09 am by gixy31
Hello gentlemen,
Je commence le portage vers plateforme ESP32, visiblement quelqu'un ici l'a déjà fait (camariad_popof) sans détailler son parcours. Je vais devoir faire une carte d'interface car l'ESP est en 3.3V, donc shifter pour tout ce qui est en 5V autour (Nextion en particulier). Je m'interroge sur la partie acquisition des sondes. Je serais preneur des valeurs de tensions min/max que vous obtenez en sortie des isolateurs galva (ou des amplis, à priori ce sont les mêmes). Si cela reste inférieur à 3V c'est bon, sinon il faudra que je modifie ces isolateurs.
Le code pour le watchdog est spécifique pour l'ESP, petite modif à faire.
Pour la RTC, je vais utiliser astucieusement celle du Nextion qui en a une intégrée, autant en profiter !
J'ai noté que le code continuait à gérer le bouton-poussoir et l'écran LCD, dommage de ne pas mettre une compilation conditionnelle fonction d'un paramètre de config, ce que je vais faire.
Attention aussi, le fichier Dependancies.txt n'est pas à jour et les dépendances indiquées dans PoolMaster.ino sont mieux mais pas complètes non plus (manque au moins TextFinder). C'est un des avantages de développer avec PlatformIO : on définit les dépendances dans un fichier .ini qui est utilisé à la compilation, donc on est sûr qu'il est à jour. De plus on y spécifie si on veut la dernière version stable de la librairie ou bien une version particulière. C'est top !
Je vais donc faire les modification minimales pour que cela compile, je ne doute pas qu'ensuite cela fonctionne puisque ces modifs sont mineures. Avant d'avoir le matos, je ferais aussi une maquette comme certains l'ont fait. Mais ensuite, je compte revoir plus globalement le source pour le structurer en fichiers séparés par "tâches", puis avec quelques changement spécifiques à l'ESP, par exemple faire tourner certaines tâches dans le second core (le serveur web en particulier).
A suivre...
Bonne fin de confinement à tous :-)

Loulou74

Merci @gixy31,

- tension en sortie de sondes: sinon tu fais un pont diviseur sur la sortie des sondes. Tu perds un peu en résolution mais vu les autres sources de variation, pas certain que ce soit gênant.
- RTC: oui bonne idée. J'avais intégré le RTC avant d'intégrer le Nextion donc c'est resté comme cela
- code conditionnel pour bouton poussoir: ok je vais le faire
- fichier Dependancies.txt mis à jour. Pour la librairie TextFinder, cette partie du code n'est pas de moi donc c'est passé à la trappe... Corrigé.

A+
Loic

gixy31

Bonjour Loïc,
Je comptais faire l'adaptation pour ESP à coups de #ifdef, mais comme je fais en même temps un portage sous PlatformIO, c'est plus compliqué que ça : sous Arduino, l'IDE concatène simplement les fichiers .ino ce qui fait que toutes les variables globales sont accessibles dans tous les fichiers ; avec PlatformIO, on a des .cpp qui sont des unités de compilation indépendantes, donc il faut revoir tous les #include, déclarer les fonctions et variables externes. Cela devient rapidement inextricable avec des #ifdef. Je vais plutôt faire un "fork" à partir de la version courante, et ce d'autant plus que passer au WiFi à la place de l'Ethernet fait aussi quelques grosses modifs. Le serveur web sera asynchrone et j'utilise l'émulation du système de fichier pour stocker la page en vrai fichier .html (avec .css et .js aussi si besoin).
Du coup le fichier config devient vraiment un fichier config, avec seulement des #define, aucun #include ni de déclaration de variable qui se font dans un autre .h (PoolMaster.h).
Dans les #include, il manquait aussi Ethernet.h
Tout ça c'est de la cosmétique, la partie fonctionnelle du programme restera inchangée à priori.
A suivre :-)
Denis

Loulou74

OK merci Denis, cela sort du champs de mes compétences.
Hâte de voir ton projet final avec une belle interface web

Loulou74

J'y pense, il existe des cartes à base ESP32 qui ont à la fois le WiFi et l'Ethernet.
Il me semble qu'il serait idéal d'avoir les deux, ce serait une très belle amélioration du projet je pense

gixy31

Le WiFi présente bien des avantages pour ceux qui ont le local technique près de la piscine, et que tirer un câble présente de grosses difficultés, alors qu'un simple répéteur WiFi résout le problème. De plus, la connexion n'a pas besoin d'être très fiable, car la régulation se fait dans le local, on ne fait que consulter ou passer des commandes par le réseau.
Les cartes avec l'Ethernet sont sans doute plus chères, je vais regarder ce qui existe.
Ne te dévalorise pas, ton champ de compétences est déjà très au dessus de la moyenne :-)
@+
Denis

N1co44

#223
Dec 14, 2020, 12:04 pm Last Edit: Dec 14, 2020, 12:05 pm by N1co44
Bonjour,

Vraiment félicitation pour ce projet !

J'ai un soucis de com en Ethernet, je suis avec meg2560 + Shield Ethernet
La ligne a modifier  est bien uniquement celle-ci en enlevant les commentaires ?!

String sArduinoMac;
IPAddress ip(192, 168, 0, 188);  //IP address, needs to be adapted depending on local network topology

J'ai testé le matériel avec un programme plus simple et la librairie ethernet , j'arrive a affecter une adresse ip.

Merci d'avance pour votre aide.

Nico


gixy31

#224
Dec 17, 2020, 12:56 pm Last Edit: Dec 17, 2020, 06:54 pm by gixy31
Hello Loïc,
Quelques news de mon avancement.
Ma version dédiée ESP32 fonctionne (sur banc d'essai). Comme dit précédemment, ce sera une version exclusive ESP car les modifs sont trop lourdes pour être gérées à coup de #define.
Résumé des modifs :
- passage en projet PlatformIO multi-fichiers et en .cpp au lieu de .ino ;
- suppression de la fonction Ethernet et du petit serveur web. Réseau WiFi multi (choix du meilleur réseau) ;
- Utilisation des deux cores de l'ESP (par ex. le maintien du WiFi est en asynchrone dans le core 1) ;
- Client MQTT asynchrone (avec des callbacks, comme le reste) ;
- passage en JSON 6 au lieu de 5 ;
- quelques modifs par-ci par là, comme la filtration centrée sur 15h pour filtrer aux heures les plus chaudes de la journée, ou changement des logiques à heure fixe (par exemple dans ta version, le calcul de la durée de filtration est effectué plusieurs fois, tant que les minutes sont à 0...) ;
- adaptations spécifiques ESP : vrai reset à l'envoi de la commande (au lieu de boucler en attente du watch-dog), lecture calibrée des entrées analogiques, stockage NVS atomique (variable par variable), etc.

Je me suis intéressé aussi à la régulation. D'abord le sampletime de l'ORP n'est pas défini, donc par défaut la bibliothèque le met à 100ms. Ensuite, il me semble inutile de réguler plus souvent que la taille de la fenêtre, donc je pense fixer les sampletime à la taille de la fenêtre.

J'ai aussi repris le tableau de bord Node-Red, corrigé quelques petites erreurs dans les fonctions (";" manquants par ex.), agrandi certaines polices et fait en sorte que les paramètres actuels sur le tableau de réglages soient affichés.

A l'init, le Nextion affiche une durée de pompe ORP de 30.2min, qui est mise à jour par la suite. C'est parce qu'il y a quelques variables qui ne sont pas initialisées dans l'onglet "Programs" de Nextion Studio, dont page0.vaphTk, page0.vaOrpTk, page0.vaWT et page0.vaAT.
Je n'ai pas réussi à trouver une carte SD qui fonctionne sur le Nextion, je l'ai donc programmé par la liaison série (?), ce qui prend un certain temps...

Dès que j'ai une version complète je posterai un "fork" sous GitHub.

Au global, ton projet est très bien fait, et je n'ai pas eu de mal à le modifier et à l'adapter à mon besoin. Je vais sans problème ajouter la programmation du robot de nettoyage, cela remplacera le chauffage que je n'ai pas (snif). Encore merci et bravo donc.

@suivre
Denis

Go Up