MQTT protokolünü ne zaman ve neden kullanmalı?


34

Sıcaklık, nem ve kütleyi ölçen bir cihaz geliştiriyorum. Şu anda uzak bir sunucuya veri yüklemek için HTTPS kullanıyor. Şimdi, “ Nesnelerin İnterneti protokolü” olduğu iddia edilen MQTT adlı bir protokol olduğunu biliyorum .

Hangi durumda ve neden HTTPS'den MQTT'ye geçmeliyim?

Yanıtlar:


32

MQTT cihazlar arasında bir "haberci" dir:

  • Cihazınız T derecesinde X dereceli bir sıcaklıkta ölçüm yapar
  • MQTT brokerine (kendisi veya zwave hub üzerinden) bağlanır
  • konuyla ilgili bir mesaj oluştur /domotics/myplace/mydevice/temperature
  • mesajın içine koyar X("yük" olarak)

Evinizde başka bir yerde:

  • Raspberry Pi'niz MQTT brokerine bağlı (MQTT örneğinin kendisi olabilir)
  • /domotics/+/+/temperaturebu konu biçimini kullanan tüm cihazlardan TÜM sıcaklık bilgilerini almak için konuya abone olur . MQTT konu joker karakterleri ( ve ) hakkında daha fazla bilgi için MQTT özelliklerine bakın .+#
  • yük ile bir mesaj alacak Xve ne isterse yapacak!

Evinizde başka bir yerde:

  • bilgisayarınız MQTT brokerine bağlı ve /domotics/myplace/mydevice/#cihazınızdan TÜM bilgileri almak ve oturum açmak için konuya abone
  • yük ile bir mesaj alacak Xve ne isterse yapacak!

MQTT, sunucularınızın etrafına web servisleri ve soketler koymaktan kaçınmak için çok kullanışlıdır. Node-RED MQTT'yi kullanır ve Domoticz sinyalleri almak inve ayarlamak için yapılandırılabilir out.

Bilgisayarları kapatmak için şahsen MQTT'yi evimde kullanıyorum /house/computers/mycomputer:0


İyi noktaya soketler ve diğer web hizmetleri ile uğraşmak zorunda değilim.
Bence Kaulics

Güvenlik konuları hakkında yorum yapabilir misiniz? Trafik düz metni mi?
Mawg

1
Başka bir cevap MQTT'nin TLS'yi desteklediğini söylüyor; iot.stackexchange.com/a/69/39
Goufalite

20

MQTT olarak bilinen MQ Telemetri Taşıma Protokolü , düşük güçte ve düşük bant genişliğinde çalışan cihazlar için tasarlanmıştır. Hafif bir yayınlama / abone olma mesajlaşma protokolüdür; başka bir cihaz belirli bir konuya abone olabilir.

HTTP / HTTPS , istemci-sunucu bilişimi için güç kullanımı konusunda asla sıkıntı çekmeyen ve fazla miktarda veri içeren bir istek-cevap protokolü olarak tasarlanmıştır.

Aşağıdaki durumlarda MQTT kullanın:

  • Kullanmakta olduğunuz cihaz pil hücresi üzerinde çalışıyor ve her x sayısında bir gün değiştirmek istemiyorsunuz (MQTT, HTTP / S olmasa da pil kullanımı için optimize edilmiştir)
  • Daha hızlı yanıt gerekli
  • Pub / sub mekanizmasına sahip olmanız gerekir (Mesajları birçok müşteriye göndermek istiyorsanız)
  • Farklı QoS düzeyleriyle güvenilir bir şekilde veri göndermeniz gerekiyor

MQTT, HTTPS kadar güvenlik sunuyor mu?

MQTT, TCP'yi aktarım protokolü olarak kullanır, yani varsayılan olarak bağlantı şifreli bir iletişim kullanmaz. Tüm MQTT iletişimini şifrelemek için, çoğu MQTT brokeri - HiveMQ gibi - düz TCP yerine TLS kullanılmasına izin verir.

Ref: HiveMQ


1
MQTT HTTPS kadar güvenlik sunuyor mu?
Bence Kaulics

2
SSL / TLS kullanabilir, böylece HTTPS kadar güvenli olmalıdır.
Ghanima

1
Tam olarak @ Ganima'nın dediği gibi, MQTT’yi güvenceye alma konusundaki görüşmeleri kontrol etmek için cevabı referans makalesi ile güncelledim.
bravokeyl

11

MQTT (Message Queue Telemetry Transport) önerilen uygulama için uygun görünüyor.

Hem bant genişliğine (sadece 2 byte'lık başlıklı en küçük paket büyüklüğü) hem de müşteri kodu ayak izine (ESP8266, tipik IoT istemcisi gibi ince istemcilerde çalışmasını sağlayan) göre hafiftir. Azaltılmış iletilen veriler, sensörler gibi şebekeden bağımsız pille çalışan müşteriler için daha uzun pil ömrü için faydalıdır.

MQTT ayrıca, beklenmeyen istemci bağlantılarının kesilmesinden sonra bağlantıları kurtaran dayanıklı abonelikler gibi IoT görevlerine de uygun basit yöntemler ( fiiller ) sunar . HTTP / HTTPS ile karşılaştırıldığında, paketten veri çıkarmak da daha kolaydır (ayrıştırıcıya gerek yoktur).


5

Burada projemizde sahip olduğumuz iletişim sistemindeki evrimi ve gelişimi gösteren bir makale yazdım . Mikro hizmetler hakkında, ancak herhangi bir telemetri verisini toplamak ve yayınlamak için herhangi bir sensörün mikro hizmet olduğunu düşünebilirsiniz.

Bu yüzden en önemli sonuç, yalnızca bir yere etkinlik göndermeniz gerektiğinde ve alıcı hakkında hiçbir şey bilmediğiniz durumlarda MQTT'yi kullanmanın daha iyi olacağıdır. Ve alıcı hakkında bir şey bildiğinizde ve bazı cevaplara ihtiyaç duyduğunuzda, örneğin ne olursa olsun komutlarında HTTP (genellikle REST) ​​kullanmak daha iyidir.

Trafikten CPU, bellek ve enerji tüketimi perspektifleri MQTT ve HTTP temelde aynıdır.


2

Teklifinize gelince, MQTT "Nesnelerin İnterneti Protokolü" dür:

Evet, bu protokolü kullanan çok sayıda geliştirici var (bkz. IoT Geliştirici Anketi 2018), ancak CoAP ( IoP için UDP'ye göre ayarlanmıştır), içinde hafif bir İstek / Yanıt işlevi kullanmak istemeniz durumunda HTTP için bir alternatif sunar. başvurunuz.

Diğer yandan MQTT , ölçeklendirme için harika kılan yerleşik bir Yayınlama / Abone Olma mantığı sağlar (daha fazla cihaz için daha fazla ağ geçidi kullanabilirsiniz). Ayrıca MQTT-SN (Sensör Ağları için MQTT ) olarak adlandırılan bir UDP alternatifi (HTTP’ye CoAP gibi ) de vardır. Bu, CoAP'tan daha küçük bir yük sağlar, ancak R / R'yi kullanmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.