MQTT nedir? IoT cihazları arasında hafif mesajlaşmaya giriş
Sensörden gelen veriyi bir panele göndermek, telefondan bir röleyi açmak ya da birden fazla cihazı birbirine konuşturmak istiyorsan, MQTT bu iş için en yaygın kullanılan protokollerden biri.
Nasıl çalışır?
MQTT bir yayınla-abone ol (publish/subscribe) protokolüdür. Cihazlar birbirine doğrudan bağlanmaz; arada broker adı verilen bir sunucu vardır.
- Sensör,
ev/salon/sicaklikkonusuna (topic)22.5değerini yayınlar. - Bu konuya abone olan panel, telefon uygulaması veya başka bir cihaz mesajı alır.
Yayınlayan, kimin dinlediğini bilmek zorunda değildir. Yeni bir cihaz eklemek için sadece ilgili konuya abone olması yeterlidir.
Konu (topic) yapısı
Konular / ile ayrılır ve hiyerarşiktir:
ev/salon/sicaklik
ev/salon/nem
ev/mutfak/sicaklik
Abone olurken joker karakter kullanabilirsin:
ev/+/sicaklik→ tüm odaların sıcaklığıev/#→evaltındaki her şey
Broker kurmak
En yaygın açık kaynak broker Mosquitto'dur. Bir Raspberry Pi veya küçük bir sunucuda çalışır:
sudo apt install mosquitto mosquitto-clients
Test için bir terminalde abone ol, diğerinde yayınla:
mosquitto_sub -h localhost -t "ev/#" -v
mosquitto_pub -h localhost -t "ev/salon/sicaklik" -m "22.5"
Mosquitto'nun yeni sürümleri varsayılan olarak yalnızca yerel bağlantıları kabul eder. Ağdaki cihazlara açmak için yapılandırmaya bir listener ve kimlik doğrulama eklemen gerekir.
ESP32'den yayınlamak
Arduino ortamında yaygın olarak PubSubClient kütüphanesi kullanılır. Temel akış:
- Wi-Fi'ye bağlan.
- Broker'a bağlan (adres, port, kullanıcı adı/şifre).
- Belirli aralıklarla
client.publish("ev/salon/sicaklik", deger)çağır. loop()içindeclient.loop()çağırmayı unutma; bağlantıyı canlı tutar.
Bilmen gereken üç kavram
- QoS (hizmet kalitesi): 0 = bir kez gönder, ulaşmayabilir; 1 = en az bir kez ulaşır; 2 = tam bir kez ulaşır. Sensör verisi için genelde 0 veya 1 yeterlidir.
- Retain: Broker konudaki son mesajı saklar; yeni abone olan cihaz son değeri hemen alır. Cihaz durumları (açık/kapalı) için kullanışlıdır.
- Last Will (son vasiyet): Cihaz beklenmedik şekilde koparsa broker senin belirlediğin mesajı (ör.
cevrimdisi) yayınlar.
Güvenlik
- Broker'ı kullanıcı adı/şifresiz internete açma; internette açık broker'ları tarayan botlar var.
- Dışarıdan erişim gerekiyorsa TLS (genelde 8883 portu) kullan.
- Her cihaza ayrı kullanıcı ve yalnızca ihtiyacı olan konulara izin ver.
Home Assistant, Node-RED gibi araçlar MQTT ile doğrudan çalışır; küçük bir ev otomasyonu için iyi bir başlangıç noktası.