X-Git-Url: http://git.home-dn.net/?p=manu%2Farduino-maison.git;a=blobdiff_plain;f=cave%2Fcave.ino;h=996154e534f778c6f8db273a5af2a5a7a26c8c38;hp=bc18162e83dab3e2302438328c1446890d3b3969;hb=53f952dbf7aaf1800c3632f6916393d94f1ca432;hpb=4a4f96106638a72d98e42741cbbe3beabb2e6d5b diff --git a/cave/cave.ino b/cave/cave.ino index bc18162..996154e 100644 --- a/cave/cave.ino +++ b/cave/cave.ino @@ -1,7 +1,9 @@ #include #include #include -#include +#include +#include +#include #include "cave-config.h" @@ -22,8 +24,9 @@ WiFiUDP Udp; UltraSonicDistanceSensor distanceSensor(14, 12); // Temp -int pinDHT22 = 27; -SimpleDHT22 dht22(pinDHT22); +#define DHTPIN 27 +#define DHTTYPE DHT22 +DHT_Unified dht(DHTPIN, DHTTYPE); void setup() { @@ -48,22 +51,59 @@ void setup() { Serial.println("IP address: "); Serial.println(WiFi.localIP()); #endif + + dht.begin(); + sensor_t sensor; + dht.temperature().getSensor(&sensor); + dht.humidity().getSensor(&sensor); + } void loop() { - float temperature = 0; - float humidity = 0; - int err = SimpleDHTErrSuccess; - if ((err = dht22.read2(&temperature, &humidity, NULL)) == SimpleDHTErrSuccess) { - sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(temperature)); - sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(humidity)); + delay(POLL_INT); + + // Check wifi connexion + if ( WiFi.status() != WL_CONNECTED ) { + int retry = 0; + WiFi.mode(WIFI_STA); + WiFi.begin(WIFI_SSID, WIFI_PASS); + while (retry < 10 || WiFi.status() != WL_CONNECTED) { + retry++; + delay(500); + } + } + + if ( WiFi.status() != WL_CONNECTED ) { + sensors_event_t event; + + dht.temperature().getEvent(&event); + if (isnan(event.temperature)) { + #if defined(DEBUG) + Serial.println("DHT 22 temperature error"); + #endif + } else { + #if defined(DEBUG) + Serial.println("Temperature: "+String(event.temperature)); + #endif + sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(event.temperature)); + double water_dist = distanceSensor.measureDistanceCm(event.temperature); + #if defined(DEBUG) + Serial.println("Distance: "+String(water_dist)); + #endif + sendToInfluxDB("water_well,city="+city+",location="+location, "distance", String(water_dist)); + } + dht.humidity().getEvent(&event); + if (isnan(event.relative_humidity)) { + #if defined(DEBUG) + Serial.println("DHT 22 humidity error"); + #endif + } else { + #if defined(DEBUG) + Serial.println("Humidity: "+String(event.relative_humidity)); + #endif + sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(event.relative_humidity)); + } } - double water_dist = distanceSensor.measureDistanceCm(temperature); - #if defined(DEBUG) - Serial.println("Distance: "+String(water_dist)); - #endif - sendToInfluxDB("water_well,city="+city+",location="+location, "distance", String(water_dist)); - delay(POLL_INT); } void sendToInfluxDB(String measure, String key, String value) {