#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"
UltraSonicDistanceSensor distanceSensor(14, 12);
// Temp
-int pinDHT22 = 27;
-SimpleDHT22 dht22(pinDHT22);
+#define DHTPIN 27
+#define DHTTYPE DHT22
+DHT_Unified dht(DHTPIN, DHTTYPE);
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) {