PoolMaster: gestion et domotisation de ma piscine

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

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

Mon hardware est un CONTROLLINO, donc pas un Arduino 2560. Il faut donc que tu revoies les affectations de la sonde de temp, du RTC, voire des relais et autre. Si tu veux bien fais moi un retour sur tes affectations finales et je l'intègrerai dans le code pour ceux qui ont un Arduino 2560

[edit] en regardant mon code actuel je vois que j'avais déjà réaffecté la sonde de temp à la pin 6 car je suis en train de tester un périphérique I2C et donc j'avais besoin de la pin 20

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

Encore merci pour ton aide,
Mon objet jMQTT est bien souscrit au topic "Home/Pool/#" et dans le code j'ai la variable PoolTopic = "Home/Pool" . Je vais la modifier pour PoolTopic = "Home/Pool/#" .

Pour ma sonde je pense que c'est un problème physique est non logiciel. Je réessayerai le code et la sonde se soir ou demain.

Pour les pins adressé voila ce que j'ai fait .

//Data wire is connected to input digital pin 20 on the Arduino
#define ONE_WIRE_BUS_A 20

#define FILTRATION_PUMP 38
#define PH_PUMP 36
#define CHL_PUMP 42

//Digital input pins connected to Acid and Chl tank level reed switches
#define CHL_LEVEL 28
#define PH_LEVEL 30

//Analog input pins connected to Phidgets 1130_0 pH/ORP Adapters.
//Galvanic isolation circuitry between Adapters and Arduino required!
#define ORP_MEASURE A9
#define PH_MEASURE A8

//Analog input pin connected to pressure sensor
#define PSI_MEASURE A7

Il me manque juste le rtc module je ne sais pas ou le brancher.

Du coup tu branches la sonde sur la pin 6:

#define ONE_WIRE_BUS_A 6

Et le RTC sur les pins 20 et 21 du bus I2C

Pour les topics il ne faut pas ajouter la "wildcard" # dans le code, juste dans les clients qui souscrivent au topic (Jeedom et MQTT.fx par ex.).
Si tu ne veux pas essayer MQTT.fx, essaye de faire souscrire Jeedom au topic "#" pour voir tout ce qui passe par le broker Mosquitto (via le log temps réel de Jeedom par ex.)

Bonjour Loulou74, j'ai pris mon temps pour essayer d'avancé, voila ce que j'ai fait.

J'ai installé MQTT.fx, la il ma trouvé 3 topics : Home/Pool/API , Home/Pool/status et Home/Pool/Err .
Je retrouve les mêmes sur JMQTT .
Ce qui est bizzare c'est que sur JMQTT ou MQTT.fx le status est offline alors que depuis le moniteur série de l'arduino le status est online.
Quand je regarde les logs sur jeedom et ça tourne en boucle.

