Use Adafruit dht library instead of SimpleDHT
[manu/arduino-maison.git] / cave / cave.ino
index 5abccb6..24d9d46 100644 (file)
@@ -1,7 +1,9 @@
 #include <WiFi.h>
 #include <WiFiUdp.h>
 #include <HCSR04.h>
-#include <SimpleDHT.h>
+#include <Adafruit_Sensor.h>
+#include <DHT.h>
+#include <DHT_U.h>
 
 #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,30 +51,46 @@ 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) {
+  delay(POLL_INT);
+
+  sensors_event_t event;
+  
+  dht.temperature().getEvent(&event);
+  if (isnan(event.temperature)) {
       #if defined(DEBUG)
-      Serial.println("Temperature: "+String(temperature));
-      Serial.println("Humidity: "+String(humidity));
+      Serial.println("DHT 22 temperature error");
       #endif
-    sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(temperature));
-    sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(humidity));
   } else {
       #if defined(DEBUG)
-      Serial.println("DHT 22 error");
+      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) {