PoolMaster: gestion et domotisation de ma piscine

@bb06

voila

mqtt 2.5.2
One wire 2.3.8
Bonjour 1.0.0
PID 1.2.0
PCI Manager 2.1.4
Running Median 0.3.9
SoftTimer 3.2.0
Time 1.5
YASM 1.0.5
RTCLIb 2.1.4
EasyNextionLibrary 1.0.6
EEPROMex 1.0.0
Dallas Temperature 3.9.0
ArduinoQueu 1.2.5
ArduinoJson 7.1.0
Adafruit BusIO 1.16.1

(Tout tourne bien dans les conditions précitées sur la version 6.0.1 de Loic)

Hum, je vois plein de versions de librairies différentes entre toi et Loïc, en particulier sauf erreur Loïc tourne encore avec ArduinoJson 5 (y compris dans la branche develop), et toi avec la version 7, alors que déjà la version 6 était incompatible avec la 5. Je doute que cela fonctionne, ou alors c'est un morceau de chance comme disent nos amis(?) anglais.

Hmm oui, je n'ai pas encore fait l'effort de migrer vers les nouvelles versions de ArduinoJson. Pour citer les anglais encore, "if it ain't broken, don't fix it!"

merci pour votre aide @pocrate.
J'as testé mon ds3231 avec le code de demo dans le github et ça fonctionne correctement. Je vois bien les dates dans le sketch de demo.
@pocrate il y a beaucoup de librairie differentes. La yasm est chez moi en 1.0.0 quand il faut la 0.9.2 plus disponible sur le github.
j'ai mis une pile dans le Nextion et j'ai changé la pile dans le DS3231. Voici les Logs :

19200 baud
22:52:50.599 -> Stored config version: 100. Loading settings from eeprom
22:52:50.632 -> 100
22:52:50.632 -> 0, 0, 0, 0
22:52:50.632 -> 5, 12, 23, 17, 30
22:52:50.632 -> 1800, 1800
22:52:50.665 -> 3000000, 3600000, 6897, 6897
22:52:50.665 -> 7.20, 680.00, 1.20, 0.25, 10.00, 27.00, 23.60, -2.47, 6.67, 431.00, 0.00, 0.77, -0.00
22:52:50.698 -> 2000000.00, 0.00, 0.00, 4500.00, 0.00, 0.00, 0.00, 0.00, 27.87, 7.62, 201.06, 3.18
22:52:50.763 -> 100.00, 100.00, 20.00, 20.00, 1.50, 3.00
22:52:50.763 -> 192.168.1.222, 255.255.255.0, 192.168.1.1, 8.8.8.8, 10.11.12.13.14.15
22:52:50.836 -> 0
22:52:50.836 -> 0
22:52:50.836 -> 192.168.1.100
22:52:50.836 -> 1883
22:52:50.836 -> 
22:52:50.836 -> 
22:52:53.489 -> MQTT Topic UID: PoolMaster_756E6B776F001403
22:52:53.520 -> published: PoolMaster_756E6B776F001403/status - online
22:52:53.520 -> Payload: {"Fw":"7.0.0","FSta":5,"FDu":12,"FStoM":23,"FSto":17,"Dpid":30,"pHUTL":30,"ChlUTL":30} - Payload size: 131
22:52:53.586 -> Payload: {"pHWS":50,"ChlWS":60,"pHSP":720,"OrpSP":680,"WSP":2700,"WLT":1000,"PSIHT":120,"PSIMT":25} - Payload size: 126
22:52:53.652 -> Unable to publish the following payload: {"TE":2360,"pHC0":-2.467585,"pHC1":6.666544,"OrpC0":431,"OrpC1":0,"PSIC0":0.770833,"PSIC1":-2.980232e-8}
22:52:53.749 -> MQTTClient.lastError() returned: -1 - MQTTClient.returnCode() returned: 0
22:52:53.782 -> Failed to connect to the MQTT broker
22:52:53.782 -> Failed to connect to the MQTT broker
22:52:53.815 -> [memCheck]: 2103b
22:52:53.815 -> 3386: void UpdateRTC(): sent an NTP packet request to time server
22:52:53.848 -> 3449: void UpdateRTC(): NTP packet received from time server
22:52:53.881 -> 3453: void UpdateRTC(): storage.DST: 0
22:52:53.913 -> 3474: void UpdateRTC(): timestamp: 1722981174
22:52:53.946 -> 3499: void UpdateRTC(): time: 2024-08-06 21:52:54
22:52:53.979 -> [memCheck]: 2330b
22:52:54.044 -> Payload: {"AcidF":100,"ChlF":100,"IO":24,"IO2":0,"pH2":0,"Orp2":0} - Payload size: 91
22:52:54.118 -> [memCheck]: 2105b
22:52:54.184 -> 3787: void trigger1(): Nextion p0
22:52:56.500 -> 2024-08-06 21:52:56 - Error getting temperature from DS18b20_0
22:52:56.601 -> Ph: 7.62 - Orp: 1.96 - 231.61mV
22:52:56.740 -> PSI: 4.10 - 3.16Bar
22:52:58.902 -> 2024-08-06 21:52:58 - Error getting temperature from DS18b20_0
22:52:59.007 -> Ph: 7.61 - Orp: 1.96 - 231.41mV
22:52:59.140 -> PSI: 3.99 - 3.12Bar
22:53:01.271 -> 2024-08-06 21:53:01 - Error getting temperature from DS18b20_0
22:53:01.406 -> Ph: 7.60 - Orp: 1.96 - 231.00mV
22:53:01.548 -> PSI: 4.14 - 3.14Bar
22:53:03.705 -> 2024-08-06 21:53:03 - DS18b20_0: -87.91°C - Ph: 7.60 - Orp: 1.97 - 231.00mV

