Muss ich MQTT oder HTTP verwenden?

9

Ich arbeite an einem Gerät, das Informationen aus der Umgebung wie Temperatur, Luftfeuchtigkeit usw. erfasst und sammelt.

Das Gerät ist an keine Stromquelle angeschlossen, verfügt jedoch über einen Akku und ein Solarpanel zum Laden.

Es befindet sich die meiste Zeit fast im Tiefschlaf und wird nur dann aktiviert, wenn Daten erfasst und übertragen werden müssen. Dieser Vorgang dauert ca. 1-2 Minuten und geht dann wieder in den Ruhezustand.

Ich bin kein Experte auf diesem Gebiet, aber ich denke, MQTT sollte eine gute Option sein, wenn das Gerät immer zugänglich sein muss, um Nachrichten von einem Thema zu empfangen, aber in meinem Szenario liest es nur Sensoren und sendet Daten an a Server regelmäßig.

Derzeit sende ich die Daten über HTTP, frage mich jedoch, ob die Implementierung von MQTT sinnvoll ist. Sollte ich für dieses Szenario einen Vorteil gegenüber HTTP erhalten?

Zephrax
quelle
1
Es ist ähnlich, aber ich möchte verstehen, ob ich MQTT in meinem Szenario implementieren muss: Wenn mein Gerät 99% der Zeit im Tiefschlaf ist und nur zum Senden von Messwerten aufwacht.
Zephrax
1
Ich würde weder vorschlagen. Schreiben Sie zunächst Ihre Anforderungen auf und implementieren Sie das einfachste Protokoll. Es wäre nicht sinnvoll, einen Ferrari-Motor in einem Rasenmäher zum Mähen von Gras zu verwenden. Lassen Sie sich nicht in die Mode der Dinge verwickeln - machen Sie einfach Ihre Grundlagenforschung und implementieren Sie, was am besten funktioniert.
Xofo
Es wäre schön, die Anforderung im Fragentitel zu erfassen. Generell fragen Sie nach kleinen, seltenen Sensorwerten, denke ich.
Sean Houlihane
@Xofo Es würde mich interessieren, eine Antwort darauf zu finden und warum Sie möglicherweise die Verwendung eines benutzerdefinierten Protokolls vorschlagen. Lohnt sich der zusätzliche Aufwand für das "Rolling Your Own" sowie die Sicherheitsprobleme usw.?
Aurora0001
Kein benutzerdefiniertes Protokoll ... Ich sagte zuerst definieren die Anforderungen. Einige der vorgeschriebenen Protokolle sind oft zu schwer.
Xofo

Antworten:

8

Wenn Sie Daten speichern, bleiben Sie einfach bei HTTP. HTTP ist nur ein Einweg-Signal.

Wenn Ihr Server oder ein anderes "Ding" auf ein bestimmtes Signal (niedrige Temperatur, ...) reagieren soll, verwenden Sie MQTT. Auf diese Weise können viele Geräte Ihr Temperatursignal abonnieren und sofort reagieren, ohne Ihren Server zu verwenden.

Goufalite
quelle
1
Außerdem gibt es eine Aufteilung zwischen großer (http) und kleiner (mqtt) Datenmenge gleichzeitig, und auch mqtt ist bei schlechten Signalbedingungen zuverlässiger.
Mico
1
Der Server empfängt nur Daten von Sensoren. Der Punkt meines Beitrags ist, dass ich nicht sicher bin, ob die Verwendung von MQTT sinnvoll ist, da sich das Gerät zu 99% im Tiefschlaf befindet (alle Busse, Modems, Sensoren ausgeschaltet) und nur wacht auf, um Sensoren zu lesen und Daten zu senden.
Zephrax
Wenn Sie Ihre Daten irgendwo speichern, bedeutet dies, dass Sie über eine Datenbank und eine Backend-Methode zum Abfragen verfügen (Apache-Server, Befehlszeilen-SQL, ...). Wenn Sie einen MQTT darüber legen, müssen Sie eine andere Instanz und einen anderen Port verwalten.
Goufalite
1
Ich stimme dieser Antwort zu. Wenn Sie keine bidirektionale Kommunikation benötigen und das Gerät häufig schläft, ist HTTP eine einfache und geeignete Protokollwahl.
TheMagicCow
8

Sie erwähnen ein Solarpanel und einen Akku als Teil des Geräts. Daher möchten Sie wahrscheinlich den Stromverbrauch während der Übertragung minimieren, um sicherzustellen, dass Ihrem Gerät nicht der Strom vollständig ausgeht.

Daher sollten Sie CoAP in Betracht ziehen , das Co nstrained A pplication P- Rotocol, das speziell für eingeschränkte Geräte im Internet der Dinge entwickelt wurde.

In dem Artikel Vergleich der Kosteneffizienz von CoAP und HTTP in Web of Things-Anwendungen finden Sie einige überzeugende Beweise dafür, dass Sie mit CoAP hier möglicherweise Energie sparen. In Anhang A (Seite 38) können Sie die erwartete Akkulaufzeit von Geräten in Tabelle A.4 überprüfen. Für ein Zeitintervall von 120 Sekunden, wie Sie es in Ihrem Anwendungsfall erwarten:

t bat (HTTP), Tage - 2013

t bat (CoAP), Tage - 11013

Diese Berechnungen wurden mit einem Paar AA-Kohlenstoff-Zink-Batterien durchgeführt, aber Sie können deutlich sehen, dass CoAP viel weniger Strom verbraucht, sodass es sich möglicherweise lohnt, darüber nachzudenken. Der im Artikel beschriebene "Push-Modus" scheint genau das zu sein, was Sie vorhaben.

Obwohl Sie nicht speziell nach CoAP gefragt haben, ist es meiner Meinung nach eine Erwähnung wert, da Goufalite bereits die wesentlichen Unterschiede zwischen MQTT und HTTP behandelt hat. Eine gute Faustregel lautet: Planen Sie, eins zu eins oder eins zu viele zu kommunizieren ? Wenn es das erstere ist, scheinen HTTP und CoAP besser zu passen. Wenn es das letztere ist, ist MQTT wahrscheinlich bequemer.

Aurora0001
quelle