IoT – Sending Temp/Hum to from ESP8266 to my Loxone Smart Home
UPDATE: corrected the sourcecode! and put some screenshot of my Loxone more down…
Ich habe für diverse IoT Projekte immer wieder die Frage, wo die Sensordaten herkommen. In meinem Haus messe ich nun die Temperatur und Feuchtigkeit mit diesem kleinen und güstigem Device 😉 Also ein ESP8266 Minicomputer, der mit Batterie bzw. USB Strom entgegennimmt und per Wifi die Daten an meine Loxone schickt.
Eine Anleitung für die Porgrammierung des IoT Teils finden Sie als Einführung hier.
Used parts:
- ESP8266 E12
- DHT22 Sensor
- Breadboard
- Jumpercable
- USB Cable for Power
Nach ein paar Sekunden (Wifi connect) sendet das Teil alle 10 Sekunden die Daten an die Loxone und zeigt es im zugeordneten Raum an… Mit diesem Wert kann man innerhalb der Loxone natürlich weitere Entscheidungen treffen. Zur Heizungssteuerung oder um die Fussbodenheizung abzudrehen, wenn es einen Soll Wert überschreitet.
Anbei noch der Source Code von diesem kleinen Sketch, wie das bei Arduino heißt. Nur die WLAN Zugangsdaten und der Zugang zum virtuelle Input der Loxone bitte eintragen…
// deployed and working!! // 20180127 new to send to loxone #include <DHT.h> #include <ESP8266WiFi.h> #include <ESP8266HTTPClient.h> // replace with your wifi ssid and wpa2 key const char *ssid = "sid"; const char *pass = "myssecret"; #define DHTPIN 4 // pin where the dht22 is connected #define BUILTIN_LED 2 DHT dht(DHTPIN, DHT22, 15); WiFiClient client; HTTPClient http; void setup() { Serial.begin(115200); delay(100); pinMode(BUILTIN_LED, OUTPUT); // Initialize the LED_BUILTIN pin as an output digitalWrite(2, LOW); // Turn the LED on (Note that LOW is the voltage level dht.begin(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, pass); while (WiFi.status() != WL_CONNECTED) { delay(1000); digitalWrite(2, LOW); Serial.print("."); delay(100); digitalWrite(2, HIGH); } Serial.println(""); Serial.println("WiFi connected"); } int httpCode = 0; void loop() { float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { Serial.println("Failed to read from DHT sensor!"); delay(1000); return; } Serial.print("Temperature: "); Serial.print(t); Serial.print(" degrees Celcius, Humidity: "); Serial.print(h); Serial.println("%."); String url = "http://192.168.x.x00/dev/sps/io/ESPTemp/"; url.concat(t); http.begin(url); http.setAuthorization("user", "password"); httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { //String payload = http.getString(); //Serial.println(payload); Serial.print("Temperatur sent to Loxone. "); } http.end(); digitalWrite(2, LOW); // switch LED ON delay(80); // wait litte time digitalWrite(2, HIGH); // switch LED OFF delay(100); // wait litte time String url2 = "http://192.168.x.x00/dev/sps/io/ESPHum/"; url2.concat(h); http.begin(url2); http.setAuthorization("user", "password"); httpCode = http.GET(); if (httpCode == HTTP_CODE_OK) { Serial.print("Feuchtigkeit sent to Loxone. "); } http.end(); digitalWrite(2, LOW); // switch LED ON delay(80); // wait litte time digitalWrite(2, HIGH); // switch LED OFF Serial.println("Waiting... 10sec...."); delay(10000); }