Wie interagiert ein Azure IoT Hub mit Embedded- / IoT-Geräten?

13

Ich arbeite an der Azure IoT-Plattform und verstehe, wie Geräte Daten an den IoT-Hub senden (wenn ich mich nicht irre, handelt es sich nur um einen Webdienstaufruf oder ähnliches).

Ich frage mich jedoch, wie der IoT-Hub Daten / Befehle / Eingaben an die Geräte sendet, da wir nicht am IoT-Hub für die Gerätekommunikation arbeiten (wir müssen keine Daten auf die Geräte übertragen). Kann der IoT-Hub direkt mit den Geräten interagieren? (Verwenden Sie die eindeutige ID des Geräts oder eine eindeutige Identität wie IP, Mac-Adresse usw.).

Irgendwo habe ich gelesen, dass Geräte immer wieder Anfragen an den IoT-Hub richten, wenn für sie IoT-Hub-Eingaben vorliegen, und der IoT-Hub sendet daraufhin Daten / Befehle / Eingaben an Geräte als Antwort. Ist das wahr? Wenn nicht, dann bitte erläutern.

Shri
quelle

Antworten:

14

Das Modell, das mit IoT Hub verbundene Geräte verwenden, ist, dass sie niemals eingehende Verbindungen akzeptieren. IoT-Hub-Geräte fungieren niemals als "Server". Dies ist ein entscheidender Bestandteil des Sicherheitsmodells in Azure IoT. Das endgültige Modell hierfür ist in Clemens Vasters ' ' Service Assisted Communication '' enthalten .

Daher rufen Geräte immer einen externen Dienst ab, um Daten zu senden oder Befehle zu empfangen. Die APIs lassen es so aussehen, als würden Daten an ein Gerät gesendet, aber es ist immer das Gerät, das die ausgehende Verbindung herstellt.

IoT Hub führt dies auf zwei Arten durch:

  1. Durch Senden von Daten an den Geräteendpunkt /devices/{deviceId}/messages/devicebound. Dies ist ein AMQP-Messaging-Endpunkt, ähnlich einer Warteschlangen- oder Themenabonnement. Das Gerät muss beim Lesen von Befehlen bei Bedarf den Empfang bestätigen, was Teil des zugrunde liegenden AMQP-Protokolls ist. Dies funktioniert genauso mit MQTT und https ist ein gültiger Fallback. Die API übernimmt all dies für Sie. Es gibt zusätzliche Konzepte, z. B. "direkte Methoden", die ein API-Wrapper sind, der im Wesentlichen dasselbe zugrunde liegende Nachrichtenprotokoll umgibt
  2. Mithilfe des serverseitigen Gerätezwillings können Eigenschaften logisch zwischen Gerät und Server synchronisiert werden. Sie legen eine Eigenschaft für den Gerätezwilling fest. Wenn das Gerät diese Eigenschaft synchronisiert, wird sie mit dem Gerät synchronisiert. Dies ist weniger nachrichtenbasiert und basiert auf dem LWM2M-Geräteverwaltungsprotokoll.

Ein Großteil des Abfragens, Verbindens, Teilens von Verbindungen, Quittungen usw. sollte im Rahmen des AMQP-Protokolls (oder MQTT-Protokolls) erledigt werden, das wiederum im IoT Hub SDK enthalten ist. Daher ist das oben Genannte stark vereinfacht, aber um es noch einmal zu wiederholen, IoT Hub kann und wird nicht (jemals) versuchen, Daten an eine IP-Adresse / einen IP-Port auf Ihrem Gerät zu senden.

Simon Munro
quelle
Vielen Dank @ Simon, jetzt ist mir klar, dass Geräte nur dafür verantwortlich sind, den IoT-Hub zum Senden oder Empfangen von Daten anzurufen. Sie haben in Ihrer Antwort "Azure IoT" erwähnt, möchten also nur bestätigen, dass Ihre Antwortanwendung auf allen IoT-Plattformen verfügbar ist? oder nur für Azure IoT.
Shri
@ShrikantBhusalwad Die Antwort kann nicht auf alle Plattformen angewendet werden, da viele noch nicht entwickelt wurden. Dies ist ein gängiges Modell, das der Sicherheit dient, aber andere Modelle sind möglicherweise gerechtfertigt - insbesondere in einer neuen Umgebung.
Sean Houlihane
2
Ich bin nicht mit allen Plattformen vertraut, aber die meisten Cloud-Plattformen werden ähnlich sein. AWS verwendet MQTT, das meistens dasselbe ist. Wie @sean feststellt, kann es nicht auf alle Plattformen angewendet werden, aber nur sehr wenige Cloud- Plattformen bringen im Vorfeld riskante Sicherheitsmaßnahmen mit sich. Methoden, die Geräte-als-Server-Modelle verwenden, sind entweder Legacy-Methoden oder haben eine weitaus höhere Sicherheitsstufe (je nach Entwicklung von Kanten- oder Netzmustern). Azure IoT unterstützt auf architektonische Weise Feld- und Cloud-Gateways, um Probleme mit älteren oder Edge-basierten Geräten
Simon Munro
Die MQTT-Regeln für Azure IoT Hub sind unter docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support
Gambit Support