Die Daten des Wemos sollen in Intervallen in einer influxdb gespeichert werden. Später erfolgt die Visualisierung im Grafana.
Zunächst die Datenbank anlegen
create database wemosdb with duration 30d
create user wemos with password ‚<password>‘
grant all on „wemosdb“ to „wemos“
Der Code für den Wemos sieht wie folgt aus:
#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>
#include "DHT.h"
#define DHTTYPE DHT22
// Zugangsdaten zum WLAN:
const char* ssid = "<name des WLAN>";
const char* password = "<Kennwort des WLAN>";
WiFiClient wclient;
uint8_t DHTPin = 4;
// Initialize DHT sensor.
DHT dht(DHTPin, DHTTYPE);
float Temperature;
float Humidity;
void setup() {
Serial.begin(115200);
delay(100);
pinMode(DHTPin, INPUT);
dht.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
//mit dem WLAN verbinden
WiFi.begin(ssid, password);
//ist die WLAN Verbindung vorhanden
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());
}
void loop() {
Serial.print("Temperature: ");
Serial.println(Temperature);
Serial.print("Humidity: ");
Serial.println(Humidity);
HTTPClient http;
Temperature = dht.readTemperature(); // Temperatur auslesen
Humidity = dht.readHumidity(); // Feuchtigkeit auslesen
String influxData = "werte,zimmer=<Name des Zimmers> temperatur=" + String(Temperature) + ",feuchtigkeit=" + String(Humidity) + "";
String url = "http://<IP Adresse der Influxdb>:8086/api/v2/write?bucket=wemosdb";
http.begin(wclient, url);
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
http.setAuthorization("wemos", "<Kennwort des WEMOS Benutzers>");
int httpCode = http.POST(influxData);
http.writeToStream(&Serial);
http.end();
ESP.deepSleep(600000000);
}
Im grafana muss die InfluxDB zunächst als Quelle hinzugefügt werden, im Anschluss ist es möglich die Daten auszugeben.