Je souhaite mesure un débit d'eau avec une sonde YF-B1 (aliexpress) relié à un Wemos D1 mini pour envoyer l'information sur un capteur "Waterflow" virtuel sous Domoticz.
Jusque là j'ai déjà fait avec un capteur de distance et tout fonctionne nickel.
J'ai repris mon code et je l'ai adapté pour le débit mètre mais j'ai une erreur car mon capteur virtuel n'est pas mis à jour...
Je pense fortement que ça à quelque chose à voir avec le fait qu'il y ait des interruptions...
Ci-dessous mon code:
Code : Tout sélectionner
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
const char* ssid = x
const char* password = x
const char* host = x
const int port = 8080;
const char* id = x
const char* mdp = x
const int idx = 10498;
const int watchdog = 5000; // Fréquence d'envoi (ms)
unsigned long previousMillis = millis();
int NbTopsFan;
int Calc;
int hallsensor = D6;
void ICACHE_RAM_ATTR rpm()
{
NbTopsFan++;
}
HTTPClient http;
void setup() {
pinMode (hallsensor, INPUT_PULLUP);
Serial.begin(115200);
delay(10);
Serial.setDebugOutput(true);
Serial.println("Connecting Wifi...");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.print(WiFi.localIP());
attachInterrupt(digitalPinToInterrupt(hallsensor), rpm, FALLING);
}
int value = 0;
void loop() {
unsigned long currentMillis = millis();
if ( currentMillis - previousMillis > watchdog ) {
previousMillis = currentMillis;
if(WiFi.status() != WL_CONNECTED) {
Serial.println("WiFi not connected !");
} else {
Serial.println("Send data to Domoticz");
NbTopsFan = 0;
sei();
delay(1000);
cli();
Calc = (NbTopsFan * 2.2);
Serial.print (Calc, DEC);
Serial.println("L/h");
String url = "/json.htm?username=";
url += String(id);
url += String("=&password=");
url += String(mdp);
url += String("=&type=command¶m=udevice&idx=");
url += String(idx);
url += String("&nvalue=0&svalue=");
url += String(Calc);
sendDomoticz(url);
}
}
}
void sendDomoticz(String url){
Serial.print("connecting to ");
Serial.println(host);
Serial.print("Requesting URL: ");
Serial.println(url);
http.begin(host,port,url);
int httpCode = http.GET();
Serial.println(httpCode);
if (httpCode) {
if (httpCode == 200) {
String payload = http.getString();
Serial.println("Domoticz response ");
Serial.println(payload);
}
}
Serial.println("closing connection");
http.end();
}Et la valeur "Calc" du débitmètre est bien affichée dans le moniteur série.
Pouvez vous m'aider ?
Merci.