IoT Hub-üzenetek létrehozása és olvasása
A protokollok közötti zökkenőmentes együttműködés támogatása érdekében az IoT Hub az összes eszközoldali protokollban elérhető üzenetkezelési funkciók közös készletét határozza meg. Ezek mind az eszközről a felhőbe irányuló üzenetek útválasztásában, mind a felhőből az eszközre irányuló üzenetekben 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-szintekről további információt a megoldáshoz megfelelő IoT Hub-szint kiválasztása című témakörben talál.
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 az alábbiak 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. A részletekért tekintse meg a kapcsolódó MQTT és AMQP fejlesztői útmutatókat.
A tulajdonságnevek és értékek csak ASCII alfanumerikus karaktereket tartalmazhatnak, valamint {'!', '#', '$', '%, '&', ''', '*', '+', '-', '.', '^', '_', '`', '|', '~'}
ha https protokoll használatával küld eszközről felhőbe irányuló üzeneteket, vagy felhőből eszközre irányuló üzeneteket küld.
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 Hubhoz való hozzáférés szabályozása című szakaszban leírtak szerint az IoT Hub eszközalapú 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 üzenet bővítését.
A különböző protokollokkal küldött üzenetek kódolásáról és dekódolásáról további információt az Azure IoT SDK-kban talál.
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), meg kell adnia az üzenet megfelelő tartalomtípusát és karakterkészletét.
Ha az üzenet törzsét egy IoT Hub-útválasztási lekérdezésben szeretné használni, meg kell adnia egy érvényes JSON-objektumot az üzenethez, és be kell állítania az üzenet application/json;charset=utf-8
tartalomtípus-tulajdonságát.
Egy érvényes, nem módosítható üzenettörzs az alábbihoz hasonlóan nézhet ki:
{
"timestamp": "2022-02-08T20:10:46Z",
"tag_name": "spindle_speed",
"tag_value": 100
}
A D2C IoT Hub-üzenetek rendszertulajdonságai
Tulajdonság | Leírás | Felhasználói beállítástábla? | Útválasztási lekérdezés kulcsszója |
---|---|---|---|
üzenetazonosító | A kérelem-válasz mintákhoz használt üzenet felhasználó által beállított azonosítója. Formátum: A kis- és nagybetűk megkülönböztetése (legfeljebb 128 karakter hosszú) ASCII 7 bites alfanumerikus karakterek + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} . |
Igen | messageId |
iothub-enqueuedtime | Az IoT Hub az eszközről a felhőbe ü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ó. Amikor az IoT Hub létrehozza az üzeneteket, a rendszer a következőre állítja be az üzeneteket {iot hub name} : . |
Igen | Felhasználói azonosító |
iothub-connection-device-id | 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 | connectionDeviceId |
iothub-connection-module-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 modulazonosítóját . | Nem | connectionModuleId |
iothub-connection-auth-generation-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 | connectionDeviceGenerationId |
iothub-connection-auth-method | 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 | connectionAuthMethod |
iothub-app-iothub-creation-time-utc | Lehetővé teszi az eszköz számára, hogy eseménylétrehozás idejének elküldése során adatokat küldjön egy kötegben. | Igen | létrehozás-idő-utc |
iothub-creation-time-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ás-idő-utc |
dt-dataschema | Ezt az értéket az IoT Hub állítja be az eszközről a felhőbe irányuló üzenetekben. Az eszközkapcsolatban beállított eszközmodell-azonosítót tartalmazza. | Nem | $dt-dataschema |
dt-subject | Az eszközről a felhőbe irányuló üzeneteket küldő összetevő neve. | Igen | $dt tárgy |
A D2C IoT Hub-üzenetek alkalmazástulajdonságai
Az alkalmazástulajdonságok gyakori használata, ha az eszközről időbélyeget küld a iothub-creation-time-utc
tulajdonság használatával, amely rögzíti, hogy az eszköz mikor küldte el 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 2021-04-21T11:30:16Z
érvényes, 2021-04-21T11:30:16-07:00
érvénytelen:
{
"applicationId":"5782ed70-b703-4f13-bda3-1f5f0f5c678e",
"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 C2D IoT Hub-üzenetek rendszertulajdonságai
Tulajdonság | Leírás | Felhasználói beállítástábla? |
---|---|---|
üzenetazonosító | A kérelem-válasz mintákhoz használt üzenet felhasználó által beállított azonosítója. Formátum: A kis- és nagybetűk megkülönböztetése (legfeljebb 128 karakter hosszú) ASCII 7 bites alfanumerikus karakterek + {'-', ':', '.', '+', '%', '_', '#', '*', '?', '!', '(', ')', ',', '=', '@', ';', '$', '''} . |
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 létrehozza az üzeneteket, a rendszer a következőre állítja be az üzeneteket {iot hub name} : . |
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. A nevek részleteiért tekintse meg az alábbi táblázatot.
Rendszertulajdonság neve | Event Hubs | Azure Storage | Service Bus | Event Grid |
---|---|---|---|---|
Üzenetazonosító | üzenetazonosító | messageId | MessageId | ü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-device-id | connectionDeviceId | iothub-connection-device-id | iothub-connection-device-id |
Kapcsolatmodul azonosítója | iothub-connection-module-id | connectionModuleId | iothub-connection-module-id | iothub-connection-module-id |
Kapcsolati hitelesítési generáció azonosítója | iothub-connection-auth-generation-id | connectionDeviceGenerationId | iothub-connection-auth-generation-id | iothub-connection-auth-generation-id |
Kapcsolati hitelesítési módszer | iothub-connection-auth-method | connectionAuthMethod | iothub-connection-auth-method | iothub-connection-auth-method |
contentType | tartalomtípus | contentType | ContentType | iothub-content-type |
contentEncoding | tartalomkódolás | contentEncoding | ContentEncoding | iothub-content-encoding |
iothub-enqueuedtime | iothub-enqueuedtime | enqueuedTime | n/a | iothub-enqueuedtime |
CorrelationId | korrelációs azonosító | correlationId | CorrelationId | korrelációs azonosító |
dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema | dt-dataschema |
dt-subject | dt-subject | dt-subject | dt-subject | dt-subject |
Üzenet mérete
Az IoT Hub protokollalapú 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
- iothub-connection-auth-method
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
- Az IoT Hub üzenetméretkorlátairól további információt az IoT Hub kvótái és szabályozása című témakörben talál.
- Az IoT Hub-üzenetek különböző programozási nyelveken való létrehozásáról és olvasásáról a rövid útmutatókban olvashat.
- Az IoT Hub által létrehozott nem telemetriaesemények szerkezetének megismeréséhez tekintse meg az IoT Hub nem telemetriai eseménysémáit.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: