MQTT veya HTTP kullanmam gerekir mi?


9

Sıcaklık, nem vb.Gibi ortamdan bilgi toplayan ve toplayan bir cihaz üzerinde çalışıyorum.

Cihaz herhangi bir güç kaynağına bağlı değil, ancak bir pili ve şarj etmek için bir güneş paneli var.

Neredeyse çoğu zaman derin bir uyku durumundadır ve sadece verileri algılaması ve aktarması gerektiğinde uyanır. Bu işlem yaklaşık 1-2 dakika sürer ve sonra tekrar uykuya dalar.

Bu alanda uzman değilim, ancak cihazın her zaman bir konudan mesaj alabilmesi için MQTT'nin iyi bir seçenek olması gerektiğini düşünüyorum, ancak senaryomda sadece sensörleri okuyor ve bir periyodik olarak.

Şu anda veri HTTP üzerinden gönderiyorum, ama MQTT uygulamak mantıklı olup olmadığını merak ediyorum? Bu senaryo için HTTP'den herhangi bir avantaj elde etmeli miyim?


1
Bu benzer, ancak benim senaryomda MQTT uygulamak gerekip gerekmediğini anlamak için: cihazım zamanın% 99'u derin uykuda olacak ve sadece okuma göndermek için uyanmak.
zephrax

1
Ben de önermem. Öncelikle gereksinimlerinizi yazın ve en basit protokolü uygulayın. Çim kesmek için bir çim biçme makinesinde bir Ferrari Motoru kullanmak mantıklı olmaz. İşlerin vızıltısına kapılmayın - Sadece temel araştırmanızı yapın ve en iyi olanı uygulayın.
Xofo

Soru başlığındaki gereksinimi yakalamak iyi olurdu, Genel olarak, küçük, seyrek sensör değerleri hakkında soru sordunuz.
Sean Houlihane

@Xofo Bu sorunun cevabını ve neden özel bir protokol kullanmanızı önerebileceğinizi görmek isterim. 'Kendinizinkini yuvarlamak' için ek bir çabaya, ayrıca güvenlik sorunlarına vb. Değer mi?
Aurora0001

Özel bir protokol değil ... Öncelikle gereksinimleri tanımladım dedim. Öngörülen protokollerden bazıları genellikle çok ağırdır.
Xofo

Yanıtlar:


8

Veri saklıyorsanız, HTTP ile devam etmeniz yeterlidir. HTTP sadece tek yönlü bir sinyaldir.

Sunucunuz veya başka bir "şey" belirli bir sinyale (düşük sıcaklık, ...) tepki vermesi gerekiyorsa MQTT kullanın. Bunun gibi birçok cihaz sıcaklık sinyalinize abone olabilir ve sunucunuzu kullanmadan hemen tepki verebilir.


1
Ayrıca aynı anda büyük (http) ve küçük (mqtt) veri arasında bir ayrım vardır ve ayrıca mqtt kötü sinyal koşullarında daha güvenilirdir.
mico

1
Sunucu yalnızca sensörlerden veri alır. Yazımın amacı, MQTT'yi kullanmak için mantıklı olup olmadığından emin değilim, çünkü cihaz derin uyku durumunda zamanın% 99'u olacak (tüm otobüsler, modem, sensörler kapalı) ve sadece sensörleri okumak ve veri göndermek için uyanır.
zephrax

Verilerinizi bir yerde saklarsanız, bu bir veritabanı ve onu sorgulamak için bir arka uç yolunuz olduğu anlamına gelir (apache sunucusu, komut satırı SQL, ...). Bunun üzerine bir MQTT koyarsanız, yönetilecek başka bir örnek ve bağlantı noktasına sahip olursunuz.
Goufalite

1
Bu yanıta katılıyorum. İki yönlü iletişime ihtiyacınız yoksa ve cihaz çok fazla uyuyorsa, HTTP basit ve uygun bir protokol seçimidir.
TheMagicCow

8

Cihazın bir parçası olarak bir güneş paneli ve pilden bahsediyorsunuz, bu nedenle muhtemelen cihazınızın gücünün tamamen bitmediğinden emin olmak için iletim sırasında güç kullanımını en aza indirmek istersiniz.

Bu nedenle, dikkate almak isteyebilirsiniz COAP , nstrained bir pplication P özellikle Şeylerin internette kısıtlanmış cihazlar için tasarlanmış rotocol.

Yazıda şeyler uygulamaların Web COAP maliyet verimliliğini ve HTTP karşılaştırılması , sen COAP burada bazı güç tasarrufu elde edebildiği bazı oldukça ikna edici bir kanıt bulabilirsiniz. Ek A'da (sayfa 38), Tablo A.4'teki cihazların beklenen pil ömrüne göz atabilirsiniz. Kullanım durumunuzda beklediğiniz gibi 120 saniyelik bir zaman aralığı için:

t bat (HTTP), günler - 2013

t yarasa (CoAP), gün - 11013

Bu hesaplamalar bir çift karbon-çinko AA pil üzerinde gerçekleştirildi, ancak CoAP'ın çok daha az güç kullandığını açıkça görebilirsiniz, bu yüzden dikkate almaya değer olabilir. Makalede açıklandığı gibi 'itme modu' tam olarak yapmayı planladığınız bir şey gibi görünüyor.

Özellikle CoAP hakkında sormamanıza rağmen, Goufalite zaten MQTT ve HTTP arasındaki temel farkları kapsadığından bahsetmeye değer. Önemli bir kural şudur: Bire bir mi yoksa bire çok mu iletişim kurmayı planlıyor musunuz? Eskiyse, HTTP ve CoAP daha iyi uyuyor gibi görünüyor. Eğer ikinciyse, MQTT muhtemelen daha uygundur.

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.