Angenommen, es gibt zahlreiche schwache Sensoren (z. B. Geräte auf Arduino-Ebene), die BLE als Kommunikationsmittel verwenden, und diese Geräte sind mit einem leistungsstärkeren Gateway verbunden (z. B. Geräte auf Raspberry-Pi-Ebene).
Ich würde gerne wissen, ob MQTT als geeignetes Protokoll für die Übertragung ihrer Messwerte angesehen wird (kurze, häufige Burst-Meldungen).
Eine Reihe von Blogs / Dokumenten betrachten MQTT als geeignet für "IoT-Anwendungen", da es im Vergleich zu HTTP ein geringes Gewicht hat und Strom spart. Nach meinem Verständnis muss jedoch eine Verbindung offen gehalten werden, was bei BLE oder anderen für das Internet der Dinge geeigneten Kommunikationsprotokollen nicht der Fall ist. BLE hält die Verbindung nicht für längere Zeit offen, um Energie zu sparen. Offensichtlich ist MQTT geeignet, wenn ein MAC-Layer-Protokoll wie WiFi verwendet wird. Dies verstößt fast gegen die Gründe, die hinter der Verwendung von MQTT stehen (dh wenn das Gerät ein Protokoll wie WiFi rechnerisch handhabt, benötigt es möglicherweise kein Protokoll wie MQTT). Sehen Sie einen Fehler in dieser Logik?
Gibt es ein alternatives Anwendungsschichtprotokoll für diesen Zweck? Was ist die am häufigsten gesehene Struktur dieser Art von Nachrichten (z. B. Rohdaten, JSON, XML), wenn sie mit einem Gateway kommunizieren und wenn sie direkt mit einem Server kommunizieren?
Antworten:
MQTT muss über TCP / IP laufen (ich kann mich nicht erinnern, ob es tatsächlich in der Spezifikation enthalten ist oder ob nur ausreichende Annahmen getroffen wurden), aber sein Schwesterprotokoll MQTT-SN kann über nahezu jedes Protokoll laufen, das Daten übertragen kann Ich habe Implementierungen in UDP und seriell gesehen.
Obwohl ich mir nicht sicher bin, was Sie mit BLE erreichen, bieten die integrierten Eigenschaften von BLE (wenn auch nur eins zu eins) den gleichen Vorteil, beispielsweise durch Benachrichtigung.
Ich denke, eines der wichtigsten Dinge, an die man sich erinnern sollte, ist, wofür das "Ich" im IoT steht. Es impliziert irgendwann den Zugang zum Internet (auch wenn es sich um ein Gateway-Gerät oder ein Telefon handelt). An diesem Punkt kann MQTT sehr nützlich sein, aber es bedeutet nicht unbedingt den ganzen Weg bis zur (Blutungs) kante.
quelle
Wahrscheinlich ist es besser, eine einfache Zuordnung der Daten von BLE-Paradigmen zu MQTT vorzunehmen, als zu versuchen, MQTT buchstäblich über BLE zu senden.
BLE tauscht Daten in der Regel in Form von Merkmalen aus . Diese verfügen über verschiedene BLE-spezifische Mechanismen zum Auffinden von Wertänderungen, die Sie möglicherweise nützlich finden. Sie haben jedoch eine maximale Datenlänge von 20 Byte .
Es ist möglich , serielle Daten über BLE zu streamen, wobei jeweils 20 Bytes verschoben werden. Dies geschieht manchmal, um einen virtuellen seriellen Port zu implementieren, und Sie können durch diesen einen vollständigen MQTT-Tunnel erstellen.
Aber Sie würden wahrscheinlich besser eine Sammlung von BLE Merkmalen zu verwenden , um die Daten von verschiedenen Themen zu tragen, und eine Brücke haben die Karten die charakteristische Identität zu einem MQTT Thema und ordnet den Wert auf die MQTT Nutzlast.
BLE hat seinen eigenen Sinn für fortlaufende verbundene Sitzungen im Vergleich zu nicht verbundenen Sitzungen. Wahrscheinlich sollten Sie herausfinden, welche Verwendung von BLE für Ihre Anwendung am besten geeignet ist, und dies dann dem MQTT-Gefühl der Aufrechterhaltung einer Verbindung zuordnen.
Dies sollte in einer oder beiden Richtungen möglich sein: BLE-> MQTT und MQTT-> BLE
quelle