Evinizin Beyin Merkezi Artık Cebinizde: ESP32 + DHT22 ile Home Assistant'a Gerçek Zamanlı Sıcaklık Takibi
Odanız 28 derece ama klima hâlâ çalışıyor. Kışın çocuk odasının ısısından habersiz uyuyorsunuz. Bu bilgilere telefona bakmadan, anlık ve otomatik erişebilseydiniz? MQTT protokolü ve Home Assistant tam da bunun için var — ve bir Raspberry Pi ile ESP32 bu sistemi evinize taşımak için yeterli.
Bu yazıda ESP32'ye bağlı DHT22 sensöründen aldığımız sıcaklık ve nem verilerini MQTT üzerinden Raspberry Pi'da çalışan Home Assistant'a göndereceğiz. Proje bittiğinde telefonunuzda gerçek zamanlı güncellenen bir ev panosu sizi karşılayacak.
Sistem mimarisi
Üç katmanlı bir yapı kuruyoruz. Veriyi toplayan kenar cihaz, veriyi ileten protokol, veriyi gösteren platform.
MQTT yayınlar
Raspberry Pi'da
Pano oluşturur
her yerden
Gerekli malzemeler
1. Raspberry Pi'ya Mosquitto kurulumu
Raspberry Pi'ınızda Home Assistant OS veya Home Assistant Supervised çalışıyorsa Mosquitto'yu Add-on Store'dan tek tıkla kurabilirsiniz. Terminal tercih ediyorsanız:
sudo apt update && sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable mosquitto sudo systemctl start mosquitto
/etc/mosquitto/mosquitto.conf dosyasına allow_anonymous true ekleyin — ya da kullanıcı adı/şifre oluşturun (önerilir).
2. ESP32 devre bağlantısı
DHT22 sadece üç pin kullanır. VCC → 3.3V, GND → GND, DATA → GPIO4. DATA pini ile 3.3V arasına 10kΩ pull-up direnç koymak sinyal kalitesini artırır.
3. Arduino IDE — kütüphane kurulumu
4. ESP32 kodu
#include <WiFi.h>
#include <PubSubClient.h>
#include <DHT.h>
const char* ssid = "WIFI_ADINIZ";
const char* password = "WIFI_SIFRENIZ";
const char* mqtt_server = "RASPBERRY_PI_IP"; // örn: 192.168.1.100
#define DHTPIN 4
#define DHTTYPE DHT22
DHT dht(DHTPIN, DHTTYPE);
WiFiClient espClient;
PubSubClient client(espClient);
void baglanti() {
while (!client.connected()) {
if (client.connect("ESP32_Salon")) {
Serial.println("MQTT bağlandı");
} else {
delay(3000);
}
}
}
void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) delay(500);
client.setServer(mqtt_server, 1883);
}
void loop() {
if (!client.connected()) baglanti();
client.loop();
float nem = dht.readHumidity();
float temp = dht.readTemperature();
if (!isnan(temp) && !isnan(nem)) {
client.publish("ev/salon/sicaklik", String(temp).c_str());
client.publish("ev/salon/nem", String(nem).c_str());
Serial.printf("Sıcaklık: %.1f°C Nem: %.1f%%\n", temp, nem);
}
delay(10000); // 10 saniyede bir gönder
}
ev/salon/sicaklik topic adını odaya göre özelleştirin — örneğin ev/cocuk_odasi/sicaklik. Her ESP32'ye farklı topic vererek tüm evin haritasını tek panoda görebilirsiniz.
5. Home Assistant'a sensör ekleme
Raspberry Pi'daki Home Assistant arayüzünden Settings → Integrations → MQTT'yi açın. Entegrasyon kurulduktan sonra configuration.yaml dosyasına aşağıdaki bloku ekleyin:
mqtt:
sensor:
- name: "Salon Sıcaklık"
state_topic: "ev/salon/sicaklik"
unit_of_measurement: "°C"
device_class: temperature
- name: "Salon Nem"
state_topic: "ev/salon/nem"
unit_of_measurement: "%"
device_class: humidity
Dosyayı kaydedin ve Home Assistant'ı yeniden başlatın (Developer Tools → Restart). Artık sensörleriniz varlık listesinde görünecek.
Home Assistant panosu — böyle görünecek
Sistemi genişletme fikirleri
Bu proje güçlü bir temel. Buradan kolayca şunları ekleyebilirsiniz: birden fazla odaya ESP32 + DHT22 çifti koyarak tüm evi izlemek; belirli sıcaklık eşiği aşılınca Home Assistant otomasyonuyla klimayı ya da ısıtıcıyı açmak; MQ-135 gaz sensörü ekleyerek hava kalitesini de takibe almak.