IoT – Sending Temp/Hum to from ESP8266 to my Loxone Smart Home

27. January 2018 IoT, Level300 0

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:

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.8.100/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.8.100/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);
}