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.
Üç katmanlı bir yapı kuruyoruz. Veriyi toplayan kenar cihaz, veriyi ileten protokol, veriyi gösteren platform.
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).
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.
#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.
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.
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.