Wie ja alle wissen ist das Arbeiten in der Wohnung mit einer Flex oder Kreissäge nicht wirklich zu empfehlen, da die Staub- und Dreckentwicklung enorm ist. Aus diesen Grund wollte ich schon immer eine Werkstatt für die “groben” Arbeiten haben.
In meiner Garage ist auch extra ein Raum dafür abgetrennt, dieser ist jedoch nicht beheizt, so dass das Arbeiten im Winter nur mit dicker Jacke möglich wäre – ein unhaltbarer Zustand! 😉
Infrarot Heizungen
Ich habe mich also entschlossen meine Werkstatt zu beheizen, und habe mir dazu zwei Infrarot Heizpanele mit je 800 Watt besorgt.
Warum Infrarotheizungen?
Zuächst mal können diese sinnvoll an die Decke montiert werden, was keinen Platz an den Wänden weg nimmt.
Sie erhöhen nicht die Luftfeuchtigkeit da sie nichts verbrennen.
Und wenn man unter einer solchen Heizung steht, spürt man die Strahlungswärme fast sofort.
Außerdem mache ich ja bei mir irgendwie “alles” mit Strom 😉
Und da meine Garage nicht, oder nur wenig gedämmt ist, habe ich nach kurzer Recherche ausrechnen können, dass ich ca. 1200-1400 Watt haben sollte.
Nachdem das geschafft war, ging es an die Steuerung. Diese sollte natürlich über den KNX Bus stattfinden. Ich musste also erstmal die Temperatur der Werkstatt messen und an den Homeserver übertragen.
Temperatur Messung
Um die Temperatur zu messen habe ich den Sensor aus der Garage wiederverwendet. Dieser hat regelmäßig seine Firmware nach dem Tiefschlaf nicht mehr wieder gefunden und leider muss ich sagen, das der eingebaute Lüfter es auch nicht geschafft hat die Temperatur in der Garage spührbar zu reduzieren, also wird der jetzt recycelt.
Er besteht nach wie vor aus einem ESP8266 und einen DHT22 Temperatursensor.
Ich habe dann eine neue Firmware drauf gespielt die ich vom Zisternen-Sensor übernommen habe und somit von PUSH auf PULL umgestellt.
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DHT.h>
#define DHTTYPE DHT22
const int DHTPin = 2;
ESP8266WebServer server(80); // Webserver
WiFiClient client;
DHT dht(DHTPin, DHTTYPE);
struct measureData{
float temp;
float humi;
};
void setup() {
Serial.begin(115200);
IPAddress ip(192, 168, X, Y);
IPAddress gateway(192, 168, X, Y);
IPAddress subnet(255, 255, 255, 0);
WiFi.config(ip, gateway, subnet);
WiFi.begin("<SSID>", "<PASSWORD>");
Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
server.on("/", handle_normal);
server.on("/hs", handle_hs);
server.on("/hs/1", handle_hs);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("http server startet");
dht.begin();
Serial.println("dht startet");
}
void loop() {
server.handleClient();
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
void handle_normal() {
Serial.println("handle /");
struct measureData measureData = getMeasureData();
String msg = String("<!DOCTYPE html><html>") +
"<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">" +
"<link rel=\"icon\" href=\"data:,\">" +
"<body><h1>Werkstatt Temperature Server</h1>" +
"<p>Use get parameter hs for homeserver</p>" +
"<p>Exampe: /hs/1</p>" +
"<br><br><p>Current temp: " + String(measureData.temp) + "</p>" +
"<br><p>Current humi: " + String(measureData.humi) + "</p>" +
"</body></html>\r\n" ;
server.send(200, "text/html", msg);
}
void handle_hs() {
Serial.println("handle /hs");
struct measureData measureData = getMeasureData();
String msg = String("T=" + String(measureData.temp) + "\r\n");
server.send(200, "text/html", msg);
}
struct measureData getMeasureData() {
float h, t;
struct measureData measureData;
delay(4000);
h = dht.readHumidity();
t = dht.readTemperature();
Serial.println(t);
Serial.println(h);
if (!isnan(t)) {
measureData.temp = t;
}
if (!isnan(h)) {
measureData.humi = h;
}
return measureData;
}
Und natürlich wollte ich jetzt erstmal prüfen, ob das alles denn auch funktioniert. Dazu habe ich dann den Sensor provisorisch zusammen mit einem Oldschool-Analog-Thermometer in der Werkstatt platziert.
Und siehe da: Der Sensor vertut sich um gut 2-3 Grad – so geht das aber nicht!
Schaltungsüberarbeitung
Und dann ging die Suche los:
Zunächst einmal habe ich die Schaltung überarbeitet und einen Pull-Up Wiederstand (4.7k) sowie den im Datenblatt des DHT22 aufgeführten 100nF Kondensator eingefügt.
Gleichzeitig habe ich den DHT22 Sensor auch noch komplett ausgetauscht (hatte damals ein 3er-Set gekauft und daher noch zwei in meiner Rummelkiste) und ihn auch nicht mehr direkt neben dem ESP montiert, sondern mit kurzen Kabeln ca. 20cm entfernt von der Platine.
Ich weiß nicht genau was von den Maßnahmen geholfen hat, aber nachdem ich den überarbeiteten Sensor so in der Werkstatt aufgestellt hatte, deckte sich die Messung 1zu1 mit dem analogen Thermometer.
KNX Anbindung
Die Anbindung an den Homeserver findet auf die gleiche Weise statt, wie schon bei der Zisterne. Ich habe ein KO angelegt und mitteils Webseitenaufruf wird der Wert von der Webseite des ESP gelesen.
Der Webseitenaufruf wird dann mittels Logik einmal pro Minute wiederholt.
Die Logik
Und zum Schluß musste noch eine Logik her, welche die gemessene Temperatur mit der Wunschtemperatur vergleicht und unter Berücksichtigung von Pufferwerten dann die Steckdosen für die Heizungen an- bzw abschaltet.
09.10.2022: Ich hatte ein paar Probleme mit der alten Logik, da diese nicht richtig berücksichtigt hat wenn der ESP Temperatursensor einmal ausfällt. Das ist schon 2 oder 3 mal passiert. Dann lief die Heizung in der Vergangenheit ohne Unterbrechungen auf voller Kraft. Die neue Logik berücksichtig das jetzt besser.