ESP32 ve DHT22 ile Home Assistant'a Gerçek Zamanlı Sıcaklık Takibi

ESP32 ve DHT22 ile Home Assistant'a Gerçek Zamanlı Sıcaklık Takibi

ESP32 + DHT22 ile Home Assistant'a Gerçek Zamanlı Sıcaklık Takibi

Evinizin Beyin Merkezi Artık Cebinizde: ESP32 + DHT22 ile Home Assistant'a Gerçek Zamanlı Sıcaklık Takibi

ESP32 DHT22 sensör
MQTT Mosquitto broker
Raspberry Pi Home Assistant
Telefon / PC Her yerden erişim

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.

Bu proje orta seviyeye yönelik. Arduino IDE ve temel devre bilgisine sahip, ESP32'yi daha önce kullanmış biri için 1,5–2 saatte tamamlanabilir.

Sistem mimarisi

Üç katmanlı bir yapı kuruyoruz. Veriyi toplayan kenar cihaz, veriyi ileten protokol, veriyi gösteren platform.

ESP32DHT22 okur
MQTT yayınlar
MosquittoMQTT broker
Raspberry Pi'da
Home AssistantVeriyi çeker
Pano oluşturur
Telefon / PCHA arayüzü
her yerden

Gerekli malzemeler

Temel
ESP32 Dev Board
Wi-Fi ve Bluetooth destekli, çift çekirdekli işlemci. Bu projenin beyni.
Temel
DHT22 Sensör Modülü
±0.5°C hassasiyetle sıcaklık ve nem ölçer. DHT11'den çok daha güvenilir.
Temel
Raspberry Pi 4 (veya 5)
Mosquitto broker ve Home Assistant'ı 7/24 çalıştıracak ev sunucunuz.
Aksesuar
Jumper kablo + Breadboard
Sensörü ESP32'ye bağlamak için. Prototip aşamasında breadboard idealdir.

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:

Raspberry Pi terminali
sudo apt update && sudo apt install -y mosquitto mosquitto-clients
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
⚠️ Mosquitto varsayılan olarak anonim bağlantıya kapalıdır. /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

1
DHT sensor library
Arduino IDE'de Sketch → Include Library → Manage Libraries. "DHT sensor library" (Adafruit) aratın ve kurun. Bağımlılık olarak Adafruit Unified Sensor'ü de kurun.
2
PubSubClient
Aynı ekranda "PubSubClient" (Nick O'Leary) aratın ve kurun. Bu kütüphane MQTT mesajlaşmasını yönetiyor.
3
Board paketini kontrol edin
Tools → Board → Board Manager'da "esp32" aratın. Espressif Systems paketi kurulu değilse kurun.

4. ESP32 kodu

ev_sicaklik_takibi.ino
#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:

configuration.yaml
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

Ev iklim panosu · örnek görünüm
Salon sıcaklık
23.4 °C
Salon nem
58 %
Çocuk odası
21.9 °C
Mutfak nem
71 %

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.

Raspberry Pi'ınızı dış ağa açmak için Nabu Casa (Home Assistant Cloud) aboneliğine bakabilirsiniz. Böylece VPN kurmadan her yerden evinize erişebilirsiniz.
logo
visamaestromastercard