Kommunikáció a DPS-vel az MQTT protokoll használatával
Az Azure IoT Device Provisioning Service (DPS) lehetővé teszi az eszközök számára a DPS-eszközvégponttal való kommunikációt a következőkkel:
- MQTT v3.1.1 a 8883-es porton
- MQTT v3.1.1 a WebSocketen a 443-es porton.
A DPS nem teljes körű MQTT-közvetítő, és nem támogatja az MQTT v3.1.1 szabványban megadott összes viselkedést. Ez a cikk azt ismerteti, hogy az eszközök hogyan használhatják a támogatott MQTT-viselkedéseket a DPS-vel való kommunikációhoz.
A DPS-vel folytatott összes eszközkommunikációt TLS/SSL használatával kell védeni. Ezért a DPS nem támogatja a nem biztonságos kapcsolatokat az 1883-as porton keresztül.
Feljegyzés
A DPS jelenleg nem támogatja a TPM-igazolási mechanizmust használó eszközöket az MQTT protokollon keresztül.
Csatlakozás DPS-be
Az eszközök az MQTT protokoll használatával csatlakozhatnak egy DPS-példányhoz az alábbi lehetőségek bármelyikével.
- Kódtárak az Azure IoT Provisioning SDK-kban.
- Az MQTT protokoll közvetlenül.
Az MQTT protokoll közvetlen használata (eszközként)
Ha egy eszköz nem tudja használni az eszköz SDK-jait, akkor is csatlakozhat a nyilvános eszközvégpontokhoz a 8883-es port MQTT protokolljával. A CONNECT-csomagban az eszköznek a következő értékeket kell használnia:
A ClientId mezőhöz használja a registrationId értéket.
A Felhasználónév mezőben használja
{idScope}
{idScope}/registrations/{registration_id}/api-version=2019-03-31
a DPS azonosítójának hatókörét, és{registration_id}
az eszköz regisztrációs azonosítóját.Feljegyzés
Ha X.509-tanúsítványhitelesítést használ, a regisztrációs azonosítót az eszközlevél (end-entity) tanúsítvány tulajdonosának köznapi neve (CN) adja meg.
{registration_id}
a Felhasználónév mezőben meg kell egyeznie a köznapi névvel.A Jelszó mezőben használjon SAS-jogkivonatot. Az SAS-jogkivonat formátuma megegyezik a HTTPS és az AMQP protokolléval:
SharedAccessSignature sr={URL-encoded-resourceURI}&sig={signature-string}&se={expiry}&skn=registration
A resourceURI formátumnak a következő formátumban{idScope}/registrations/{registration_id}
kell lennie: A házirend nevét (skn
) a következőre kell állítani: .registration>Feljegyzés
Ha X.509-tanúsítványhitelesítést használ, az SAS-jogkivonat jelszavai nem szükségesek.
Az SAS-jogkivonatok létrehozásának módjáról további információt a DPS-hez való hozzáférés vezérlésének biztonsági jogkivonatok szakaszában talál.
Az alábbi lista DPS-implementációspecifikus viselkedéseket tartalmaz:
A DPS nem támogatja az állandó munkameneteket. Minden munkamenetet nem állandóként kezel, függetlenül a CleanSession jelölő értékétől. Javasoljuk, hogy a CleanSession értéke igaz legyen.
Amikor egy eszközalkalmazás előfizet egy témakörre a QoS 2 használatával, a DPS a SUBACK csomagban legfeljebb 1. szintű QoS-szintet biztosít. Ezt követően a DPS az 1. QoS használatával küld üzeneteket az eszköznek.
TLS/SSL-konfiguráció
Az MQTT protokoll közvetlen használatához az ügyfélnek TLS 1.2-n keresztül kell csatlakoznia. A lépés kihagyására tett kísérletek csatlakozási hibákkal meghiúsulnak.
Eszköz regisztrálása
Ha egy eszközt a DPS-ben szeretne regisztrálni, az eszköznek témakörszűrőként kell előfizetnie$dps/registrations/res/#
. A Témakörszűrőben található többszintű helyettesítő karakter #
csak arra szolgál, hogy az eszköz további tulajdonságokat kapjon a témakör nevében. A DPS nem engedélyezi a helyettesítő karakterek vagy ?
helyettesítő karakterek használatát #
az altopikák szűréséhez. Mivel a DPS nem általános célú pub-sub messaging broker, csak a dokumentált témakörneveket és témakörszűrőket támogatja.
Az eszköznek közzé kell tennie egy regisztrációs üzenetet a DPS-ben témakörnévként használva$dps/registrations/PUT/iotdps-register/?$rid={request_id}
. A hasznos adatnak JSON formátumban kell tartalmaznia az eszközregisztrációs objektumot.
Sikeres forgatókönyv esetén az eszköz választ kap a $dps/registrations/res/202/?$rid={request_id}&retry-after=x
témakör nevére, ahol x az újrapróbálkozási érték másodpercben.
Lekérdezés a regisztrációs művelet állapotáról
Az eszköznek rendszeresen le kell kérdeznie a szolgáltatást, hogy megkapja az eszközregisztrációs művelet eredményét. Feltéve, hogy az eszköz már feliratkozott a $dps/registrations/res/#
témakörre, közzétehet egy lekéréses művelet állapotüzenetét a $dps/registrations/GET/iotdps-get-operationstatus/?$rid={request_id}&operationId={operationId}
témakör nevére. Az üzenet műveletazonosítójának az előző lépésben a RegistrationOperationStatus válaszüzenetben kapott értéknek kell lennie. A sikeres esetben a szolgáltatás válaszol a $dps/registrations/res/200/?$rid={request_id}
témára. A válasz hasznos adatai tartalmazzák a RegistrationOperationStatus objektumot. Az eszköznek továbbra is le kell kérdeznie a szolgáltatást, ha a válaszkód 202 az újrapróbálkozási időszaknak megfelelő késleltetés után. Az eszközregisztrációs művelet akkor sikeres, ha a szolgáltatás 200 állapotkódot ad vissza.
Csatlakozás websocketen keresztül
Amikor a Websocketen keresztül csatlakozik, adja meg az alprotocolt a következőként mqtt
: . Kövesse az RFC 6455-öt.
Következő lépések
Az MQTT protokollról további információt az MQTT dokumentációjában talál.
Az MQTT-mintakód tallózásához tekintse meg az MQTT-alkalmazásmintákat.
A DPS képességeinek további megismeréséhez lásd: