Merci pour le lien gixy31! Malheureusement, cette sonde ne semble pas disponible en Amérique. Comme dernier recours, j'ai regardé plusieurs vidéos qui expliquent comment nettoyer une sonde et j'en ai vu une qui utilisait du papier sablé! N'ayant rien à perdre, j'ai essayé cette technique et ma sonde a immédiatement repris de la "sensibilité". Ma théorie est la suivante : lorsque j'ai ajouté la poudre de stabilisateur dans l'écumoire, je n'ai pas fermé la chambre d'analyse et la poudre a "sali" la sonde ORP. En la sablant, j'ai dû enlever la "croute" de stabilisateur qui s'est collé sur l'électrode.
Bonjour,
Qui a réussi à faire fonctionner le PoolMaster avec Domoticz pour avoir des remontées d'éléments et du pilotage ?
J'ai bien mon MQTT sur le PI avec Domitcz + NodeRed, mais la je bloque.
Merci d'avance pour vos réponses.
Bonjour
Je reviens ici poster mes impressions et exprimer mes louanges et remerciements à l'ensemble des participants.
Sans grande expérience Arduino, j'ai pour ma part porté le projet sur un méga2560 avec la version d'un pcb créée par Nico44.
Le travail que vous avez réalisé ici est extraordinaire ! Et correspond en grande partie à mes besoins.
A noter que
J'ai dû utiliser la dernière bibliothèque du Nextion car sinon j'avais une erreur lors de la compilation.
Utilisant NodeRed sur Home assistant, j'ai dû adapter un peu le code au niveau des relais (R1,R2,R3,R4) car il n'y avait pas de retour d'état entre NodeRed et le Nextion. De même j'ai dû recompiler le tft du Nextion afin de faire correpondre à mes besoins
Pour l'heure, je souhaiterai intégrer plusieurs 18b20 et les renvoyer via mqtt mais je sèche, si qq'un à une idée, je suis preneur !!!
Encore merci à vous, j'invite les inexpérimentés comme moi à se lancer !!!!
Salut,
Qu'est-ce que tu ne comprends pas pour rajouter tes 18B20 ? Le principe est de "sérialiser" les valeurs au format JSON dans un buffer et de l'envoyer sous forme de "topic". Il faut donc compléter un "topic" ou en ajouter un nouveau (MEAS3 par exemple).
Le PoolMaster de base utilise la bibliothèque JSON en version 5 pour cela. Dans ma version pour ESP32, j'ai implémenté la version 6, qui est un peu plus simple à utiliser. Tu peux regarder les deux et voir ce qui te convient le mieux.
Bonjour,
J'ai également utilisé le PCB de Nico44.
A ce jour, j'ai pu enfin brancher le montage sur la filtration de la piscine ( sans injection pour le moment car je regarde la fiabilité des capteurs ph, orp, psi ).
J'aurais besoin de savoir :
Comment la température extérieure est elle prise ? ( Je n'ai pas trouver d'adresse 1-wire à saisir dans le code )
Au niveau du PH , on doit soit injecter du PH+ ou du PH- en fonction de l'eau de la piscine.
Par exemple, si l'eau de la piscine à tendance à aller vers le PH- , comment Poolmaster sait que l'on a mis un bidon de PH+ ?
Si on dépasse la consigne de Ph, que va t'il se passer ?
Je vais déjà commencer par ces questions
Si jamais quelqu'un est dispo pour une discussion sur WhatsApp, Messenger ou autre, je peux donner mon numéro de téléphone en MP pour avoir un échange par rapport à mes interrogations sur Poolmaster histoire ne ne pas encombrer le forum.
Merci
Merci de cette réponse Gixy, je pense que je suis dans mes limites (pour le moment) dans la compréhension du one wire et du code du poolmaster.
J'ai déclaré les sondes dans le fichier de config. Puis je suis bloqué dans le fichier du poolmaster. Je vois bien le state machine auquel je rajoute mes adresses de sondes mais après, je ne retrouve le bec dans l'eau....Si une bonne âme dispose de ce savoir et pouvait me mettre sur la piste....
Merci
Sur le pcb de Nico tu as des borniers en bas pour inclure tes sondes One wire (DS18b20 chez moi) . Concernant le reste, il faut en plus déclare l'adresse Mac de la sonde, comme indiqué dans le manuel qu'à très bien fait LouLou74 en début de post (encore mille mercis pour son travail).
Pour retrouver l'adresse Mac de ta sonde, il y a plein de tutos sur arduino qui trainent sur le net
Concernant ce projet, il ne gère qu'une pompe de ph (généralement sur une piscine c'est plutôt du ph moins que l'on doit utiliser. En tous cas, c'est mon cas mais je n'en fais pas une généralité par manque d'expérience).
Bon courage
Nico44, m'a donné son code, j'ai renseigné l'adresse MAC de ma sonde DS18B20 pour la température de l'eau.
Le problème c'est que dans le code je ne sais pas par quel moyen est relevé la température extérieure pour gérer la fonction hivernage. Je trouve dans le code des références comme : TempExt et TempExternal mais par quoi cela est défini comme composant ? J'aimerais adressé une sonde DS18B20 pour définir cette valeur mais je ne sais pas comment.
Pour ce qui est du PH, actuellement j'ai un régulateur de ph du commerce, sur le régulateur j'ai le choix entre PH+ et PH-, en fonction de l'environnement de l'eau, celle ci est soit "basique"' soit acide" malgré le traitement du gestionnaire de l'eau elle à toujours une tendance et nous nous avons un point de consigne. Cette année je suis en PH+ car l'eau du réseau est inférieur à 7.4 donc à chaque mise à niveau, il me faut rajouter du PH+. L'an dernier c'était plutot l'inverse, l'eau avait tendance à dériver vers le + donc il me fallait compenser avec du PH-. ( Pourtant j'ai un TAC qui est bon )
Du coup je ne sais pas comment fonctionne Poolmaster au niveau du traitement PH, car on ne choisi pas le type du produit (PH+ ou PH-) . Dans mon cas si je releve un PH à 7.2 est que ma consigne est à 7.4 comment réagit-il si je met un bidon de PH+ ?
PoolMaster ne gère le pH que dans un sens. Ce sens est défini dans le code, à l'initialisation des fonctions PID (DIRECT pour du pH+ ou REVERSE pour du pH-).
Si le pH est trop haut en configuration DIRECT, il ne se passera rien tant que le pH sera supérieur à la consigne, et inversement.
Si la qualité de l'eau varie dans les deux sens, il ne serait pas difficile de rajouter une pompe supplémentaire pour traiter les variations dans les deux sens. Mais cette situation doit être quand même rare...
Pour ce qui est des sondes complémentaires de température, je suis dans la même problématique. Seule la température de l'eau remonte chez moi via OneWire.
Concernant la température extérieure, il me semble qu'il faille pour l'heure la remonter via mqtt.
L'inclusion de sondes onewire complémentaire serait un plus, mais là je sèche !!
Dans ma version pour ESP32 il y a deux sondes 18B20 (T° eau et air). Vous pouvez y jeter un oeil pour vous en inspirer ensuite dans la version Arduino.
Pour l'ajout de la sonde température extérieure, voici ce que j'ai fait et qui fonctionne chez moi:
Update du 20.07/2021
ajout de la 2éme sonde dans le fichier config
//MAC Address of DS18b20 external temperature sensor
DeviceAddress DS18b20_1 = { 0x28, 0xA3, 0x4A, 0x75, 0xD0, 0x01, 0x3C, 0xA1 };
String sDS18b20_1;
Ajout dans Poolmaster
Modifier la fonction pour ajouter la 2eme sonde
//Update temperature, Ph and Orp values
void getMeasures(DeviceAddress deviceAddress_0 , DeviceAddress deviceAddress_1)
{
Serial << TimeBuffer << F(" - ");
//Water Temperature
samples_Temp.add(sensors_A.getTempC(deviceAddress_0));
storage.TempValue = samples_Temp.getAverage(10);
if (storage.TempValue == -127.00) {
Serial << F("Error getting temperature from DS18b20_0") << _endl;
} else {
Serial << F("DS18b20_0: ") << storage.TempValue << F("°C") << F(" - ");
}
//External Temperature
storage.TempExternal = sensors_A.getTempC(deviceAddress_1);
if (storage.TempExternal == -127.00) {
Serial << F("Error getting temperature from DS18b20_1") << _endl;
} else {
//Serial << F("DS18b20_1: ") << storage.TempExternal << F("°C") << F(" - ");
Serial << F("External Temperature: ") << storage.TempExternal << F("°C") << F(" - ");
}
////////////////////////gettemp state machine///////////////////////////////////
//Init DS18B20 one-wire library
void gettemp_start()
{
//String containing MAC address of temp sensor to be written to XML file
sDS18b20_0 = F("<DS18b20_0 Mac='0x28, 0xA3, 0x4A, 0x75, 0xD0, 0x01, 0x3C, 0xA6'>");
sDS18b20_1 = F("<DS18b20_1 Mac='0x28, 0xA4, 0x83, 0x37, 0x0D, 0x00, 0x00, 0xC5'>");
// Start up the library
sensors_A.begin();
// set the resolution
sensors_A.setResolution(DS18b20_0, TEMPERATURE_RESOLUTION);
sensors_A.setResolution(DS18b20_1, TEMPERATURE_RESOLUTION);
//read and print temperature measurement
void gettemp_read()
{
sprintf(TimeBuffer, "%d-%02d-%02d %02d:%02d:%02d", year(), month(), day(), hour(), minute(), second());
getMeasures(DS18b20_0, DS18b20_1);
gettemp.next(gettemp_request);
}
Rajout de la température à envoyer vers Mqtt
Remplacer les lignes par les suivantes:
//send a JSON to MQTT broker. /!\ Split JSON if longer than 100 bytes
//Will publish something like {"Tmp":818,"TempExternal":818,"pH":321,"PSI":56,"Orp":583,"FilUpT":8995,"PhUpT":0,"ChlUpT":0}
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
root.set<int>(F("Tmp"), (int)(storage.TempValue * 100));
root.set<int>(F("TempExternal"), (int)(storage.TempExternal * 100));
root.set<int>(F("pH"), (int)(storage.PhValue * 100));
root.set<int>(F("PSI"), (int)(storage.PSIValue * 100));
root.set<int>(F("Orp"), (int)storage.OrpValue);
root.set<unsigned long>(F("FilUpT"), FiltrationPump.UpTime / 1000);
root.set<unsigned long>(F("PhUpT"), PhPump.UpTime / 1000);
root.set<unsigned long>(F("ChlUpT"), ChlPump.UpTime / 1000);
Vérifiez si la remontée se fait via le debug serie avec le logiciel arduino, vous devriez voir les 2 sondes
Pensez à refaire une inclusion sur votre serveur mqtt pour rajouter la remontée de la temperature
En test chez moi depuis 2 semaines
Merci à vous deux pour cette aide.
J'avais déjà tenté de regarder ton code, gixy31 mais cela ne m'a pas aidé.
Pour ce qui est de la marche à suivre de ntls2000, je l'ai appliqué telle que, verifié et revérifié et j'ai une P***** d'erreur
exit status 1
'deviceAddress_1' was not declared in this scope
Pour info mes sonde sont toutes montées évidemment sur le même port !
Enfin sur ton cette partie du code
N'est ce pas DS18b20_1 sur la dernière ligne ? (ca ne change rien à mon erreur de toutes façon) !!!
Une idée ??? Merci
J'avais commencé à travailler dessus également, Est ce que tu as rajouté également ça dans le code ? (La deuxième sonde ?)
//read and print temperature measurement
void gettemp_read()
{
sprintf(TimeBuffer, "%d-%02d-%02d %02d:%02d:%02d", year(), month(), day(), hour(), minute(), second());
getMeasures(DS18b20_0, DS18b20_1);
gettemp.next(gettemp_request);
}
Ca y est, ca marche !!
Les indications de ntls2000 m'ont mis sur la voie.
J'avais toutefois une erreur dans le debug (exit status 1,too few arguments to function 'void getMeasures(uint8_t*, uint8_t*)') et j'ai pas mal cherché pour modifier la suite du void gettemp_read, afin que ca fonctionne
Je viens de voir que nico44, que je salue au passage, avait donné la bonne solution, j'aurais du revenir sur le topic avant !!!
Au fait Nico, comment tu les a monté ????
Encore merci à vous tous !
oui, effectivement, j'ai aussi oublié de l'indiqué
Mon post initial pour l'ajout de la 2éme sonde a été modifié, j'espère que je n'ai rien oublié cette fois
Salut! Je l'ai branché en parallèle de la bobine du contacteur ou relais de puissance. Depuis, plus de soucis de reboot de l'Arduino.
Bonjour,
tout d'abord un grand merci pour votre aide, j'ai réussi à mettre en service une sonde DS18B20 pour mesurer la température extérieure.
Je suis à la recherche d'un coffret électrique pour y ranger l'électronique de Poolmaster et le contenu de mon ancien coffret électrique piscine et les 2 pompes de dosage, si vous avez une bonne adresse et une référence pas trop onéreuse, je suis preneur.
Ensuite j'ai 2 pompes péristaltique mais avec un débit de 30l/h, ce qui est plutôt énorme, à savoir que je peut réduire le débit avec un potentiomètre au alentours de 10l/h. Est ce que ce n'est pas trop risqué d'avoir un débit aussi élevé en cas de plantage du système ou de panne au niveau du relais car en 2 heures les pompes peuvent vider les bidons ?
Ensuite j'ai une question par rapport au PID:
Comment est calculer Kp pour le chlore ? j'ai un volume d'eau de 45m3, existe t'il une formule de calcul car j'ai trouvé pour le ph mais pas pour le chlore ?
Gixy31, dans ta réponse ,un peu plus haut sur le fonctionnement du dosage du Ph, tu parles d'initialisation du PID, faut-il appeler une fonction particulière via MQTT ? Ou cela ce fait automatiquement dès la mise en route de Poolmaster ?
Merci
Le mien, j'ai trouvé une bonne occasion sur le boncoin, il restait du matos dedans contacteur, goulotte ... ect. Il est assez gros mais j'ai pu tout intégrer dedans.
Si tu as les mêmes pompes doseuse que les miennes j'ai trouvé un valeur en dessous dans les 16L/h ( Est ce que ca vient du type de tuyau? du type de fluide ? plus épais que de l'eau ...)
Poste #459 tu as l'explication de Gixy31, que je remercie , j'ai fait comme ça , il faut peaufiner ensuite.
Il y a juste le PSI que j'ai du mal à calibrer je ne sais pas pourquoi. surtout pour le 0 quand il n'y a pas de pression.
Coffret Régulation Piscine Arduino:
Merci N1CO44, malheureusement je n'en trouve pas en occasion à proximité de mon domicile. Je vais attendre que l'occasion se présente et en attendant je vais faire une installation provisoire afin de valider le fonctionnement de la régulation.
Par contre peut tu me donner tes valeurs kp pour le ph et l'orp, vu qu'on a les mêmes pompes et il me semble que le volume de la piscine est quasiment similaire.
J'ai trouvé le kp pour le ph mais je ne trouve pas pour le l'orp.
J'ai un volume de 45m3, je part sur du 30l/h pour la pompe péristaltique et le bidon de chlore indiqué 0.2l/10m3 pour 1mg/l.
Je trouve un kp de 96000, et cela me semble incohérent par rapport au kp de Gixy31 qui indique 18000 dans un de ces postes.