Välj ett protokoll för enhetskommunikation

Med IoT Hub kan enheter använda följande protokoll för kommunikation på enhetssidan:

Kommentar

IoT Hub har begränsat funktionsstöd för MQTT. Om din lösning behöver stöd för MQTT v3.1.1 eller v5 rekommenderar vi MQTT-stöd i Azure Event Grid. Mer information finns i Jämför MQTT-stöd i IoT Hub och Event Grid.

Information om hur dessa protokoll stöder specifika IoT Hub-funktioner finns i Vägledning för kommunikation från enhet till moln och vägledning för kommunikation från moln till enhet.

Följande tabell innehåller rekommendationer på hög nivå för ditt val av protokoll:

Protokoll När du ska välja det här protokollet
MQTT
MQTT över WebSockets
Använd på alla enheter som inte kräver anslutning till flera enheter, var och en med sina egna autentiseringsuppgifter per enhet, via samma TLS-anslutning.
AMQP
AMQP över WebSockets
Använd på fält- och molngatewayer för att dra nytta av multipling av anslutningar mellan enheter.
HTTPS Används för enheter som inte har stöd för andra protokoll.

Tänk på följande när du väljer ditt protokoll för kommunikation på enhetssidan:

  • Mönster för moln-till-enhet. HTTPS har inte ett effektivt sätt att implementera server push. När du använder HTTPS avsöker enheterna därför IoT Hub efter meddelanden från moln till enhet. Den här metoden är ineffektiv för både enheten och IoT Hub. Enligt de aktuella HTTPS-riktlinjerna bör varje enhet söka efter meddelanden var 25:e minut eller mer. Om du utfärdar fler HTTPS får du resultat av att IoT Hub begränsar begärandena. MQTT- och AMQP-supportserver push när du tar emot meddelanden från moln till enhet. De möjliggör omedelbara push-överföringar av meddelanden från IoT Hub till enheten. Om leveransfördröjningen är ett problem är MQTT eller AMQP de bästa protokollen att använda. För sällan anslutna enheter fungerar ÄVEN HTTPS.

  • Fältgatewayer. MQTT och HTTPS stöder endast en enskild enhetsidentitet (enhets-ID plus autentiseringsuppgifter) per TLS-anslutning. Därför stöds inte dessa protokoll för fältgatewayscenarier som kräver multiplexeringsmeddelanden, med flera enhetsidentiteter, över antingen en enda anslutning eller en pool med överordnade anslutningar till IoT Hub. Sådana gatewayer kan använda ett protokoll som stöder flera enhetsidentiteter per anslutning, till exempel AMQP, för deras överordnade trafik.

  • Låg resursenheter. MQTT- och HTTPS-biblioteken har ett mindre fotavtryck än AMQP-biblioteken. Om enheten därför har begränsade resurser (till exempel mindre än 1 MB RAM-minne) kan dessa protokoll vara den enda tillgängliga protokollimplementeringen.

  • Nätverksbläddering. Standard-AMQP-protokollet använder port 5671 och MQTT lyssnar på port 8883. Användning av dessa portar kan orsaka problem i nätverk som är stängda för icke-HTTPS-protokoll. Använd MQTT via WebSockets, AMQP över WebSockets eller HTTPS i det här scenariot.

  • Nyttolaststorlek. MQTT och AMQP är binära protokoll, vilket resulterar i mer kompakta nyttolaster än HTTPS.

Varning

När du använder HTTPS bör varje enhet söka efter meddelanden från moln till enhet högst en gång var 25:e minut. Under utveckling kan varje enhet avsökas oftare, om så önskas.

Viktigt!

Följande funktioner för enheter som använder X.509-certifikatutfärdarautentisering (CA) är ännu inte allmänt tillgängliga och förhandsgranskningsläget måste vara aktiverat:

  • HTTPS, MQTT över WebSockets och AMQP via WebSockets-protokoll.
  • Filuppladdningar (alla protokoll).

Dessa funktioner är allmänt tillgängliga på enheter som använder X.509 tumavtrycksautentisering. Mer information om X.509-autentisering med IoT Hub finns i X.509-certifikat som stöds.

Portnummer

Enheter kan kommunicera med IoT Hub i Azure med hjälp av olika protokoll. Vanligtvis drivs valet av protokoll av de specifika kraven i lösningen. I följande tabell visas de utgående portar som måste vara öppna för att en enhet ska kunna använda ett specifikt protokoll:

Protokoll Port
MQTT 8883
MQTT över WebSockets 443
AMQP 5671
AMQP över WebSockets 443
HTTPS 443

IP-adressen för en IoT-hubb kan komma att ändras utan föregående meddelande. Information om hur du minimerar effekterna av IoT Hub IP-adressändringar på din IoT-lösning och dina enheter finns i avsnittet Metodtips för IP-adresser för IoT Hub.

Nästa steg

Mer information om hur IoT Hub implementerar MQTT-protokollet finns i Kommunicera med din IoT-hubb med MQTT-protokollet.