PoolMaster: gestion et domotisation de ma piscine

Mon raisonnement est le suivant: Il y a peu de chances pour que l'eau gèle à une temp. ext. de 0°, encore moins celle des canalisations (la partie critique) qui sont souvent enterrées ou dans le local technique. De plus il faut beaucoup de transfert d'énergie pour geler une masse d'eau de plusieurs m3, donc je me suis dit que -2° étaient raisonnables. En cherchant sur le net j'ai vu que d'autres utilisaient également une valeur négative

C'est pas faux
Je pense que la temperature est a adapter selon l'endroit
Chez moi, mon local n'est pas protégé du froid et cet hiver, la température est tombé en dessous de 0 sur le matin (donc après la plage de filtration) soit vers -1 ou -2.
Ca a suffit pour geler le filtre a sable qui a fini en surpression au moment de l'allumage de la pompe...

Heureusement, pas de casse.

Pour info, j'ai commencé les simulations sur mon interface PH.

Pour l'instant, je suis assez confiant car :

  • les interfaces chinoise bas de gamme me font peur pour la sonde : pour gérer l'offset, ils envoient un courant non négligeable dans la sonde PH, qui n'est absolument pas faite pour ça

  • en utilisant des AOP rail to rail, je peux gérer un offset à 2,5v sur une amplitude de 5v.

Donc, en théorie, je vais être plus précis que les interfaces sondes PH actuellement vendu qui ont une amplitude de seulement 3v (sans doute car elle doivent être compatible 3.3v)