En effet, quand je m'en sortais pas il y a deux mois, j 'ai fini par tout mettre à jour à taton et c'est d'ailleurs ce qui m'a permis d'avancer. Après cette info, je reconnais que c'est pas très malin ! La voie est ouverte ....
Pour tes logs, je n'ai humblement pas assez d'expertise !

Merci @pocrate. J'espere juste que j'ai pas un composant défectueux.
Je vais essayer de remettre la version 5.0.1 qui marchait bien chez moi au moins pour verifier que le Nextion/DS3231. si ça fonctionne, je repasserai en 6.0.1 avec la version de tes librairies.
@pocrate utilises tu un Controllino ou un Arduino Mega 2560 avec la DS3231? Quelle version du Arduino IDE utilises-tu ?

C'est vrai, quand ça tombe en marche, surtout ne rien changer :slight_smile:
ArduinoJson est une librairie extrêmement bien faite, mais c'est aussi une bombe atomique pour notre cage à lapins. On pourrait très simplement sérialiser et désérialiser nos messages sans utiliser de bibliothèque, car nos messages sont très simples. J'ai une appli où j'exploite les données de mon compteur Linky et je n'utilise pas la librairie.
Toujours est-il que comme je le disais cette librairie est superbe et bien documentée, les procédures de migration de V5 à V6 puis de V6 à V7 existent. En revanche, tout cela ne s'adresse pas à des débutants car les mécanismes mis en jeu sont complexes : gestion mémoire par les classes, casting de type, polymorphisme, etc.

Dixit gixy31, post:1524, topic:563058 : "En revanche, tout cela ne s'adresse pas à des débutants".....tu as donc tout compris quand à ma maladresse heureuse (pour le moment)
!!!

@bb06
Arduino, DS3231, compil avec Arduino IDE 2.3.2

Bonjour à tous,

Mon projet avance bien. J'ai enfin tout installé dans le coffret.

Pourriez-vous me donner un avis sur ces grandes différences de valeurs lues lors de la calibration? Est-ce normal que le ph4.01 donne une valeur positive et le ph7 une valeur négative lors de la calibration?

Enfin, il me manque un raccord 1/2 -> 1/4 pour placer ma sonde de pression. Je vois que le système se met en erreur avec la pression (nulle) qui clignote en rouge. Est-ce qu'il serait quand même déjà possible d'utiliser Poolmaster pour la gestion de la pompe en attendant la mise en place de la sonde de pression?

