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


IoT Hub-üzenetek létrehozása és olvasása

A protokollok közötti együttműködés támogatása érdekében az IoT Hub az összes eszközre irányuló protokollban elérhető üzenetkezelési funkciók közös készletét határozza meg. Ezek a funkciók az eszközről a felhőbe irányuló és a felhőből az eszközre irányuló üzenetekbenis használhatók.

Feljegyzés

A cikkben említett egyes funkciók, például a felhő–eszköz irányú üzenetküldés, az ikereszközök és az eszközfelügyelet csak a standard szintű IoT Hubon érhető el. Az alapszintű és standard/ingyenes IoT Hub-szintekkel kapcsolatban további információkért lásd Válassza ki a megoldása számára megfelelő IoT Hub-szintet és -méretet.

Az IoT Hub streamelési üzenetkezelési mintával valósítja meg az eszközről a felhőbe irányuló üzenetküldést. Az IoT Hub eszközről felhőbe irányuló üzenetei jobban hasonlítanak az Event Hubs-eseményekre, mint a Service Bus-üzenetekre, mivel nagy mennyiségű esemény halad át a szolgáltatáson, amelyet több olvasó is elolvashat.

Az IoT Hub-üzenetek a következőkből állnak:

  • A rendszertulajdonságok előre meghatározott készlete, a jelen cikk későbbi részében leírtak szerint.

  • Alkalmazástulajdonságok halmaza. Az alkalmazás által definiálható és elérhető sztringtulajdonságok szótára anélkül, hogy deszerializálnia kellene az üzenettörzset. Az IoT Hub soha nem módosítja ezeket a tulajdonságokat.

  • Üzenettörzs, amely bármilyen típusú adat lehet.

Minden eszközprotokoll különböző módokon valósítja meg a beállítási tulajdonságokat. További információ: Kommunikáció IoT Hubbal az MQTT protokoll használatával , és Kommunikáció az IoT Hubbal az AMQP Protokoll használatával.

Ha https protokoll használatával küld eszközről felhőbe irányuló üzeneteket, vagy felhőből az eszközre irányuló üzeneteket küld, a tulajdonságnevek és értékek csak ASCII alfanumerikus karaktereket tartalmazhatnak, valamint ! # $ % & ' * + - . ^ _ ` | ~ .

Az IoT Hubon keresztüli eszközről felhőbe irányuló üzenetkezelés a következő jellemzőkkel rendelkezik:

  • Az eszközről a felhőbe irányuló üzenetek tartósak, és legfeljebb hét napig megmaradnak az IoT Hub alapértelmezett üzenet-/eseményvégpontjaiban .

  • Az eszközről a felhőbe irányuló üzenetek legfeljebb 256 KB méretűek lehetnek, és kötegekbe csoportosíthatók az üzenetek optimalizálása érdekében. A kötegek legfeljebb 256 KB-osak lehetnek.

  • Az IoT Hub nem engedélyezi az tetszőleges particionálást. Az eszközről a felhőbe irányuló üzenetek particionálása a kiinduló eszközazonosítójuk alapján van.

  • Az IoT Hub hozzáférésének szabályozása a Microsoft Entra ID használatával című témakörben leírtak szerint az IoT Hub eszközenkénti hitelesítést és hozzáférés-vezérlést tesz lehetővé.

  • Az alkalmazás tulajdonságaiba beemelhető információkkal bélyegzheti az üzeneteket. További információkért tekintse meg az eszközről a felhőbe irányuló IoT Hub-üzenetek üzeneteinek kibővítése című témakört.

Feljegyzés

Minden IoT Hub-protokoll egy üzenet tartalomtípus-tulajdonságot biztosít, amelyet tiszteletben kell tartani az adatok egyéni végpontokra való átirányításakor. Ha megfelelően szeretné kezelni az adatokat a célhelyen (például a JSON-t a Base64 kódolású bináris adatok helyett elemezhető sztringként kezeli), adja meg az üzenet megfelelő tartalomtípusát és karakterkészletét.

Ha az üzenettörzset egy IoT Hub-útválasztási lekérdezésben szeretné használni, adjon meg egy érvényes JSON-objektumot az üzenethez, és állítsa be az üzenet tartalomtípus-tulajdonságát a következőre application/json;charset=utf-8: .

Az alábbi példa egy érvényes, nem módosítható üzenettörzset mutat be:

{
    "timestamp": "2022-02-08T20:10:46Z",
    "tag_name": "spindle_speed",
    "tag_value": 100
}

Az eszközről a felhőbe irányuló üzenetek rendszertulajdonságai

