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

bonjour.
merci pour ce tuto ,mais âpres mise en œuvre rien ne fonctionne
dans le moniteur série j’ai de point d’interrogation
merci a celui qui prendra le temps d’y repondre

Bonjour @oli

Ton téléversement s’est bien passé ? tu es bien en 9600 bauds dans ton moniteur de série ? tu as que des points d’interrogations ou pleins de caractères différents ?

bonjour @jerome
voici mon televersement
. Variables and constants in RAM (global, static), used 28728 / 80192 bytes (35%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1496 initialized variables
╠══ RODATA 1312 constants
╚══ BSS 25920 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 60363 / 65536 bytes (92%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 27595 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 250036 / 1048576 bytes (23%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 250036 code in flash
esptool.py v3.0
Serial port COM3
Connecting…
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: 34:94:54:8e:17:ce
Uploading stub…
Running stub…
Stub running…
Changing baud rate to 460800
Changed.
Configuring flash size…
Auto-detected Flash size: 4MB
Compressed 284592 bytes to 208993…
Writing at 0x00000000… (7 %)
Writing at 0x00004000… (15 %)
Writing at 0x00008000… (23 %)
Writing at 0x0000c000… (30 %)
Writing at 0x00010000… (38 %)
Writing at 0x00014000… (46 %)
Writing at 0x00018000… (53 %)
Writing at 0x0001c000… (61 %)
Writing at 0x00020000… (69 %)
Writing at 0x00024000… (76 %)
Writing at 0x00028000… (84 %)
Writing at 0x0002c000… (92 %)
Writing at 0x00030000… (100 %)
Wrote 284592 bytes (208993 compressed) at 0x00000000 in 4.9 seconds (effective 461.9 kbit/s)…
Hash of data verified.

Leaving…
Hard resetting via RTS pin…

bonjour @jerome
je suis bien en 9600 baud voici les messages

bonjour @jerome
voici mon code j’ai bien remplacer le ssid et mot de passe wifi ainsi que Gladys
il y a juste le esp8266wifi que je n’ai pas trouver dans la bibliothèque
donc j’ai installer
image

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

/* WIFI */

#define wifi_ssid « … » // votre ssid wifi
#define wifi_password « … » // votre mot de passe wifi

/* MQTT */

#define mqtt_server « 192.168.0.10 »
#define mqtt_user «  » // username
#define mqtt_password «  » // mot de passe MQTT
#define gladys_topic « gladys/master/device/mqtt:garage:capteur-ultrason/feature/mqtt: garage:capteur-ultrason:quantite/state »
#define mqtt_cuve « mqtt:garage: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 = 6; // Broche TRIGGER
const byte ECHO_PIN = 7; // 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 client(espClient);

void setup() {

/* Initialise le port serie */

Serial.begin(9600); //Facultatif pour le debug

/* 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
client.setServer(mqtt_server, 1883); //Configuration de la connexion au serveur MQTT
}

//Connexion au réseau WiFi
void setup_wifi() {
delay(10);
Serial.println();
Serial.print("Connexion a ");
Serial.println(wifi_ssid);

WiFi.begin(wifi_ssid, wifi_password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(« . »);
}

Serial.println(«  »);
Serial.println("Connexion WiFi etablie « );
Serial.print( »=> Addresse IP : ");
Serial.print(WiFi.localIP());
}

//Reconnexion
void reconnect() {
//Boucle jusqu’à obtenur une reconnexion
while (!client.connected()) {
Serial.print(« Connexion au serveur MQTT… »);
if (client.connect(« ESP8266Client », mqtt_user, mqtt_password)) {
Serial.println(« OK »);
} else {
Serial.print(« KO, erreur : « );
Serial.print(client.state());
Serial.println( » On attend 5 secondes avant de recommencer »);
delay(5000);
}
}
}

void loop() {
if (!client.connected()) {
reconnect();
}
client.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 = 1750 - distance_mm; // TRES IMORTANT Remplacer 2000 par la hauteur de votre cuve
c = c / 2000;
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);
}
client.publish(gladys_topic, String(c).c_str(), true);   //Publie le % de la cuve sur le topic dans gladys

}
}

Je pense que le problème vient de la bibliothèque en effet.

En regardant sur Google visiblement le problème est connu.

Par contre je ne suis pas un grand expert arduino et je pense que le code merite d’etre configuré de nouveau ou sinon il faut chercher le dossier zip de la bibliothèque pour l’intégrer directement.

Bonjour @pierre-gilles

Est-ce que dans la communauté il y a des personnes qui gèrent bien les codes arduino et qui pourrait regarder pour éventuellement modifier ou faire évoluer le code d’origine. Mes compétences sont trop limités.

image
Et avec celle-là ?
Je comptais me pencher sur le sujet car l’Arduino que j’utilisais pour cette fonction a pris l’eau et tant qu’à faire de le remplacer, je comptais mettre un Wemos. Je peux m’y pencher…
Par contre, si je puis me permettre, Tasmota gère nativement ce genre de capteur sur un Wemos mais renverra juste une valeur en cm et non en % :

Ca permet de tester facilement le montage en lui-même

En ajoutant une règle il pourrait donner le % sur broker mqtt en cas de besoin

1 « J'aime »

merci pour votre réponse .
je vais suivre le fil actualité , pour moi aussi mes compétences sont trop limitée pour modifier votre code