MQTT Nedir?
MQTT(Message Queuing Telemetry Transport), düşük bant genişliğine sahip kısıtlı cihazlar için tasarlanmış basit bir mesajlaşma protokolüdür. Bu nedenle, birden fazla IoT cihazı arasında veri alışverişi yapmak için mükemmel bir çözümdür. MQTT iletişimi bir publish ve subscribe sistemi olarak çalışır. Cihazlar belirli bir konuda mesajlar yayınlar. Buna abone olan tüm cihazlar mesajı alır.
MQTT’de anlamanız gereken birkaç temel kavram vardır:
- Publish/Subscribe
- Messages
- Topics
- Broker
Publish/Subscribe
İlk konsept, publish/subscribe sistemidir. Publish/subscribe sisteminde, bir cihaz bir konu hakkında mesaj yayınlayabilir veya mesaj almak için belirli bir konuya abone olabilir.
- Örneğin Cihaz 1 bir konuda yayın yapıyor.
- Cihaz 2, cihaz 1’in yayınladığı aynı konuya abonedir.
- Cihaz 2 Bu mesajı alır.
Messages
Messages, cihazlarınız arasında değiş tokuş etmek istediğiniz bilgilerdir. Örneğin, bir komut gibi bir mesaj veya sensör okumaları gibi veriler olabilir.
Topics
Bir diğer önemli kavram ise ‘Topics’. ‘Topics’, gelen mesajlara ilgi kaydetme şekliniz veya mesajı nerede yayınlamak istediğinizi nasıl belirlediğinizdir.
‘Topics’, eğik çizgi ile ayrılmış dizelerle temsil edilir. Her eğik çizgi bir konu seviyesini gösterir. Ev ofisinizdeki bir lamba için nasıl konu oluşturacağınıza dair bir örnek:
MQTT kullanarak ev veya ofisinizde bir lamba yakmak istiyorsanız, aşağıdaki senaryoyu hayal edebilirsiniz:
- Bir cihaz, ev/ofis/lamba konusunda “açık” ve “kapalı” mesajları yayınlar.
- Bir lambayı kontrol eden bir cihazınız var (bir ESP32, ESP8266 veya başka bir kart veya cihaz olabilir). Lambanızı kontrol eden ESP32, aynı konuya abonedir: ev/ofis/lamba. Yani o konuyla ilgili yeni bir mesaj yayınlandığında, ESP32 “açık” veya “kapalı” mesajlarını alır ve lambayı açar veya kapatır.
Mesajları yayınlayan cihaz, örneğin bir ESP32, bir ESP8266 veya Node-RED, Home Assistant, Domoticz veya OpenHAB gibi MQTT destekli bir Ev Otomasyonu denetleyici platformu olabilir.
Broker
MQTT aracısı tüm mesajları almaktan, mesajları filtrelemekten, kiminle ilgileneceğine karar vermekten ve ardından mesajı abone olan tüm müşterilere yayınlamaktan sorumludur.
MQTT Ev Otomasyonları ve IoT’de Nasıl Kullanılır?
MQTT, ev otomasyonu ve nesnelerin interneti projeleri için tercih edilmektedir. Raspberry Pi, ESP32, ESP8266 ve Arduino gibi düşük maliyetli geliştirme kartlarıyla oluşturulmuş bir Ev Otomasyon Sisteminde nasıl kullanılabileceğine dair bir örnek.
- Bir Raspberry Pi, MQTT protokolü için gerekli olan Mosquitto aracısını çalıştırır.
- Aynı Raspberry Pi, MQTT destekli bir Ev Otomasyon Platformu olan Node-RED’i çalıştırıyor; bu, diğer IoT cihazlarından mesaj almak için konulara abone olabileceği ve diğer cihazlara mesaj göndermek için belirli konularda mesajlar yayınlayabileceği anlamına geliyor.
- Node-RED ayrıca çıkışları kontrol etmek için düğmeler ve sensör okumalarını görüntülemek için çizelgeler içeren bir Kullanıcı Arayüzü oluşturmanıza olanak tanır.
- Arduino, ESP32 ve ESP8266, konuları yayınlayan ve bunlara abone olan MQTT istemcileri olarak hareket edebilir.
- Bu kartlar, LED’ler veya röleler gibi aktüatörlere ve sıcaklık, nem, duman sensörleri gibi sensörlere bağlanır.
- Bu kartlar, Node-RED’in de abone olduğu belirli bir konuda sensörün durumu hakkında veri yayınlayabilir. Bu şekilde Node-RED, sensör okumalarını alır ve bunları kullanıcı arayüzünde görüntüleyebilir.
- Diğer taraftan, Node-RED, arayüzdeki düğmeleri kullandığınızda çıkışları kontrol etmek için belirli bir konuda veri yayınlayabilir. Diğer panolar da bu konuya abonedir ve çıktıları buna göre kontrol eder.