[TUTORIEL] Connaitre la capacité restante de sa cuve eau de pluie

As-tu essayé de reconfigurer l’intégration MQTT dans Gladys ?
Simplement, changer le mot de passe puis faire ‹ enregistrer ›.
Regarde ensuite l’état du container…

OK merci pour l’info

J’ai un ami qui est passé et il a constaté que mosquitto était installé 2x
C’était l’origine du problème !
:wink:

1 « J'aime »

T’en a un pour zigbee2mqtt donc normal :neutral_face:

Faudrai en dire en peu plus.

Oui zigbee2mqtt mais également MQTT(Mosquitto)
Capture
D’après mon ami j’avais également installé mosquitto une 2ème fois. C’était là le problème.
En supprimant un des deux Mosquitto plus de soucis !

Du coup c’est fonctionnel ou pas ? tu as bien une remontée des infos

Oui c’est fonctionnel
Merci à tous
:wink:

1 « J'aime »

Bonjour a tous,

je me suis lancé mais apres plusieurs essai j’ai toujours ca dans le moniteur serie :

ets Jan 8 2013,rst cause:4, boot mode:(3,6)
12:58:34.798 →
12:58:34.798 → wdt reset
12:58:34.798 → load 0x4010f000, len 3424, room 16
12:58:34.798 → tail 0
12:58:34.798 → chksum 0x2e
12:58:34.798 → load 0x3fff20b8, len 40, room 8
12:58:34.798 → tail 0
12:58:34.798 → chksum 0x2b
12:58:34.798 → csum 0x2b
12:58:34.798 → v000456d0
12:58:34.798 → ~ld
12:58:34.892 → ⸮a⸮n⸮r⸮⸮n|⸮ l ⸮ lb brl⸮nb⸮n l⸮rl⸮l⸮ ⸮

j’ai bien vu le post 84, j’ai fait la modif sur le code avec le while (!serial) mais ca n’a rien changé, seul mettre l’initialisation des broches en commentaire me connecte bien au wifi et mqtt mais du coup ca ne calcul rien lol

merci d’avance

Salut @Tornes

Tu as quoi comme carte ? une D1 mini ?

oui c’est bien ca, je viens d’arriver a un resultat en modifiant le code comme ceci :

seulement la valeur renvoyé est toujours de 100 peu importe l’eloigement du capteur :confused: j’ai bien verifie les broche sont bien au bon endroit (D6 et D7)

Ps: si je prenais le code donne en 1 poste ça ne fonctionnait pas :confused:

Ou tu vois un résultat de 100 ?

T’as capture du moniteur de série n’affiche rien. Tu as bien flashé ta carte car j’ai l’impression qu’elle n’est pas reconnu.

le resultat je le vois dans mqtt explorer.

je suppose que oui etant donné que le moniteur affiche bien wifi/mqtt ok et que j’ai des remonté mqtt dans le bon topic

EDIT : j’ai essaye different type de carte sans succes avec le code donné en premier page en revanche avec celui de Doudy ca fonctionne simplement j’ai toujours la meme valeur :confused:

Tu peux copier l’integralité du code en utilisant les balises stp pour regarder

Voici :

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

/* WIFI */
#define wifi_ssid "XXX" // votre ssid wifi
#define wifi_password "XXX" // votre mot de passe wifi


/* MQTT */
#define mqtt_server "XXXXX"
#define mqtt_user nullptr            // username
#define mqtt_password nullptr // mot de passe MQTT
#define gladys_topic "gladys/master/device/mqtt:jardin:capteur-ultrason/feature/mqtt: jardin:capteur-ultrason:quantite/state"
#define mqtt_cuve "mqtt:jardin:capteur-ultrason"     //Topic capteur cuve

/* Buffer qui permet de décoder les messages MQTT reçus */

char message_buff[100];
long lastMsg = 0;   //Horodatage du dernier message publié sur MQTT
long lastRecu = 0;
bool debug = false;  //Affiche sur la console si True

/* Constantes pour les broches */
const byte TRIGGER_PIN = 7; // Broche TRIGGER
const byte ECHO_PIN = 6;    // Broche ECHO

/* Constantes pour le timeout */
const unsigned long MEASURE_TIMEOUT = 25000UL; // 25ms = ~8m à 340m/s

/* Vitesse du son dans l'air en mm/us */
const float SOUND_SPEED = 340.0 / 1000;