[2019-05-04 09:48:05][DEBUG] : daemon starts, pid is 26980
[2019-05-04 09:48:05][INFO] : Connect to mosquitto: Host=localhost, Port=1883, Id=jeedom
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending CONNECT
[2019-05-04 09:48:05][INFO] : Equipment Home: subscribes to "Home/#" with Qos=1
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending SUBSCRIBE (Mid: 1, Topic: Home/#, QoS: 1, Options: 0x00)
[2019-05-04 09:48:05][INFO] : Subscribes to the API topic "jeedom/api"
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending SUBSCRIBE (Mid: 2, Topic: jeedom/api, QoS: 1, Options: 0x00)
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received CONNACK (0)
[2019-05-04 09:48:05][DEBUG] : mosquitto: connection response is Connection Accepted.
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending PUBLISH (d0, q1, r1, m3, 'jeedom/status', ... (6 bytes))
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received SUBACK
[2019-05-04 09:48:05][DEBUG] : mosquitto: topic subscription accepted, mid=1
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received PUBLISH (d0, q1, r1, m1, 'Home/Pool/status', ... (7 bytes))
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending PUBACK (m1, rc0)
[2019-05-04 09:48:05][DEBUG] : Payload offline for topic Home/Pool/status
[2019-05-04 09:48:05][INFO] : -> Home|Poolstatus offline
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received PUBLISH (d0, q1, r1, m2, 'Home/Pool/Err', ... (32 bytes))
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending PUBACK (m2, rc0)
[2019-05-04 09:48:05][DEBUG] : Payload Trying to print 83 chars to LCD1 for topic Home/Pool/Err
[2019-05-04 09:48:05][INFO] : -> Home|PoolErr Trying to print 83 chars to LCD1
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received PUBLISH (d0, q1, r1, m3, 'Home/Pool/API', ... (10 bytes))
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom sending PUBACK (m3, rc0)
[2019-05-04 09:48:05][DEBUG] : Payload {"Mode":0} for topic Home/Pool/API
[2019-05-04 09:48:05][INFO] : -> Home|PoolAPI {"Mode":0}
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received SUBACK
[2019-05-04 09:48:05][DEBUG] : mosquitto: topic subscription accepted, mid=2
[2019-05-04 09:48:05][DEBUG] : mosquitto: Client jeedom received PUBACK (Mid: 3, RC:0)
[2019-05-04 09:48:06][DEBUG] : mosquitto: disconnectedunexpectedly
[2019-05-04 09:48:06][WARNING] : exception thrown by MQTT client: The connection was lost.
[2019-05-04 09:48:06][INFO] : relance le démon dans 15s

Et pour ce qui est de la sonde j'ai toujours la meme erreur : Error getting temperature from DS18b20_0
Alors j'ai changé de pin, j'ai changé de sonde, j'ai vérifier son fonctionnement en installant un code simple pour pouvoir la lire. Je ne comprends pas d'ou viens le problème.

Merci Loulou74 du coup de main pour résoudre mes problemes, mais je vais abandonné car trop de soucis.

Alexkids11:
Et pour ce qui est de la sonde j'ai toujours la meme erreur : Error getting temperature from DS18b20_0
Alors j'ai changé de pin, j'ai changé de sonde, j'ai vérifier son fonctionnement en installant un code simple pour pouvoir la lire. Je ne comprends pas d'ou viens le problème.

Merci Loulou74 du coup de main pour résoudre mes problemes, mais je vais abandonné car trop de soucis.

Dommage mais je comprends.
J'ai pas encore testé mon code sur la config Arduino Mega 2560 donc je ne suis pas surpris qu'il y aie quelques bugs à résoudre.

Alexkids11:
Et pour ce qui est de la sonde j'ai toujours la meme erreur : Error getting temperature from DS18b20_0
Alors j'ai changé de pin, j'ai changé de sonde, j'ai vérifier son fonctionnement en installant un code simple pour pouvoir la lire. Je ne comprends pas d'ou viens le problème.

Merci Loulou74 du coup de main pour résoudre mes problemes, mais je vais abandonné car trop de soucis.

une question toute bête mais je la pose quand même : tu as bien changé l'adresse de la sonde DS18b20 ?
(ligne 277)

DeviceAddress DS18b20_0 = { 0x28, 0x92, 0x25, 0x41, 0x0A, 0x00, 0x00, 0xEE };
Chaque sonde a sa propre adresse qui permet d'avoir plusieurs sondes sur le même pin

Autre question : il y a bien la résistance de 4.7k de tirage sur le pin de data

TheLapin:
une question toute bête mais je la pose quand même : tu as bien changé l'adresse de la sonde DS18b20 ?
(ligne 277)

DeviceAddress DS18b20_0 = { 0x28, 0x92, 0x25, 0x41, 0x0A, 0x00, 0x00, 0xEE };
Chaque sonde a sa propre adresse qui permet d'avoir plusieurs sondes sur le même pin

Autre question : il y a bien la résistance de 4.7k de tirage sur le pin de data

C'est peut être pas bête du tout comme question. Non je n'ai pas changé l'adresse de la sonde, je peux mettre quoi comme adresse car sur ma sonde je n'ai rien d'ecrit.

Oui il y a bien la résistance de 4.7kohms .

Apres ma sonde fonctionne bien avec d'autres codes, mais il n'y a pas d'adresse a mettre.

Alexkids11:
C'est peut être pas bête du tout comme question. Non je n'ai pas changé l'adresse de la sonde, je peux mettre quoi comme adresse car sur ma sonde je n'ai rien d'ecrit.

Oui il y a bien la résistance de 4.7kohms .

Apres ma sonde fonctionne bien avec d'autres codes, mais il n'y a pas d'adresse a mettre.

Merci Lapin.
@Alexkids11: il est bien écrit dans la doc (section "compatibility") et dans le code qu'il faut mettre l'adresse MAC de ta sonde. C'est important car si par la suite tu voulais ajouter une seconde sonde, par ex. pour la temp. ext., et bien sans la bonne adresse par sonde, tu ne saurais pas discriminer laquelle a retourné quelle temp. (à part si elles sont sur des pins différents).

Il y a pléthore de sketchs sur le net pour trouver l'adresse de ta sonde, par ex. ici: capnfatz.com - capnfatz Resources and Information.

Pour moi je pensais que c'etait une adresse a choisir comme pour l'adresse mac du shield ethernet, donc je ne m'etais pas posé la question.

Mais effectivement j'ai fais le boulé et maintenant j'ai bien la valeur de la sonde.

Me reste plus qu'a résoudre la communication, du coup ça me fait penser que j'ai du passer a coté d'un truc logique pour vous. Mais pas pour moi :).
Encore merci pour votre patience.

@Alexkids11: j'ai ajouté (version 3.0.2) un peu de code debug autour de la fonction MQTTClient.Publish()
Si tu as encore le courage tu peux essayer cette nouvelle version et me donner ce que le port série de dit
A+

J'ai télécharger le nouveau fichier et en le configurant j'ai laissé MqttServerClientID = "ArduinoPool2"; .
Je l'avait modifier sur l'ancienne version. Donc avant de téléversé la nouvelle version je modifie la configuration de JMQQT en remettant ArduinoPool2.
Je relance le demon et la il me trouve une nouvelle entrée que je peux parsé, avec toute les valeurs.
J'ai tout d'accessible.

Je téléverse la nouvelle version, je n'ai plus les info sur JMQQT. j'ai l'entrée Poolstatus offline.
Je remet MqttServerClientID = "Jeedom" , uniquement dans l'arduino et la ça me remet Poolstatus online avec toutes les infos accessibles.
Bref ça fonctionne avec la nouvelle et l'ancienne version en laissant le MqttServerClientID différent de la configuration de JMQQT.

Petite question : sur la nouvelle version ou peut on configuer les pins de l'écran lcd ? Je n'ai pas trouvé .

En tout cas, encore merci.

Un truc important en MQTT est de ne pas avoir plusieurs clients qui se connectent au broker MQTT (Mosquitto) avec le même ID. Ton Arduino ET Jeedom sont deux clients distincts donc ils ne doivent pas avoir le même ID.
Donc tu laisses MqttServerClientID = "ArduinoPool2" (ou un autre nom quelconque) dans ton Arduino et tu mets autre chose dans jMQTT.

Pour les pins du lcd, j'ai changé le code car j'utilise maintenant un LCD qui communique via le port I2C.
Si ton LCD n'est pas I2C, change la ligne 192:

LiquidCrystal_I2C lcd(0x27,20,4);  // set the I2C LCD address to 0x27 for a 20 chars and 4 lines display

par l'ancien code:

//pin definitions, may vary in your setup
const int rs = 9, en = 10, d4 = 11, d5 = 12, d6 = 13, d7 = 42;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Merci pour cette éclaircissement, tout s'explique, depuis le début j'avais tout faux.

Bonjour à tous,
Avant tout, merci à toi Loulou74 pour ce super projet.

J'avais longtemps hésité par faute de connaissances dans le domaine de la domotique pour monitorer ma piscine avec mon smartphone ou PC.
Mais à la découverte de ton projet je me suis vite motivé et c'est chose presque faite...

J'ai donc réuni tous les composants nécessaires à la réalisation de la gestion de ma piscine.
Cependant, étant novice en Domotique j'ai beaucoup de mal à faire communiquer tout ce petit monde.
En parcourant les différents posts j'ai donc installé Mosquitto broker sur mon PC (sous W10) + MQTT.fx malheureusement par manque d'expérience et d'informations je n'arrive pas a communiquer avec MQTT.fx en ayant préalablement renseigné le MQTT broker profile settings avec le login, password et IP .

Pour info, il n' y a que le shield ethernet sur le Mega2560 pour tester la communication sur mon PC et ma carte Ethernet W5100 est bien reconnue par mon routeur.
J'installerai plus tard le module RTC , capteur de T° etc...

Il y aurait il un tuto qui pourrait m'aider de A à Z ou bien pourrait on dire ce que j'ai oublié d'installer ou faire ou bien suis-je entrain de faire fausse route tout simplement.

Par avance, merci pour toutes les informations que vous pourrez m'apporter.
voici ci-après un extrait du log du moniteur série.

22:43:00.300 -> Stored config version: 108. Loading settings from eeprom
22:43:00.304 -> 108, 0, 0
22:43:00.304 -> 8, 12, 20, 20, 59
22:43:00.328 -> 1800, 1800
22:43:00.328 -> 3600000, 7200000, 0, 0
22:43:00.363 -> 7.40, 730.00, 0.50, 0.25, 10.00, 27.00, 3.00, 4.23, -2.28, -1000.00, 2500.00, 1.00, 0.00
22:43:00.467 -> 1330000.00, 0.00, 0.00, 2857.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40
22:43:03.102 -> Failed to connect to the MQTT broker
22:43:03.135 -> [memCheck]: 3947b
22:43:04.101 -> Failed to connect to the MQTT broker
22:43:04.135 -> Failed to connect to the MQTT broker
22:43:06.511 -> 2063-03-16 17:18:13 - Error getting temperature from DS18b20_0
22:43:06.579 -> Ph: 7.27 - Orp: 2.12 - 378.79mV
22:43:06.613 -> PSI: 15.43 - 15.43Bar
22:43:08.922 -> 2063-03-16 17:18:16 - Error getting temperature from DS18b20_0
22:43:08.990 -> Ph: 5.80 - Orp: 1.68 - 601.17mV
22:43:09.025 -> PSI: 11.34 - 13.38Bar
22:43:10.745 -> Trying to print too many characters to LCD Screen1: 83
22:43:11.332 -> 2063-03-16 17:18:18 - Error getting temperature from DS18b20_0

Bonjour Sylvaindu13,

On dirait que ton souci vient plus de ta config broker MQTT que de PoolMaster.
Avant tout je suis étonné que tu l'aies installé sur un PC Win10. Ton PC tourne en continu? Perso je l'aurais plutôt installé sur un Raspberry Pi ou une VM sur un NAS. Ensuite, MQTT.fx sur le PC, ok, car tu l'utilises rarement, et pour du debug principalement. Il y a foultitude de tutos sur Mosquitto. Donc je commencerais par la.

Bonjour Loulou74
Merci beaucoup pour ta réponse.
Effectivement, c'était juste un problème d'IP.
il fallait que je mette l'adresse du PC sur lequel était installé le broker MQTT, ça fonctionne maintenant.
Sinon, oui je compte investir dans un NAS ultérieurement.
C'était seulement un test pour que je comprenne comment ça fonctionne. Ensuite je souhaiterai monitorer le tout avec mon smartphone, je pense utiliser BLINK ou un autre ...
Honnêtement je ne sais pas quoi utiliser car je n'ai pas encore bien compris à quel moment on calibre les sondes ORP et PH et quel client utiliser pour le faire.

Bonne soirée.