Erstelle deinen eigenen intelligenten Thermostat mit ESP32 und MQTT
11.12.2024 - Engine: Gemini

Erstellung eines intelligenten Thermostaten mit ESP32 und MQTT
Komponenten:
- ESP32-Mikrocontroller
- Temperatursensor (z. B. DHT22)
- Relais (zum Schalten des Heiz-/Kühlgeräts)
- MQTT-Broker
Einrichtung:
-
Hardwareverbindung:
- Verbinden Sie den Temperatursensor mit dem ESP32.
- Verbinden Sie das Relais mit dem ESP32 und dem Heiz-/Kühlgerät.
-
Softwareinstallation:
- Installieren Sie die Arduino IDE.
- Installieren Sie die ESP32-Bibliotheken.
- Installieren Sie die MQTT-Bibliothek.
Code:
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
// MQTT Broker-Details
const char* mqttServer = "broker.mqtt-dashboard.com";
uint16_t mqttPort = 1883;
// Temperatursensor-Details
#define DHTPIN 5
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
// Relais-Details
const int relayPin = 2;
// Globale Variablen
bool heating = false;
float desiredTemp = 20.0;
// MQTT-Client
WiFiClient espClient;
PubSubClient client(espClient);
void setup() {
// WLAN verbinden
WiFi.begin("Netzwerkname", "Passwort");
while (WiFi.status() != WL_CONNECTED) { delay(500); }
// MQTT-Client verbinden
client.setServer(mqttServer, mqttPort);
while (!client.connected()) { client.connect("Thermostat"); }
// Temperatursensor initialisieren
dht.begin();
// Relais-Pin als Ausgang setzen
pinMode(relayPin, OUTPUT);
}
void loop() {
// Client am Leben erhalten
client.loop();
// Temperatur abrufen
float temp = dht.readTemperature();
// Temperatur über MQTT veröffentlichen
client.publish("thermostat/temp", String(temp).c_str());
// Temperatur mit Zieltemperatur vergleichen
if (temp < desiredTemp - 0.5) {
// Heizen
digitalWrite(relayPin, HIGH);
heating = true;
} else if (temp > desiredTemp + 0.5) {
// Kühlen
digitalWrite(relayPin, LOW);
heating = false;
}
// Heizstatus über MQTT veröffentlichen
client.publish("thermostat/heating", heating ? "true" : "false");
}
Funktionsweise:
- Der ESP32 verbindet sich mit dem WLAN und dem MQTT-Broker.
- Der Temperatursensor misst die Raumtemperatur und veröffentlicht sie über MQTT.
- Der ESP32 vergleicht die gemessene Temperatur mit der gewünschten Temperatur.
- Wenn die Temperatur unter der gewünschten Temperatur liegt, wird das Heizgerät eingeschaltet.
- Wenn die Temperatur über der gewünschten Temperatur liegt, wird das Heizgerät ausgeschaltet.
- Der Heizstatus wird über MQTT veröffentlicht.