PoolMaster: gestion et domotisation de ma piscine

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: http://henrysbench.capnfatz.com/henrys-bench/arduino-temperature-measurements/ds18b20-arduino-user-manual-introduction-and-contents/ds18b20-user-manual-part-2-getting-the-device-address/

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.

Bonjour Sylvaindu13,

Dans l'ordre je ferais:

1- installe PoolMaster 2- installe Mosquitto sur ton réseau local, par exemple sur un Raspberry Pi. Éventuellement installe y aussi NodeRed (pour Blynk). Assure toi que PoolMaster est connecté à Mosquitto 3- une fois que tu as des mesures qui remontent (à la fois sur l'écran LCD et sur Mosquitto), tu peux envoyer des commandes de calibrage MQTT à PoolMaster via Mosquitto (via MQTT.fx, NodeRed, Blynk, Jeedom...tu as le choix). On verra à ce moment quoi envoyer et comment. Tu verras c'est assez simple.

Bonjour a tous Je viens de téléverser le projet pour la 1er fois sur mega2650 mais j'ai un soucis de lecture sur le LCD 4x16. Il n'y a pas de retour a la ligne. Voici mon code modifié:

//LCD init. //pin definitions, may vary in your setup const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd(12, 11, 5, 4, 3, 2); bool LCDToggle = true;

Je voulais joindre une photo mais je ne sais pas comment faire. Merci.

Bonjour Maccaire,

Le code est fait pour un LCD 4x20 et non pas 4x16.

A noter aussi que j'ai changé en cours de route de type de LCD, il faut maintenant un LC de type I2C plutôt que avec data bits parallèles

Loic

Merci de votre réponse Loic Je commande sur amazone et je relance le televersement modifie en bus I2C. Pour les swichts et les leds, Je ne comprends pas le cablage. //Front panel push button switch

define PUSH_BUTTON_PIN 40 //Connect a button switch from this pin to ground

define GREEN_LED_PIN 54 //Digital output pin to switch ON/OFF Green LED of push button

define RED_LED_PIN 56 //Digital output pin to switch ON/OFF Red LED of push button

Encore besoin de vos conseils. Merci