(bon, après, je vais pouvoir détecter avec une précision de 0.013 ph/bits au lieu de 0.022ph/bits. Je ne sais pas si ce sera très pertinent car c'est au dela de la précision des sondes.
Mais bon, c'est pour le fun !!!)

Je vais m'attaquer au proto !!!!

Bonjour,

J'essaye d'adapter le code pour un wemos mega, pour pouvoir disposer du Wifi (esp8266 en AT firmware) et d'une carte bon marché.

Le wemos se connecte bien au wifi, le mqtt fonctionne, mais le serveur web ne fonctionne pas.
Il est bien en écoute mais plante quand on le sollicite :
"
[WiFiEsp] New client 0
New client ?
New client
GET / HTTP/1.1
Acc[WiFiEsp] TIMEOUT: 249
"
Je me demande si cela n'est pas dû au lancement des tasks ?

Je peux mettre a disposition le source si vous le souhaitez.

Merci pour votre aide.

Bonjour Cseb,

Je n'ai pas d'expérience avec les Wemos.
Essaie peut-être de ne lancer que le serveur web (pas la connexion ethernet client mqtt) pour voir si cela fonctionne.
Sur les tasks je en vois pas trop pourquoi elles seraient problématiques, ce sont juste des timers.

Tu peux me partager le code, je jetterai un oeil

Bonjour le wemos Mega est en fait un clone de l'arduino mega couplé à un Esp8266 via le serial3.
Cela permet d'utiliser l'esp8266 comme un shield WiFi.

Il y a très peu de modification apporté au code source.

J'insère le code des que possible.
Merci

cseb:
Bonjour le wemos Mega est en fait un clone de l'arduino mega couplé à un Esp8266 via le serial3.
Cela permet d'utiliser l'esp8266 comme un shield WiFi.

Il y a très peu de modification apporté au code source.

J'insère le code des que possible.
Merci

Je me demande si l'ESP est capable d'avoir deux connections (server + client) simultanées: Esp8266 client and server at the same time - Networking, Protocols, and Devices - Arduino Forum

Je vais tester cela merci,

Entre temps j'ai reçu mes interfaces ORP et ma sonde ds18B20 et j'ai une autre question :
Comment se fait la calibration du ph?

D'avance merci

Salut,

Pour la calib du pH, regarde la fonction MQTT suivante:

{"PhCalib":[4.02,3.8,9.0,9.11]} -> multi-point linear regression calibration (minimum 1 point-couple, 6 max.) in the form [ProbeReading_0, BufferRating_0, xx, xx, ProbeReading_n, BufferRating_n]

Donc il faut au minimum une solution tampon ("buffer") calibrée, deux ou plus sont conseillées pour plus de précision de calibrage.
Tu mesures chaque solution tampon et tu notes les valeurs mesurées + les valeurs nominales et tu envoies le tout via MQTT au système.

Bonjour, Super travail et merci pour ton partage.

Actuellement j'utilise domogarden pour ma piscine qui fonctionne a merveille, mais ton projet me correspond mieux puisque tout est accessible depuis internet et j'utilise moi même jeedom.

Cependant lors de l'installation je bloque sur la configuration de MQTT. Je rempli l'adress ip que je desir, un login et un mdp, mais en fait je ne sais pas si c'est ça qu'il faut faire. Peut m'indiquer comment faire pour lancer MQTT ou un lien ?

Merci,
Alex

Merci Alex, ça fait toujours plaisir.

Pour la config MQTT, tu dois avoir un broker MQTT (j'utilise Mosquitto) d'installé et l'avoir testé, par ex. via Jeedom (j'utilise le plugin jMQTT) ou bien un client lambda (j'utilise MQTT.fx). Une fois que tu es certain du bon fonctionnement du broker et des credentials (IP, login et mdp), ce sont ceux que tu dois utiliser dans le code de PoolMaster.

Super, j'ai jeedom qui communique avec maintenant. Me reste plus qu'a comprendre ou envoyer les api et créer les virtuels.
Merci.

Alexkids11:
Super, j'ai jeedom qui communique avec maintenant. Me reste plus qu'a comprendre ou envoyer les api et créer les virtuels.
Merci.

Good!
Si Jeedom communique, tu peux maintenant créer un objet PISCINE dans le plugin jMQTT, tu l'inscris au topic "Home/Pool/#" et tu le mets en mode inclusion. A la prochaine réception d'infos au format JSON de la part de PoolMaster, il va alors créer une commande associée. Tu coches la case PARSE JSON et il va la décomposer en commandes individuelles que tu pourras rassembler dans un virtuel par exemple.

Petite subtilité pour décomposer les infos binaires imbriquées dans les variables IO et IO2, regarde la capture d'écran des paramètres Jeedom sur mon GIT

Pour envoyer des commandes à PoolMaster, tu crées des commandes dans ton objet PISCINE du plugin jMQTT de Jeedom, tu choisis le topic "Charmoisy/Pool/API" et tu mets la commande en valeur, par exemple "{"FiltPump":1}" pour allumer la filtration et "{"FiltPump":0}" pour l'éteindre

Bonjour a toi loulou je voulais connaître ton système de domotique et super projet

Merci du coup de main, je suis un peu perdu quand meme. :slight_smile:
J'ai bien deux lignes qui se sont créé.
Home/Pool/err et Home/Pool/status . Mais quand je clique sur PARSE JSON il ne décompose aucune ligne.
J'ai peut être mal compris une consigne. Par contre les API fonctionnent bien en mettant comme topic Home/Pool/API .

zaienj:
Bonjour a toi loulou je voulais connaître ton système de domotique et super projet

Merci Zaienj, mon système domotique s'organise autour de:

  • des "nodes" filaires de type Arduino ethernet (comme le projet PoolMaster)
  • des "nodes" radio (protocole LoraWan) pour les besoins distants et parfois autonomes (sur batterie)
  • un broker MQTT (Mosquitto) qui relie les nodes entre eux et permet de les piloter, s'y connecter, etc.
  • Jeedom (et un peu de NodeRed) pour le dashboard, historisation des données, appli mobile, etc.

Alexkids11:
Merci du coup de main, je suis un peu perdu quand meme. :slight_smile:
J'ai bien deux lignes qui se sont créé.
Home/Pool/err et Home/Pool/status . Mais quand je clique sur PARSE JSON il ne décompose aucune ligne.
J'ai peut être mal compris une consigne. Par contre les API fonctionnent bien en mettant comme topic Home/Pool/API .

PoolMaster publie trois types d'infos sur trois topics:

1/ le statut de connection au broker MQTT sur "Home/Pool/status"
2/ les messages d'erreur sur "Home/Pool/err"
3/ le plus important, les données mesurées toutes les 30secs sur "Home/Pool". Ces données ont la forme d'un message au format JSON imbriqué du style "{"Tmp":818,"pH":321,"PSI":56,"Orp":583,"FilUpT":8995,"PhUpT":0,"ChlUpT":0,"IO":11,"IO2":0}" et c'est ce message qu'il faut parser, pas les autres

On dirait que tu ne reçois pas ce dernier. Es-tu certain que ta sonde de temp. d'eau DS18B20 fonctionne?

Pour débuger, lance le moniteur série (9600 bauds) de l'IDE Arduino pendant l'exécution du programme afin de voir ce qui est publié, et envoie moi ce qui est affiché si nécessaire.

En fait rien n'etait branché dessus, je voulais que tout sois au point avant de tout brancher.
Donc j'ai tout branché a pars l'ecran lcd, mais c'est pas mieux...

sendile
Printed some characters to LCD Screen2: 81
Printed some characters to LCD Screen2: 81
Stored config version: 107. Loading settings from eeprom
107, 0, 0
8, 12, 20, 20, 59
1800, 1800
3600000, 7200000, 0, 0
7.40, 730.00, 0.50, 0.25, 10.00, 27.00, 3.00, 4.23, -2.28, -1268.78, 2718.63, 1.00, 0.00
1330000.00, 0.00, 0.00, 2857.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40
FreeRam: 3646 - Qeued messages: 1
published: Home/Pool/status - online
[memCheck]: 3885b
Payload: {"Tmp":0,"pH":0,"PSI":40,"Orp":0,"FilUpT":0,"PhUpT":0,"ChlUpT":0,"IO":24,"IO2":0} - Payload size: 94
Json parseObject() success -
Payload: {"Tmp":0,"pH":0,"PSI":40,"Orp":0,"FilUpT":0,"PhUpT":0,"ChlUpT":0,"IO":24,"IO2":0} - Payload size: 94
Printed some characters to LCD Screen1: 80
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
sending XML file
2060-07-20 17:18:12 - Error getting temperature from DS18b20_0
Ph: 18.87 - Orp: 0.00 - 2718.63mV
PSI: 3.54 - 3.54Bar
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
2060-07-20 17:18:14 - Error getting temperature from DS18b20_0
Ph: 18.87 - Orp: 0.00 - 2718.63mV
PSI: 2.30 - 2.92Bar
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
Printed some characters to LCD Screen2: 80
Trying to print too many characters to LCD Screen1: 84
sending XML file
2060-07-20 17:18:17 - Error getting temperature from DS18b20_0
Ph: 18.09 - Orp: 0.00 - 2718.63mV
PSI: 29.00 - 11.61Bar

Petite question. J'ai vu que la sonde ds18b20 est branché sur la borne 20 donc sur quels bornes le rtc module est branché ? Car moi j'utiliser les bornes 20 (sda)et 21(scl) pour le cablage.
Merci

Alexkids11:
En fait rien n'etait branché dessus, je voulais que tout sois au point avant de tout brancher.
Donc j'ai tout branché a pars l'ecran lcd, mais c'est pas mieux...

sendile
Printed some characters to LCD Screen2: 81
.
.
.

PSI: 29.00 - 11.61Bar

Bon à première vue je ne vois pas ce qui cloche, il rentre bien dans la fonction PublishDataCallback() et publie les données de mesure. Avant de rajouter plus de fonctions debug dans le code, vérifie bien dans ton code que la variable "PoolTopic" est bien égale à "Home/Pool" et que ton objet jMQTT dans Jeedom a bien souscrit au topic "Home/Pool/#"

Alternativement, utilise le client MQTT.fx, souscrit au topic # et regarde si et sur quel topic les données de mesure sont publiées.

Enfin, tu as un souci avec la sonde de température, as-tu bien renseigné son adresse unique (variables "DS18b20_0" et "sDS18b20_0") dans le code