Podpora IoT Hub MQTT 5 (zastaralá)
Verze: 2.0 api-version: 2020-10-01-preview
Tento dokument definuje rozhraní API roviny dat ioT Hubu přes protokol MQTT verze 5.0. Kompletní definice v tomto rozhraní API najdete v referenčních informacích k rozhraní API.
Poznámka:
Podpora MQTT 5 ve službě IoT Hub je zastaralá a IoT Hub má omezenou podporu funkcí pro MQTT. Pokud vaše řešení potřebuje podporu MQTT v3.1.1 nebo v5, doporučujeme podporu MQTT ve službě Azure Event Grid. Další informace najdete v tématu Porovnání podpory MQTT ve službě IoT Hub a Event Gridu.
Požadavky
- Vytvořte zcela nové centrum IoT s povoleným režimem náhledu. MQTT 5 je k dispozici pouze v režimu náhledu a existující centrum IoT Hub nemůžete přepnout do režimu náhledu. Další informace najdete v tématu Povolení režimu náhledu.
- Předchozí znalost specifikace MQTT 5
Úroveň podpory a omezení
Podpora služby IoT Hub pro MQTT 5 je ve verzi Preview a omezuje se následujícími způsoby (informace o klientech prostřednictvím CONNACK
vlastností, pokud není výslovně uvedeno jinak):
- Žádné oficiální sady SDK pro zařízení Azure IoT zatím nepodporují.
- Identifikátory předplatného se nepodporují.
- Sdílená předplatná nejsou podporovaná.
RETAIN
není podporováno.Maximum QoS
je1
.Maximum Packet Size
je256 KiB
(s výhradou dalších omezení pro každou operaci).- Přiřazené ID klientů se nepodporují.
Keep Alive
je omezena na19 min
(maximální prodleva kontroly liveness –28.5 min
).Topic Alias Maximum
je10
.Response Information
není podporováno;CONNACK
nevracíResponse Information
vlastnost, i kdyžCONNECT
obsahujeRequest Response Information
vlastnost.Receive Maximum
(maximální povolený počet nevyřízených nevyřízenýchPUBLISH
paketů (ve směru klienta-server) sQoS: 1
) je16
.- Jeden klient nemůže mít více než
50
předplatná. Pokud klient dosáhne limitu předplatného,SUBACK
vrátí0x97
kód důvodu (překročení kvóty) pro předplatná.
Životní cyklus připojení
Connection
Pokud chcete pomocí tohoto rozhraní API připojit klienta ke službě IoT Hub, navazujte připojení podle specifikace MQTT 5.
Klient musí odesílat CONNECT
pakety do 30 sekund po úspěšném použití metody handshake protokolu TLS nebo server připojení zavře.
Tady je příklad paketu CONNECT
:
-> CONNECT
Protocol_Version: 5
Clean_Start: 0
Client_Id: D1
Authentication_Method: SAS
Authentication_Data: {SAS bytes}
api-version: 2020-10-10
host: abc.azure-devices.net
sas-at: 1600987795320
sas-expiry: 1600987195320
client-agent: artisan;Linux
Authentication Method
vlastnost je povinná a určuje, kterou metodu ověřování se používá. Další informace o metodě ověřování najdete v tématu Ověřování.Authentication Data
zpracování majetku závisí naAuthentication Method
. Je-liAuthentication Method
nastavena naSAS
hodnotu ,Authentication Data
je nutné a musí obsahovat platný podpis. Další informace o ověřovacích datech najdete v tématu Ověřování.api-version
vlastnost je povinná a musí být nastavena na hodnotu verze rozhraní API zadanou v hlavičce této specifikace, aby se tato specifikace použila.host
vlastnost definuje název hostitele tenanta. Vyžaduje se, pokud se během handshakeu TLS nezobrazí rozšíření SNI v záznamu Hello klienta.sas-at
definuje čas připojení.sas-expiry
definuje dobu vypršení platnosti zadaného sdíleného přístupového podpisu.client-agent
volitelně sdělí informace o klientovi, který vytváří připojení.
Poznámka:
Authentication Method
a další vlastnosti v celé specifikaci s velkými písmeny jsou vlastnosti první třídy v MQTT 5 – jsou popsány v podrobnostech ve specifikaci MQTT 5. api-version
a další vlastnosti v případě pomlčky jsou vlastnosti uživatele specifické pro rozhraní API služby IoT Hub.
IoT Hub po dokončení ověřování odpoví paketem CONNACK
a načte data pro podporu připojení. Pokud se připojení úspěšně naváže, CONNACK
vypadá to takto:
<- CONNACK
Session_Present: 1
Reason_Code: 0x00
Session_Expiry_Interval: 0xFFFFFFFF # included only if CONNECT specified value less than 0xFFFFFFFF and more than 0x00
Receive_Maximum: 16
Maximum_QoS: 1
Retain_Available: 0
Maximum_Packet_Size: 262144
Topic_Alias_Maximum: 10
Subscription_Identifiers_Available: 0
Shared_Subscriptions_Available: 0
Server_Keep_Alive: 1140 # included only if client did not specify Keep Alive or if it specified a bigger value
Tyto CONNACK
vlastnosti paketů odpovídají specifikaci MQTT 5. Odrážejí možnosti služby IoT Hub.
Ověřování
Vlastnost Authentication Method
na CONNECT
klientovi definuje, jaký druh ověřování používá pro toto připojení:
SAS
- Sdílený přístupový podpis je k dispozici veCONNECT
Authentication Data
vlastnosti,X509
– klient spoléhá na ověřování klientských certifikátů.
Ověřování selže, pokud metoda ověřování neodpovídá nakonfigurované metodě klienta ve službě IoT Hub.
Poznámka:
Toto rozhraní API vyžaduje Authentication Method
, aby byla vlastnost nastavena v CONNECT
paketu. Pokud Authentication Method
vlastnost není k dispozici, připojení selže s Bad Request
odpovědí.
Ověřování pomocí uživatelského jména a hesla použité v předchozích verzích rozhraní API se nepodporuje.
SAS
Při ověřování založeném na SAS musí klient zadat podpis kontextu připojení. Podpis prokáže pravost připojení MQTT. Podpis musí být založený na jednom ze dvou ověřovacích klíčů v konfiguraci klienta ve službě IoT Hub. Nebo musí být založená na jednom ze dvou sdílených přístupových klíčů zásad sdíleného přístupu.
Řetězec k podepsání musí být vytvořen následujícím způsobem:
{host name}\n
{Client Id}\n
{sas-policy}\n
{sas-at}\n
{sas-expiry}\n
host name
je odvozena buď z rozšíření SNI (prezentované klientem v záznamu Client Hello během metody handshake protokolu TLS) nebohost
vlastnost uživatele v paketuCONNECT
.Client Id
je identifikátor klienta vCONNECT
paketu.sas-policy
– pokud je k dispozici, definuje zásady přístupu ke službě IoT Hub používané pro ověřování. Kóduje se jako vlastnost uživatele vCONNECT
paketu. Volitelné: Vynechání znamená, že se místo toho použijí nastavení ověřování v registru zařízení.sas-at
– pokud je k dispozici, určuje čas připojení – aktuální čas. Je kódován jako vlastnosttime
uživatele typu vCONNECT
paketu.sas-expiry
definuje dobu vypršení platnosti ověřování. Jedná se otime
vlastnost uživatele typu typ paketuCONNECT
. Tato vlastnost je povinná.
Pro volitelné parametry, pokud je vynechán, musí být prázdný řetězec použit místo v řetězci pro podepsání.
HMAC-SHA256 slouží k hashování řetězce na základě jednoho ze symetrických klíčů zařízení. Hodnota hash se pak nastaví jako hodnota Authentication Data
vlastnosti.
X509
Pokud Authentication Method
je vlastnost nastavená na X509
, IoT Hub ověří připojení na základě poskytnutého klientského certifikátu.
Opětovné ověření
Pokud se používá ověřování založené na SAS, doporučujeme používat krátkodobé ověřovací tokeny. Aby bylo připojení ověřené a aby se zabránilo odpojení kvůli vypršení platnosti, klient se musí znovu ověřit odesláním AUTH
paketu ( Reason Code: 0x19
opětovné ověření):
-> AUTH
Reason_Code: 0x19
Authentication_Method: SAS
Authentication_Data: {SAS bytes}
sas-at: {current time}
sas-expiry: {SAS expiry time}
Pravidla:
Authentication Method
musí být stejná jako ta, která se používá k počátečnímu ověřování.- Pokud bylo připojení původně ověřeno pomocí SAS na základě zásad sdíleného přístupu, podpis použitý při opětovném ověření musí být založený na stejné zásadě.
Pokud je opětovné ověření úspěšné, IoT Hub odešle AUTH
paket s Reason Code: 0x00
(úspěchem). V opačném případě IoT Hub odesílá DISCONNECT
paket s Reason Code: 0x87
(neautorizuje) a ukončí připojení.
Odpojení
Server může klienta odpojit z několika důvodů, mezi které patří:
- klient se chová špatně způsobem, který není možné odpovědět negativním potvrzením (nebo odpovědí) přímo,
- serveru se nedaří udržovat stav připojení aktuální,
- jiný klient se připojuje se stejnou identitou.
Server se může odpojit od kódu z jakéhokoli důvodu definovaného ve specifikaci MQTT 5.0. Notable zmínky:
135
(Neautorizuje se) při selhání opětovného ověření, vypršení platnosti aktuálního tokenu SAS nebo změně přihlašovacích údajů zařízení.142
(Relace převzala) při otevření nového připojení se stejnou identitou klienta.159
(Překročila se rychlost připojení) pokud rychlost připojení pro centrum IoT překročí limit.131
(Chyba specifická pro implementaci) se používá pro všechny vlastní chyby definované v tomto rozhraní API.status
areason
vlastnosti slouží ke sdělení dalších podrobností o příčině odpojení (viz odpověď s podrobnostmi).
Operace
Všechny funkce v tomto rozhraní API jsou vyjádřeny jako operace. Tady je příklad operace Odesílání telemetrie:
-> PUBLISH
QoS: 1
Packet_Id: 3
Topic: $iothub/telemetry
Payload: Hello
<- PUBACK
Packet_Id: 3
Reason_Code: 0
Kompletní specifikaci operací v tomto rozhraní API najdete v referenčních informacích k rozhraní API roviny dat ioT Hubu MQTT 5.
Poznámka:
Všechny ukázky v této specifikaci se zobrazují z pohledu klienta. Znaménko ->
znamená, že klient odesílá paket – <-
příjem.
Témata a odběry zpráv
Témata používaná ve zprávách operací v tomto rozhraní API začínají na $iothub/
.
Sémantika zprostředkovatele MQTT se na tyto operace nevztahuje (podrobnosti najdete v tématu Témata začínající na $).
Témata, která $iothub/
začínají tím, že nejsou definovaná v tomto rozhraní API, nejsou podporovaná:
- Odeslání zpráv do nedefinovaných výsledků tématu v
Not Found
odpovědi (podrobnosti najdete v části Odpověď ), - Přihlášení k odběru nedefinovaného tématu má za následek
SUBACK
Reason Code: 0x8F
(filtr témat je neplatný).
V názvech témat a názvech vlastností se rozlišují malá a velká písmena a musí se přesně shodovat. Například v době, $iothub/telemetry/
kdy $iothub/telemetry
je tato funkce, není podporovaná.
Poznámka:
Zástupné cardy v předplatných $iothub/..
nejsou podporované. To znamená, že klient se nemůže přihlásit k odběru $iothub/+
nebo $iothub/#
. Při pokusu o to bude výsledkem SUBACK
(nepodporovaná předplatná se zástupnými Reason Code: 0xA2
cardy). Pro operace, které je obsahují, se podporují pouze zástupné cardy s jedním segmentem (+
) místo parametrů cesty v názvu tématu.
Typy interakcí
Všechny operace v tomto rozhraní API jsou založené na jednom ze dvou typů interakcí:
- Zpráva s volitelným potvrzením (MessageAck)
- Request-Response (ReqRep)
Operace se také liší podle směru (podle směru počáteční zprávy v výměně):
- Klient-server (c2s)
- Server-to-Client (s2c)
Například send telemetry is Client-to-Server operation of "Message with potvrzení" type, zatímco Handle Direct Method is Server-to-Client operation of Request-Response type.
Interakce s potvrzením zpráv
Zpráva s volitelnou interakcí potvrzení (MessageAck) je vyjádřena jako výměna PUBLISH
PUBACK
paketů v MQTT. Potvrzení je volitelné a odesílatel si ho může vyžádat odesláním PUBLISH
paketu s QoS: 0
.
Poznámka:
Pokud musí být vlastnosti v PUBACK
paketu zkráceny z důvodu Maximum Packet Size
deklarování klientem, IoT Hub zachová tolik vlastností uživatele, kolik se může vejít do daného limitu. Vlastnosti uživatele uvedené jako první mají větší šanci odeslat než vlastnosti uvedené později; Reason String
vlastnost má nejnižší prioritu.
Příklad jednoduché interakce MessageAck
Zpráva:
PUBLISH
QoS: 1
Packet_Id: 34
Topic: $iothub/{request.path}
Payload: <any>
Potvrzení (úspěch):
PUBACK
Packet_Id: 34
Reason_Code: 0
Interakce požadavků a odpovědí
V interakcích Request-Response (ReqRep) se požadavek i odpověď překládají do PUBLISH
paketů s QoS: 0
.
Correlation Data
vlastnost musí být nastavena v obou a používá se k porovnávání paketu odpovědi na paket požadavku.
Toto rozhraní API používá jedno téma $iothub/responses
odpovědi pro všechny operace ReqRep. Přihlášení k odběru nebo zrušení odběru z tohoto tématu pro operace mezi klientem a serverem není povinné – server předpokládá, že se mají přihlásit k odběru všichni klienti.
Příklad jednoduché interakce ReqRep
Požadavek:
PUBLISH
QoS: 0
Topic: $iothub/{request.path}
Correlation_Data: 0x01 0xFA
Payload: ...
Odpověď (úspěch):
PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: 0x01 0xFA
Payload: ...
Interakce ReqRep nepodporují PUBLISH
pakety jako QoS: 1
zprávy požadavků nebo odpovědí. Odeslání výsledků požadavku PUBLISH
v Bad Request
odpovědi
Maximální délka podporovaná ve Correlation Data
vlastnosti je 16 bajtů. Pokud Correlation Data
je vlastnost paketu PUBLISH
nastavena na hodnotu delší než 16 bajtů, IoT Hub odešle DISCONNECT
výsledek Bad Request
a zavře připojení. Toto chování se vztahuje pouze na pakety vyměňované v rámci tohoto rozhraní API.
Poznámka:
Data korelace jsou libovolná bajtová sekvence, například není zaručeno, že se jedná o řetězec UTF-8.
ReqRep použít předdefinovaná témata pro odpověď; Vlastnost Téma odpovědi v paketu požadavku PUBLISH
(pokud je nastavena odesílatelem) je ignorována.
IoT Hub automaticky přihlásí klienta k odběru témat odpovědí pro všechny operace ReqRep mezi klienty. I když se klient výslovně odhlásí z tématu odpovědi, IoT Hub automaticky obnoví předplatné. U interakcí ReqRep mezi servery je stále nutné, aby se zařízení přihlásilo k odběru.
Vlastnosti zprávy
Vlastnosti operací – systém nebo uživatelem definované – jsou vyjádřeny jako vlastnosti paketů v MQTT 5.
Uživatelská jména vlastností rozlišují malá a velká písmena a musí být napsaná přesně tak, jak je definována. Například v době, Trace-ID
kdy trace-id
je tato funkce, není podporovaná.
Požadavky s vlastnostmi uživatele mimo specifikaci a bez předpony @
způsobí chybu.
Systémové vlastnosti jsou kódovány buď jako vlastnosti první třídy (například Content Type
) nebo jako vlastnosti uživatele. Specifikace poskytuje úplný seznam podporovaných vlastností systému.
Všechny vlastnosti první třídy jsou ignorovány, pokud není v specifikaci výslovně uvedena podpora.
Pokud jsou povoleny uživatelsky definované vlastnosti, musí jejich názvy následovat ve formátu @{property name}
. Uživatelem definované vlastnosti podporují pouze platné řetězcové hodnoty UTF-8. Vlastnost s hodnotou 15
musí být například MyProperty1
zakódována jako vlastnost User s názvem @MyProperty
a hodnotou 15
.
Pokud IoT Hub nerozpozná vlastnost User, považuje se za chybu a Služba IoT Hub odpoví chybou PUBACK
Reason Code: 0x83
(chyba specifická pro implementaci) a status: 0100
(Chybný požadavek). Pokud potvrzení nebylo požadováno (QoS: 0), DISCONNECT
paket se stejnou chybou se odešle zpět a připojení se ukončí.
Toto rozhraní API definuje kromě toho string
následující datové typy:
time
: počet milisekund od1970-01-01T00:00:00.000Z
. například1600987195320
pro2020-09-24T22:39:55.320Z
,u32
: 32bitové celé číslo bez znaménka,u64
: 64bitové celé číslo bez znaménka,i32
: 32bitové celé číslo.
Response
Interakce můžou mít za následek různé výsledky: Success
, Bad Request
, Not Found
a další.
Výsledky se navzájem rozlišují podle status
vlastnosti uživatele. Reason Code
v PUBACK
paketech (pro interakce MessageAck) odpovídá status
, pokud je to možné.
Poznámka:
Pokud klient zadá Request Problem Information: 0
paket CONNECT, nebudou u PUBACK
paketů odeslány žádné vlastnosti uživatele, aby byly v souladu se specifikací MQTT 5, včetně status
vlastnosti. V takovém případě se klient stále může spolehnout na Reason Code
určení, jestli je potvrzení kladné nebo záporné.
Každá interakce má výchozí (nebo úspěch). Reason Code
Má vlastnost 0
"status
not set". Jinak:
- Pro interakce
PUBACK
MessageAck získáReason Code
jiné než 0x0 (úspěch).status
mohou být přítomny k dalšímu objasnění výsledku. - V případě interakcí ReqRep získá
status
ResponsePUBLISH
sadu vlastností. - Vzhledem k tomu, že neexistuje způsob, jak reagovat na interakce
QoS: 0
MessageAck přímo,DISCONNECT
paket se odešle místo toho s informacemi o odpovědi a následným odpojením.
Příklady:
Chybný požadavek (MessageAck):
PUBACK
Reason_Code: 131
status: 0100
reason: Unknown property `test`
Not Authorized (MessageAck):
PUBACK
Reason_Code: 135
status: 0101
Not Authorized (ReqRep):
PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: ...
status: 0101
V případě potřeby IoT Hub nastaví následující vlastnosti uživatele:
status
– Rozšířený kód služby IoT Hub pro stav operace. Tento kód lze použít k rozlišení výsledků.trace-id
– ID trasování pro operaci; IoT Hub může udržovat další diagnostiku týkající se operace, která by se dala použít k internímu šetření.reason
- zprávu čitelný člověkem, která poskytuje další informace o tom, proč operace skončila ve stavu označenémstatus
vlastností.
Poznámka:
Pokud klient nastaví Maximum Packet Size
vlastnost v paketu CONNECT na velmi malou hodnotu, nemusí se všechny vlastnosti uživatele vejít a nezobrazí se v paketu.
reason
je určen pouze pro lidi a neměl by se používat v klientské logice. Toto rozhraní API umožňuje, aby se zprávy v libovolném okamžiku měnily bez upozornění nebo změny verze.
Pokud klient odešle RequestProblemInformation: 0
paket CONNECT, nebudou vlastnosti uživatele zahrnuty do potvrzení podle specifikace MQTT 5.
Stavový kód
status
vlastnost má stavový kód pro operaci. Je optimalizovaná pro efektivitu strojového čtení.
Skládá se z dvoubajtů bez znaménka zakódované jako šestnáctkové v řetězci jako 0501
.
Struktura kódu (bitová mapa):
7 6 5 4 3 2 1 0 | 7 6 5 4 3 2 1 0
0 0 0 0 0 R T T | C C C C C C C C
První bajt se používá pro příznaky:
- Bity 0 a 1 označují typ výsledků:
00
-úspěch01
– chyba klienta10
– chyba serveru
- bit 2: označuje, že chyba je opakovatelná.
1
- Bity 3 až 7 jsou rezervované a musí být nastaveny na
0
Druhý bajt obsahuje skutečný jedinečný kód odpovědi. Kódy chyb s různými příznaky můžou mít stejnou druhou bajtovou hodnotu. Mohou existovat například 0001
kódy chyb , , 0201
0101
0301
které mají odlišný význam.
Je to například Too Many Requests
klient, opakovatelná chyba s vlastním kódem 1
. Jeho hodnota je 0000 0101 0000 0001
nebo 0x0501
.
Klienti můžou pomocí bitů typu identifikovat, jestli se operace úspěšně ukončila. Klienti mohou také použít opakovatelný bit k rozhodnutí, zda je rozumné opakovat operaci.
Doporučení
Správa relací
CONNACK
paket přenese Session Present
vlastnost označující, zda server obnovil dříve vytvořenou relaci. Pomocí této vlastnosti zjistíte, jestli se chcete přihlásit k odběru témat nebo přeskočit přihlášení k odběru od dřívějšího dokončení předplatného.
Pokud se chcete spolehnout Session Present
, klient musí sledovat předplatná, která se provádí (tj. odesílaný SUBSCRIBE
paket a přijatý SUBACK
s kódem úspěšného důvodu), nebo se ujistěte, že se přihlásíte k odběru všech témat v rámci jedné SUBSCRIBE
/SUBACK
výměny. V opačném případě, pokud klient odešle dva SUBSCRIBE
pakety a server zpracuje pouze jeden z nich úspěšně, server komunikuje Session Present: 1
CONNACK
, zatímco má pouze část klientských předplatných přijatá.
Pokud chcete zabránit tomu, aby se starší verze klienta nepřihlásila k odběru všech témat, je lepší se přihlásit k odběru bezpodmínečně, když se změní chování klienta (například jako součást aktualizace firmwaru). Pokud chcete zajistit, aby nezastaralá předplatná zůstala (s ohledem na maximální povolený počet předplatných), explicitně odhlaste odběr předplatných, která se už nepoužívají.
Dávkování
Neexistuje žádný speciální formát pro odeslání dávky zpráv. Pokud chcete snížit režii operací náročných na prostředky v protokolu TLS a sítích, sbalte pakety (PUBLISH
PUBACK
, SUBSCRIBE
a tak ne) společně, než je předáte podkladovému zásobníku PROTOKOLU TLS/TCP. Klient také může usnadnit alias tématu v rámci dávky:
- Zadejte úplný název tématu do prvního
PUBLISH
paketu pro připojení a přidružte k němu alias tématu. - Do stejného tématu vložte následující pakety s prázdným názvem tématu a vlastností aliasu tématu.
Migrace
Tato část uvádí změny v rozhraní API v porovnání s předchozí podporou MQTT.
- Přenosový protokol je MQTT 5. Dříve – MQTT 3.1.1.
- Kontextové informace pro ověřování SAS jsou obsaženy přímo v
CONNECT
paketu místo kódování spolu s podpisem. - Metoda ověřování slouží k označení použité metody ověřování.
- Sdílený přístupový podpis se vloží do vlastnosti Ověřovací data. Dříve se použilo pole Heslo.
- Témata pro operace se liší:
- Telemetrie:
$iothub/telemetry
místodevices/{Client Id}/messages/events
, - Příkazy:
$iothub/commands
místodevices/{Client Id}/messages/devicebound
, - Hlášeno dvojče patch:
$iothub/twin/patch/reported
místo$iothub/twin/PATCH/properties/reported
, - Oznámit změně požadovaného stavu dvojčete:
$iothub/twin/patch/desired
místo$iothub/twin/PATCH/properties/desired
.
- Telemetrie:
- Předplatné tématu odpovědi na operace požadavků na klient-server není povinné.
- Vlastnosti uživatele se používají místo kódování vlastností v segmentu názvu tématu.
- Názvy vlastností jsou napsané v "dash-case" pojmenování místo zkratek se speciální předponou. Uživatelem definované vlastnosti teď vyžadují předponu. Například je nyní
message-id
,$.mid
zatímcomyProperty1
se stane@myProperty1
. - Vlastnost Data korelace se používá ke korelaci zpráv požadavků a odpovědí pro operace odezvy požadavku místo
$rid
vlastnosti kódované v tématu. iothub-connection-auth-method
vlastnost již není označena událostmi telemetrie.- Příkazy C2D se nevyprázdní bez předplatného ze zařízení. Zůstanou ve frontě, dokud se zařízení nepředplatí nebo nevyprší jejich platnost.
Příklady
Odeslání telemetrie
Zpráva:
-> PUBLISH
QoS: 1
Packet_Id: 31
Topic: $iothub/telemetry
@myProperty1: My String Value # optional
creation-time: 1600987195320 # optional
@ No_Rules-ForUser-PROPERTIES: Any UTF-8 string value # optional
Payload: <data>
Uznání:
<- PUBACK
Packet_Id: 31
Reason_Code: 0
Alternativní potvrzení (omezené):
<- PUBACK
Packet_Id: 31
Reason_Code: 151
status: 0501
Odeslání stavu získání dvojčete
Požadavek:
-> PUBLISH
QoS: 0
Topic: $iothub/twin/get
Correlation_Data: 0x01 0xFA
Payload: <empty>
Odpověď (úspěch):
<- PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: 0x01 0xFA
Payload: <twin/desired state>
Odpověď (není povolena):
<- PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: 0x01 0xFA
status: 0102
reason: Operation not allowed for `B2` SKU
Payload: <empty>
Zpracování volání přímé metody
Požadavek:
<- PUBLISH
QoS: 0
Topic: $iothub/methods/abc
Correlation_Data: 0x0A 0x10
Payload: <data>
Odpověď (úspěch):
-> PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: 0x0A 0x10
response-code: 200 # user defined response code
Payload: <data>
Poznámka:
status
není nastavená – jedná se o odpověď na úspěch.
Odpověď zařízení není k dispozici:
-> PUBLISH
QoS: 0
Topic: $iothub/responses
Correlation_Data: 0x0A 0x10
status: 0603
Chyba při používání QoS 0, část 1
Požadavek:
-> PUBLISH
QoS: 0
Topic: $iothub/twin/gett # misspelled topic name - server won't recognize it as Request-Response interaction
Correlation_Data: 0x0A 0x10
Payload: <data>
Odpověď:
<- DISCONNECT
Reason_Code: 144
reason: "Unsupported topic: `$iothub/twin/gett`"
Chyba při používání QoS 0, část 2
Požadavek:
-> PUBLISH # missing Correlation Data
QoS: 0
Topic: $iothub/twin/get
Payload: <data>
Odpověď:
<- DISCONNECT
Reason_Code: 131
status: 0100
reason: "`Correlation Data` property is missing"
Další kroky
- Pokud chcete zkontrolovat referenční informace k rozhraní API MQTT 5 preview, přečtěte si referenční informace k rozhraní API roviny dat MQTT 5 služby IoT Hub (Preview).
- Pokud chcete postupovat podle ukázky jazyka C#, podívejte se na ukázkové úložiště GitHubu.