#include <WiFi.h>
#include <WiFiUdp.h>
#include <TeleInfo.h>
-#include <SimpleDHT.h>
+#include <Adafruit_Sensor.h>
+#include <DHT.h>
+#include <DHT_U.h>
#include "garage-config.h"
String location = LOCATION;
WiFiUDP Udp;
-int pinDHT22 = 13;
-SimpleDHT22 dht22(pinDHT22);
+// Temp
+#define DHTPIN 19
+#define DHTTYPE DHT22
+DHT_Unified dht(DHTPIN, DHTTYPE);
TeleInfo teleinfo(&Serial);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
+
+ 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);
+ }
}
-
- teleinfo.process();
- if(teleinfo.available()){
- long I1 = teleinfo.getLongVal("IINST1");
- long I2 = teleinfo.getLongVal("IINST2");
- long I3 = teleinfo.getLongVal("IINST3");
- long PAPP = teleinfo.getLongVal("PAPP");
- long BASE = teleinfo.getLongVal("BASE");
- sendToInfluxDB("teleinfo,city="+city+",phase=1", "IINST", String(I1));
- sendToInfluxDB("teleinfo,city="+city+",phase=2", "IINST", String(I2));
- sendToInfluxDB("teleinfo,city="+city+",phase=3", "IINST", String(I3));
- sendToInfluxDB("teleinfo,city="+city, "PAPP", String(PAPP));
- sendToInfluxDB("teleinfo,city="+city, "BASE", String(BASE));
- teleinfo.resetAvailable();
+
+ if ( WiFi.status() == WL_CONNECTED ) {
+ sensors_event_t event;
+
+ dht.temperature().getEvent(&event);
+ if (isnan(event.temperature)) {
+ // Error
+ } else {
+ sendToInfluxDB("temperature,city="+city+",location="+location, "value", String(event.temperature));
+ }
+ dht.humidity().getEvent(&event);
+ if (isnan(event.relative_humidity)) {
+ // Error
+ } else {
+ sendToInfluxDB("humidity,city="+city+",location="+location, "value", String(event.relative_humidity));
+ }
+
+ teleinfo.process();
+ if(teleinfo.available()){
+ long I1 = teleinfo.getLongVal("IINST1");
+ long I2 = teleinfo.getLongVal("IINST2");
+ long I3 = teleinfo.getLongVal("IINST3");
+ long PAPP = teleinfo.getLongVal("PAPP");
+ long BASE = teleinfo.getLongVal("BASE");
+ sendToInfluxDB("teleinfo,city="+city+",phase=1", "IINST", String(I1));
+ sendToInfluxDB("teleinfo,city="+city+",phase=2", "IINST", String(I2));
+ sendToInfluxDB("teleinfo,city="+city+",phase=3", "IINST", String(I3));
+ sendToInfluxDB("teleinfo,city="+city, "PAPP", String(PAPP));
+ sendToInfluxDB("teleinfo,city="+city, "BASE", String(BASE));
+ teleinfo.resetAvailable();
+ }
}
- delay(POLL_INT);
}
void sendToInfluxDB(String measure, String key, String value) {