#include #include #include #include #include #include #include "cave-config.h" const char* wifi_ssid = WIFI_SSID; const char* wifi_pass = WIFI_PASS; // Grafana IPAddress influxdb_ip(INFLUXDB_IP); long influxdb_port = INFLUXDB_PORT; unsigned int localPort = 2390; // MilliSeconds long unsigned poll_int = POLL_INT; String city = CITY; String location = LOCATION; WiFiUDP Udp; // TRIGGER, ECHO UltraSonicDistanceSensor distanceSensor(14, 12); // Temp #define DHTPIN 27 #define DHTTYPE DHT22 DHT_Unified dht(DHTPIN, DHTTYPE); void setup() { #if defined(DEBUG) Serial.begin(115200); Serial.print("Connecting to "); Serial.println(wifi_ssid); #endif WiFi.mode(WIFI_STA); WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) { delay(500); #if defined(DEBUG) Serial.print("."); #endif } #if defined(DEBUG) Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); #endif dht.begin(); sensor_t sensor; dht.temperature().getSensor(&sensor); dht.humidity().getSensor(&sensor); } void loop() { 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)); } } } void sendToInfluxDB(String measure, String key, String value) { String line = measure+" "+key+"="+value; Udp.begin(localPort); Udp.beginPacket(influxdb_ip, influxdb_port); Udp.print(line); Udp.endPacket(); }