Tulajdonság Leírás Felhasználó által beállítható? Kulcsszó az útválasztási
lekérdezéshez
üzenetazonosító A kérelem-válasz mintákhoz használt üzenet felhasználó által beállított azonosítója. Formátum: Egy kis- és nagybetű érzékeny karakterlánc (legfeljebb 128 karakter hosszú) ASCII 7 bites alfanumerikus karakterekkel és - : . + % _ # * ? ! ( ) , = @ ; $ '. Igen üzenetazonosító
iothub-enqueuedtime Az IoT Hub által a eszköztől a felhőbe érkező üzenet fogadásának dátuma és időpontja. Nem enqueuedTime
felhasználó-azonosító Az üzenetek eredetének megadására használt azonosító. Igen Felhasználói azonosító
iothub-connection-eszköz-azonosító Az IoT Hub által az eszközről a felhőbe irányuló üzenetekre beállított azonosító. Az üzenetet küldő eszköz eszközazonosítóját tartalmazza. Nem kapcsolódóEszközAzonosító
iothub-csatlakozás-modul-azonosító Az IoT Hub által az eszközről a felhőbe irányuló üzenetekre beállított azonosító. Tartalmazza az üzenetet küldő eszköz modulazonosítóját . Nem kapcsolatModulAzonosító
iothub-kapcsolat-hitelesítés-generáció-id Az IoT Hub által az eszközről a felhőbe irányuló üzenetekre beállított azonosító. Tartalmazza az üzenetet küldő eszköz connectionDeviceGenerationId azonosítóját (az eszköz identitástulajdonságainak megfelelően). Nem csatlakozóEszközGenerációAzonosító
iothub-kapcsolat-hitelesítési módszer Az IoT Hub által az eszközről a felhőbe irányuló üzeneteken beállított hitelesítési módszer. Ez a tulajdonság információkat tartalmaz az üzenetet küldő eszköz hitelesítéséhez használt hitelesítési módszerről. Nem kapcsolatHitelesítésiMódszer
iothub-app-iothub-létrehozási-idő-utc Lehetővé teszi az eszköz számára, hogy az adatokat kötegben küldve elküldje az esemény létrehozásának időpontját. Igen létrehozási időpont UTC szerint
iothub-létrehozási-idő-utc Lehetővé teszi az eszköz számára, hogy egyszerre egy üzenet küldésekor küldjön eseménylétrehozési időt. Igen létrehozási időpont UTC szerint
dt-adatséma Az IoT Hub ezt az értéket az eszközről a felhőbe irányuló üzenetekre állítja be. Az eszközkapcsolatban beállított eszközmodell-azonosítót tartalmazza. Nem $dt-adatséma
téma dt Az eszközről a felhőbe irányuló üzeneteket küldő összetevő neve. Igen $dt tárgy

Az eszközről a felhőbe irányuló üzenetek alkalmazástulajdonságai

Az alkalmazástulajdonságokat gyakran használják arra, hogy az eszköz időbélyeget küldjön a iothub-creation-time-utc tulajdonság segítségével, amely rögzíti, mikor küldi el az eszköz az üzenetet. Az időbélyeg formátumának utc-nek kell lennie, és nincs időzónára vonatkozó információ. Például érvényes, 2021-04-21T11:30:16Z de 2021-04-21T11:30:16-07:00 érvénytelen.

{
  "applicationId":"00001111-aaaa-2222-bbbb-3333cccc4444",
  "messageSource":"telemetry",
  "deviceId":"sample-device-01",
  "schema":"default@v1",
  "templateId":"urn:modelDefinition:mkuyqxzgea:e14m1ukpn",
  "enqueuedTime":"2021-01-29T16:45:39.143Z",
  "telemetry":{
    "temperature":8.341033560421833
  },
  "messageProperties":{
    "iothub-creation-time-utc":"2021-01-29T16:45:39.021Z"
  },
  "enrichments":{}
}

A felhőből az eszközre irányuló üzenetek rendszertulajdonságai

