Voici mon programme qui fonctionnait avant branchement.
Je m’explique quand je branchais le wemos, le moniteur de serie affichait bien que la connexion wifi était réussie ainsi que la connexion MQTT.
Depuis que j’ai essayé de brancher mon capteur à mon wemos je n’ai plus que des symbole dans le moniteur de serie.
Une idée ???
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
/* WIFI */
#define wifi_ssid "******box"
#define wifi_password "****************"
/* MQTT */
#define mqtt_server "192.168.0.7"
#define mqtt_user "gladys" // username
#define mqtt_password "****************" // password
#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 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 = 2000 - distance_mm;
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 la température sur le topic temperature_topic
}
if (now - lastRecu > 100 ) {
lastRecu = now;
client.subscribe("homeassistant/switch1");
}
}