Je pense démarrer le projet pour voir si tout fonctionne et si les informations remontent bien dans Jeedom (je n'ai encore rien configuré de ce coté là). J'activerai l'injection dans un second temps.

Merci pour vos conseils!




la seule réponse que je peux te donné concerne le capteur de pression.
Pour que cela fonction il faut que tu règles le PSI Low Threshold à 0.

Merci. Je vois effectivement dans le code que je peux utiliser l’api pour passer le PSIlow.

J’aimerais encore avoir un avis sur ces valeurs lues à la calibration. Je m’attendais à lire des valeurs plus proches de celles attendues. J’espère ne pas avoir fait une bêtise :wink:

Il me semble que j'avais eu des choses équivalente mais vraiment pas sûr.
Après ta calibration tu peux remettre les sondes dans les solutions et vérifier que tu affiches bien les bonnes valeurs.

1 Like

Bonjour,
De mon coté les sondes pH et Orp semblent fonctionner normalement mais j'ai un petit problème de valeurs probablement lié au mode de traitement. Je suis en électrolyse et mon Orp monte d'environ 50mV à 150mV quand ça démarre puis redescend de manière assez instable le reste de la journée. Les sondes trempées dans des solutions tampon 650mV et 468mV donnent ces valeurs là. Donc je me dis que ma piscine n'est réellement "qu'à" 150mV.... pourtant tout fonctionne bien et elle est propre depuis maintenant 2-3 semaines. Est-ce dû à l'électrolyse? L'ensoleillement pourrait il jouer un rôle sur les variations durant la journée? Est-ce un pb de pool terre (pourtant seau avec l'eau de la piscine donne les mêmes valeurs que dans la piscine). Bref, les valeurs sont bizarre mais l'ensemble à l'air de fonctionner.

Sur un deuxième sujet, je ne comprends pas totalement la direction des divers relais et pompes. Si on veut des pompes avec ON à l'état up (3.3v) il faut changer les defines dans Pump.h. Mais lorsqu'on veut faire de même avec les relais (lumière et relais additionel), où doit-on le changer? Dans mon cas, les pompes s'allument à l'état up du port de l'ESP et les relais 0 et 1 s'allument à l'état down du port de l'ESP. C'est un peu difficile à gérer.

Merci pour votre aide,
Christophe

Les valeurs que tu lis sont celles issues du calcul avec les coefficients en mémoire. Si tu fais "Apply", cela devrait tout remettre dans l'ordre avec les nouveaux coefficients calculés.

Les pompes sont en effet gérées automatiquement dans une classe à part, d'où les "define" associés. Les relais en revanche sont gérés "manuellement" en mode "toggle", et leur activation dépend de la carte relais utilisée. Le code correspondant se trouve dans le traitement des boutons dans nextion.cpp, fonctions "trigger" et dans poolserver.cpp.

Merci pour la réponse. Effectivement c'est ce que j'ai vu ensuite. J'ai cependant un petit problème. Je gère ma pompe via un relais statique pour supprimer le reboot de l'ESP que j'avais précédemment lors de l'arrêt. Plus aucun reboot maintenant mais le relais statique fonctionne en mode high state. Le reste des équipements sont gérés par des relais classiques low state (péristatiques, etc). Donc la classe Pump doit pouvoir gérer les deux modes et je dois donc passer d'un code #define a un argument dans le constructeur de la classe. Je vais ajouter cette modification pour que chaque Pump puisse être configurée en fonction du relais sous-jacent.

J'ai également ajouté la possibilité de la classe Pump de gérer les "momentary switches" quand il faut simuler l'appui sur un bouton. ça fonctionne très bien. La Pump passe bien d'un état OFF à ON puis ON à OFF mais le relais sous jacent s'active et se désactive 500ms plus tard.

Si quelqu'un a ce type de besoin n'hésitez pas à me contacter en MP.
Christophe

D'accord pour la première modif, il suffit de rajouter une interface supplémentaire pour le constructeur avec un argument de plus pour que cela reste compatible avec les versions antérieures.
En revanche, je m'interroge sur la pertinence de gérer des relais dans la classe Pump qui est spécifique à des pompes, avec temps de fonctionnement, interlocking, surveillance de niveau, etc. Il me semble plus pertinent de créer une classe plus simple dédiée aux relais, avec toutes les formes possibles d'activation/désactivation, sans les spécificités des pompes.

Salut à Tous,
J'ai récupéré enfin l'heure sur l'affichage du Nextion :smiley:. Pour cela j'ai recompiler le code source de la branche develop avec Nextion Editor.
@pocrate finalement je n'ai pas eu besoin de mettre les librairies dans les dernières versions.
Je vais me lancer sur la version de Gixy31. Je viens de recevoir tous mes composants.

Merci à @Loulou74 @gixy31 et aux autres pour votre aide.

Avant de te lancer dans la version ESP, installe PlatformIO et familiarise-toi avec. Ma version n'est pas compatible avec l'EDI Arduino : ce ne sont pas des .ino, mais des .cpp et des .h, les variables globales ne sont pas gérées de la même façon et les bibliothèques peuvent être (et sont) différentes.
Je te conseille donc de démarrer avec un projet de test simple, pour découvrir Visual Studio Code et PlatformIO, le fichier de configuration plaformio.ini et les principes de compilation et d'édition des liens pour une plateforme donnée. Sachant toutefois que si tu utilises le même hardware, avec mes fichiers dans GitHub, quelques paramètres à changer dans config.h et normalement tout doit fonctionner. Mais au moindre problème, il vaut mieux avoir d'abord fait quelques manips simples pour savoir où chercher.

Bonjour à tous,

Belle météo en Belgique ces derniers jours pour profiter de la piscine... et pour profiter de Poolmaster qui tourne à merveille.

Voyant que les mesures sont bien stables et que mon taux de stabilisant est bon, je voudrais activer les injections.

Voici cependant encore quelques questions :

  • la piscine faisant 25m3, je peux simplement divisier par deux les deux valeurs Kp, soit OrpKp 9000 et PhKp 1600000?
  • sur l'ESP32, les valeurs stockées dans storage seront conservées même si un changement du code est fait excepté si on change CONFIG_VERSION. Il ne sera donc pas nécessaire de recalibrer après une mise à jour du code?
  • Tout remonte bien dans Jeedom. Je pourrais encore modifier la mise en forme mais toutes les données sont là. Je rencontre cependant un problème pour faire les actions set pHSP et orpSP. Avez-vous utilisé des actions de type curseur?

Merci une fois encore à tous pour le superbe projet.