Tulajdonság Leírás Felhasználó által beállítható?
üzenetazonosító A kérelem-válasz mintákhoz használt üzenet felhasználó által beállított azonosítója. Formátum: Egy kis- és nagybetű érzékeny karakterlánc (legfeljebb 128 karakter hosszú) ASCII 7 bites alfanumerikus karakterekkel és - : . + % _ # * ? ! ( ) , = @ ; $ '. Igen
sorszám Az IoT Hub által az egyes felhőből eszközre irányuló üzenetekhez hozzárendelt szám (eszközsoronként egyedi). Nem
felhasználóként a(z) A felhőből az eszközre irányuló üzenetekben megadott célhely. Nem
abszolút lejárati idő Az üzenet lejáratának dátuma és időpontja. Igen
korrelációs azonosító Egy válaszüzenet sztringtulajdonsága, amely általában a kérés MessageId azonosítóját tartalmazza, kérés-válasz mintákban. Igen
felhasználó-azonosító Az üzenetek eredetének megadására használt azonosító. Amikor az IoT Hub üzeneteket hoz létre, a felhasználói azonosító az IoT Hub neve. Igen
iothub-ack Visszajelzési üzenetgenerátor. Ez a tulajdonság a felhőből az eszközre irányuló üzenetekben arra szolgál, hogy kérje meg az IoT Hubot, hogy visszajelzési üzeneteket hozzon létre az üzenet eszköz általi felhasználása miatt. Lehetséges értékek: nincs (alapértelmezett): nem jön létre visszajelzési üzenet, pozitív: visszajelzést kap, ha az üzenet befejeződött, negatív: visszajelzést kap, ha az üzenet lejárt (vagy elérte a maximális kézbesítési számot) anélkül, hogy az eszköz befejezte volna, vagy megtelt: pozitív és negatív is. Igen

Rendszertulajdonságok nevei

A rendszertulajdonságok neve attól függően változik, hogy melyik végpontra irányítják az üzeneteket.

Rendszertulajdonság neve Event Hubs Azure Storage Service Bus Event Grid
Üzenetazonosító üzenetazonosító üzenetazonosító ÜzenetAzonosító üzenetazonosító
Felhasználói azonosító felhasználó-azonosító Felhasználói azonosító UserId felhasználó-azonosító
Kapcsolati eszköz azonosítója iothub-connection-eszköz-azonosító kapcsolódóEszközAzonosító iothub-connection-eszköz-azonosító iothub-connection-eszköz-azonosító
Kapcsolatmodul azonosítója iothub-csatlakozás-modul-azonosító kapcsolatModulAzonosító iothub-csatlakozás-modul-azonosító iothub-csatlakozás-modul-azonosító
Kapcsolat hitelesítési azonosító generálás iothub-kapcsolat-hitelesítés-generáció-id csatlakozóEszközGenerációAzonosító iothub-kapcsolat-hitelesítés-generáció-id iothub-kapcsolat-hitelesítés-generáció-id
Kapcsolati hitelesítési módszer iothub-kapcsolat-hitelesítési módszer kapcsolatHitelesítésiMódszer iothub-kapcsolat-hitelesítési módszer iothub-kapcsolat-hitelesítési módszer
tartalomtípus tartalomtípus tartalomtípus Tartalomtípus iothub-tartalomtípus
tartalomkódolás tartalomkódolás tartalomkódolás Tartalomkódolás iothub-content-encoding
iothub-enqueuedtime iothub-enqueuedtime enqueuedTime n/a iothub-enqueuedtime
Korrelációazonosító korrelációs azonosító correlationId Korrelációazonosító korrelációs azonosító
dt-adatséma dt-adatséma dt-adatséma dt-adatséma dt-adatséma
téma dt téma dt téma dt téma dt téma dt

Az üzenet mérete

Az IoT Hub protokollfüggetlen módon méri az üzenetek méretét, csak a tényleges hasznos adatokat figyelembe véve. A bájtokban megadott méret kiszámítása a következő értékek összegeként történik:

  • A törzs mérete bájtban.
  • Az üzenetrendszer-tulajdonságok összes értékének bájtban megadott mérete.
  • A felhasználói tulajdonságnevek és -értékek bájtban megadott mérete.

A tulajdonságnevek és -értékek ASCII-karakterekre korlátozódnak, így a sztringek hossza bájtban egyenlő.

Hamisítás elleni tulajdonságok

Az eszközhamisítás elkerülése érdekében az IoT Hub az alábbi tulajdonságokkal bélyegezi az összes üzenetet:

  • iothub-connection-device-id
  • iothub-connection-auth-generation-id (IoT-hub csatlakozás hitelesítési generációs azonosító)
  • iothub-kapcsolat-hitelesítési-módszer

Az első kettő az eszköz identitástulajdonságainak megfelelően tartalmazza a származó eszköz deviceId és generationId azonosítóját.

Az iothub-connection-auth metódus tulajdonság egy szerializált JSON-objektumot tartalmaz a következő tulajdonságokkal:

{
  "scope": "{ hub | device | module }",
  "type": "{ symkey | sas | x509 }",
  "issuer": "iothub"
}

Következő lépések