Add configuration for serre-semis
authorEmmanuel Lacour <elacour@easter-eggs.com>
Mon, 26 Apr 2021 13:36:21 +0000 (15:36 +0200)
committerEmmanuel Lacour <elacour@easter-eggs.com>
Mon, 26 Apr 2021 13:36:21 +0000 (15:36 +0200)
serre-semis/serre-semis.h.in [new file with mode: 0644]
serre-semis/serre-semis.ino [new file with mode: 0644]

diff --git a/serre-semis/serre-semis.h.in b/serre-semis/serre-semis.h.in
new file mode 100644 (file)
index 0000000..4a1402d
--- /dev/null
@@ -0,0 +1,13 @@
+// Enable debug on serial port
+#define DEBUG 1
+// Wifi
+#define WIFI_SSID "XXXXXX"
+#define WIFI_PASS "xxxxxx"
+// InfluxDB
+#define INFLUXDB_IP {w,x,y,z}
+#define INFLUXDB_PORT xxxx
+// Polling interval (ms)
+#define POLL_INT 10000
+// Location informations
+#define CITY "xxxxx"
+#define LOCATION "xxxxx"
diff --git a/serre-semis/serre-semis.ino b/serre-semis/serre-semis.ino
new file mode 100644 (file)
index 0000000..7ce44c9
--- /dev/null
@@ -0,0 +1,82 @@
+#include <WiFi.h>
+#include <WiFiUdp.h>
+#include <Adafruit_Sensor.h>
+#include <DHT.h>
+#include <DHT_U.h>
+
+#include "serre-semis-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;
+
+// Temp
+#define DHTPIN 13
+#define DHTTYPE DHT22
+DHT_Unified dht(DHTPIN, DHTTYPE);
+
+void setup() {
+
+  Serial.begin(1200);
+  WiFi.mode(WIFI_STA);
+  WiFi.begin(WIFI_SSID, WIFI_PASS);
+
+  while (WiFi.status() != WL_CONNECTED) {
+    delay(500);
+  }
+
+  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)) {
+        // 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));
+      }
+  }
+}
+
+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();
+}