//Création des objets
WiFiClient espClient;
PubSubClient mqttclient(espClient);

void setup() {

/* Initialise le port serie */

Serial.begin(115200); //Facultatif pour le debug
while (! Serial){
delay(1);
/* Initialise les broches */

pinMode(TRIGGER_PIN, OUTPUT);
digitalWrite(TRIGGER_PIN, LOW); // La broche TRIGGER doit être à LOW au repos
pinMode(ECHO_PIN, INPUT);
}
setup_wifi(); //On se connecte au réseau wifi
mqttclient.setServer(mqtt_server, 1883); //Configuration de la connexion au serveur MQTT
}
void setup_wifi() {
  delay(10);
  Serial.println("\r\n\r\nxxxxxxxxxxx START xxxxxxxxxxxxxxx");
  Serial.print("Connexion à ");
  Serial.println(wifi_ssid);
  //WiFi.disconnect();
  //WiFi.mode(WIFI_STA);
  WiFi.begin(wifi_ssid, wifi_password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  
  Serial.println(".");
  Serial.print("Connexion WiFi établie ");
  Serial.print("=> Adresse IP : ");
  Serial.println(WiFi.localIP());
}


//Reconnexion
void reconnect() {
Serial.print("Test MQTT : ");  
Serial.print("=> Adresse IP : ");
Serial.println(mqtt_server);
  //Boucle jusqu'à obtenir une reconnexion
  while (!mqttclient.connected()) {
    Serial.print("Connexion au serveur MQTT...");
    if (mqttclient.connect("ESP8266Client", mqtt_user, mqtt_password)) {
      Serial.println("OK");
    } else {
      Serial.print("KO, erreur : ");
      Serial.print(mqttclient.state());
      Serial.println(" On attend 5 secondes avant de recommencer");
      delay(5000);
    }
  }
}


void loop() {

  if (!mqttclient.connected()) {
    reconnect();
  }
  mqttclient.loop();

  long now = millis();

  /*Envoi d'un message par minute*/

  if (now - lastMsg > 1000 * 60) {
    lastMsg = now;

    /* 1. Lance une mesure de distance en envoyant une impulsion HIGH de 10µs sur la broche TRIGGER */

    digitalWrite(TRIGGER_PIN, HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIGGER_PIN, LOW);

    /* 2. Mesure le temps entre l'envoi de l'impulsion ultrasonique et son écho (si il existe) */

    long measure = pulseIn(ECHO_PIN, HIGH, MEASURE_TIMEOUT);

    /* 3. Calcul la distance à partir du temps mesuré */

    int distance_mm = measure / 2.0 * SOUND_SPEED;
    float c = 2600 - distance_mm; // TRES IMORTANT Remplacer 2000 par la hauteur de votre cuve
    c = c / 2600;
    c = c * 100;

    //Inutile d'aller plus loin si le capteur ne renvoi rien
    if ( isnan(c)) {
      Serial.println("Echec de lecture ! Verifiez votre capteur HRC-04");
      return;
    }

    if ( debug ) {
      Serial.print("Cuve : ");
      Serial.print(c);
    }
    mqttclient.publish(gladys_topic, String(c).c_str(), true);   //Publie le % de la cuve sur le topic dans gladys
  }
}

ça me parait bon.

Ton capteur à ultrasons tu l’as déjà testé sur un autre code par exemple pour une mesure ou autre voir si il est bien fonctionnel ?

Non, c’est ce que je vais faire du coup histoire de valider son fonctionnement.

Merci en tout cas pour la vérification du code, cependant comment expliquer que j’ai eus a le modifier par rapport au tient ?

En effet ce n’est pas logique. Il faudrait que je le test de nouveau sur une installation fraiche pour vérifier car je l’avais pas mal bidouillé à l’époque

Tu peux me confirmer qu’au niveau du moniteur de série tu as bien la connexion établie mais que après il t’affiche que cuve : 100 en boucle toutes les minutes

Sur le moniteur il m’affiche connexion wifi établi, mqtt Ok mais c’est tout. Le 100 je le vois dans les message mqtt qu’il envoi.

Tu devrais avoir ensuite « cuve : … » avec la valeur qui remonte de ton capteur. C’est pas normal.

Ah oki … ton code est identique à celui posté en premier poste ?