Megosztás a következőn keresztül:


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:

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.

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-31a 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: