Azure IoT Hub-händelsescheman som inte är telemetri
Den här artikeln innehåller egenskaper och scheman för icke-telemetrihändelser som genereras av Azure IoT Hub. Icke-telemetrihändelser skiljer sig från enhets-till-moln- och moln-till-enhet-meddelanden i och med att IoT Hub genererar dessa händelser som svar på specifika tillståndsändringar som är associerade med dina enheter. Livscykeländringar som en enhet eller modul som skapas eller tas bort, eller anslutningstillstånd ändras till exempel en enhet eller modul som ansluter eller kopplar från.
Du kan dirigera icke-telemetrihändelser med hjälp av meddelanderoutning eller nå händelser som inte är telemetrihändelser med hjälp av Azure Event Grid. Mer information om IoT Hub-meddelanderoutning finns i IoT Hub-meddelanderoutning och React to IoT Hub events by using Event Grid (Reagera på IoT Hub-händelser med Event Grid).
Händelseexemplen i den här artikeln hämtades med hjälp av az iot hub monitor-events
Azure CLI-kommandot. Du kan se en delmängd av egenskaper som ingår i händelserna som kommer till en slutpunkt för meddelanderoutning.
Tillgängliga händelsetyper
Azure IoT Hub genererar icke-telemetrihändelser i följande kategorier:
Händelsekategori | beskrivning |
---|---|
Händelser för enhetsanslutningstillstånd | Genereras när en enhet ansluter till eller kopplar från en IoT-hubb. |
Händelser i enhetens livscykel | Genereras när en enhet eller modul skapas på eller tas bort från en IoT-hubb. |
Ändringshändelser för enhetstvillingar | Genereras när en enhet eller modultvilling ändras eller ersätts. |
Ändringshändelser för digitala tvillingar | Genereras när en enhets eller moduls digitala tvilling ändras eller ersätts. |
Vanliga händelseegenskaper
Icke-telemetrihändelser har flera vanliga egenskaper.
Systemegenskaper
IoT Hub anger följande systemegenskaper för varje händelse.
Property | Type | Beskrivning | Nyckelord för routningsfråga |
---|---|---|---|
content-encoding | sträng | utf-8 | $contentEncoding |
innehållstyp | sträng | application/json | $contentType |
korrelations-ID | sträng | Ett unikt ID som identifierar händelsen. | $correlationId |
användar-ID | sträng | Namnet på IoT Hub som genererade händelsen. | $userId |
iothub-connection-device-id | sträng | Enhets-ID:t. | $connectionDeviceId |
iothub-connection-module-id | sträng | Modul-ID:t. Den här egenskapen är endast utdata för modulens livscykel och tvillinghändelser. | $connectionModuleId |
iothub-enqueuedtime | Nummer | Datum och tid då meddelandet skickades. I routningsfrågor använder du en ISO8601 tidsstämpel, till exempel $enqueuedTime > "2022-06-06T22:56:06Z" |
$enqueuedTime |
iothub-message-source | sträng | Händelsekategorin som identifierar meddelandekällan. Till exempel deviceLifecycleEvents. | Ej tillämpligt |
Egenskaper för program
IoT Hub anger följande programegenskaper för varje händelse.
Property | Type | Beskrivning |
---|---|---|
deviceId | sträng | Enhets-ID:t. |
hubName | sträng | Namnet på den IoT Hub som genererade händelsen. |
iothub-message-schema | sträng | Meddelandeschemat som är associerat med händelsekategorin. till exempel deviceLifecycleNotification. |
moduleId | sträng | Modul-ID:t. Den här egenskapen är endast utdata för modulens livscykel och tvillingändringshändelser. |
operationTimestamp | sträng | Åtgärdens ISO8601 tidsstämpel. |
opType | sträng | Identifieraren för åtgärden som genererade händelsen. Till exempel createDeviceIdentity eller deleteDeviceIdentity. |
Använd egenskapsnamnet i routningsfrågor. Exempel: deviceId = "my-device"
Händelser för anslutningstillstånd
Anslutningstillståndshändelser genereras när en enhet eller modul ansluter eller kopplar från IoT-hubben.
Programegenskaper: I följande tabell visas hur programegenskaper anges för anslutningstillståndshändelser:
Property | Värde |
---|---|
iothub-message-schema | deviceConnectionStateNotification |
opType | deviceConnected eller deviceDisconnected |
Systemegenskaper: Följande tabell visar hur systemegenskaper anges för anslutningstillståndshändelser:
Property | Värde |
---|---|
iothub-message-source | deviceConnectionStateEvents |
Brödtext: Brödtexten innehåller ett sekvensnummer. Sekvensnumret är en strängrepresentation av ett hexadecimalt tal. Du kan använda strängjäxning för att identifiera det större talet. Om du konverterar strängen till hex blir talet ett 256-bitars tal. Sekvensnumret ökar strikt, så den senaste händelsen har ett högre antal än äldre händelser. Detta är användbart om du har frekventa enhetsanslutningar och frånkopplingar och vill se till att endast den senaste händelsen används för att utlösa en nedströmsåtgärd.
Exempel
Följande JSON visar en händelse för enhetsanslutningstillstånd som genereras när en enhet kopplas från.
{
"event": {
"origin": "contoso-device-1",
"module": "",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-1",
"opType": "deviceDisconnected",
"iothub-message-schema": "deviceConnectionStateNotification",
"operationTimestamp": "2022-06-01T18:43:04.5561024Z"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-1",
"iothub-enqueuedtime": 1654109018051,
"iothub-message-source": "deviceConnectionStateEvents",
"x-opt-sequence-number": 72,
"x-opt-offset": "37344",
"x-opt-enqueued-time": 1654109018176
},
"payload": {
"sequenceNumber": "000000000000000001D8713FF7E0851400000002000000000000000000000007"
}
}
}
Händelser i enhetens livscykel
Händelser i enhetens livscykel genereras när en enhet eller modul skapas eller tas bort från identitetsregistret. Mer information om när enhetens livscykelhändelser genereras finns i Meddelanden om enhets- och modullivscykel.
Programegenskaper: I följande tabell visas hur programegenskaper anges för enhetens livscykelhändelser:
Property | Värde |
---|---|
iothub-message-schema | deviceLifecycleNotification |
opType | Ett av följande värden: createDeviceIdentity, deleteDeviceIdentity, createModuleIdentity eller deleteModuleIdentity. |
Systemegenskaper: Följande tabell visar hur systemegenskaper anges för enhetens livscykelhändelser:
Property | Värde |
---|---|
iothub-message-source | deviceLifecycleEvents |
Brödtext: Brödtexten innehåller en representation av enhetstvillingen eller modultvillingen. Den innehåller enhets-ID och modul-ID, tvillingetaggenskapen, versionsegenskapen och taggarna, egenskaperna och tillhörande metadata för tvillingen.
Exempel
Följande JSON visar en enhetslivscykelhändelse som genereras när en modul skapas. Händelsen registreras med hjälp av az iot hub monitor-events
Azure CLI-kommandot.
{
"event": {
"origin": "contoso-device-2",
"module": "module-1",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "c5a4e6986c",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-2",
"operationTimestamp": "2022-05-27T18:49:38.4904785Z",
"moduleId": "module-1",
"opType": "createModuleIdentity",
"iothub-message-schema": "moduleLifecycleNotification"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-2",
"iothub-connection-module-id": "module-1",
"iothub-enqueuedtime": 1653677378534,
"iothub-message-source": "deviceLifecycleEvents",
"x-opt-sequence-number": 62,
"x-opt-offset": "31768",
"x-opt-enqueued-time": 1653677378643
},
"payload": {
"deviceId": "contoso-device-2",
"moduleId": "module-1",
"etag": "AAAAAAAAAAE=",
"version": 2,
"properties": {
"desired": {
"$metadata": {
"$lastUpdated": "0001-01-01T00:00:00Z"
},
"$version": 1
},
"reported": {
"$metadata": {
"$lastUpdated": "0001-01-01T00:00:00Z"
},
"$version": 1
}
}
}
}
}
Ändringshändelser för enhetstvillingar
Ändringshändelser för enhetstvillingar genereras när en enhetstvilling eller en modultvilling uppdateras eller ersätts. I vissa fall kan flera ändringar paketeras i en enda händelse. Mer information finns i Säkerhetskopieringsåtgärder för enhetstvillingar eller Serverdelsåtgärder för modultvillingar.
Programegenskaper: I följande tabell visas hur programegenskaper anges för enhetstvillingens ändringshändelser:
Property | Värde |
---|---|
iothub-message-schema | twinChangeNotification |
opType | Ett av följande värden: replaceTwin eller updateTwin. |
Systemegenskaper: Följande tabell visar hur systemegenskaper anges för enhetstvillingens ändringshändelser:
Property | Värde |
---|---|
iothub-message-source | twinChangeEvents |
Brödtext: Vid en uppdatering innehåller brödtexten versionsegenskapen för tvillingen och de uppdaterade taggarna och egenskaperna samt tillhörande metadata. Vid en ersättning innehåller brödtexten enhets-ID och modul-ID, tvillingetaggenskapen, versionsegenskapen och alla taggar, egenskaper och associerade metadata för enheten eller modultvillingen.
Exempel
Följande JSON visar en tvillingändringshändelse som genereras för en uppdatering av en önskad egenskap och en tagg på en modultvilling. Händelsen registreras med hjälp av az iot hub monitor-events
Azure CLI-kommandot.
{
"event": {
"origin": "contoso-device-3",
"module": "module-1",
"interface": "",
"component": "",
"properties": {
"system": {
"content_encoding": "utf-8",
"content_type": "application/json",
"correlation_id": "4d1f1e2e74f",
"user_id": "contoso-routing-hub"
},
"application": {
"hubName": "contoso-routing-hub",
"deviceId": "contoso-device-3",
"operationTimestamp": "2022-06-01T22:27:50.2612586Z",
"moduleId": "module-1",
"iothub-message-schema": "twinChangeNotification",
"opType": "updateTwin"
}
},
"annotations": {
"iothub-connection-device-id": "contoso-device-3",
"iothub-connection-module-id": "module-1",
"iothub-enqueuedtime": 1654122470282,
"iothub-message-source": "twinChangeEvents",
"x-opt-sequence-number": 17,
"x-opt-offset": "12352",
"x-opt-enqueued-time": 1654122470329
},
"payload": {
"version": 7,
"tags": {
"tag1": "new value"
},
"properties": {
"desired": {
"property1": "new value",
"$metadata": {
"$lastUpdated": "2022-06-01T22:27:50.2612586Z",
"$lastUpdatedVersion": 6,
"property1": {
"$lastUpdated": "2022-06-01T22:27:50.2612586Z",
"$lastUpdatedVersion": 6
}
},
"$version": 6
}
}
}
}
}
Nästa steg
Mer information om meddelanderoutning finns i IoT Hub-meddelanderoutning.
Mer information om hur du lägger till frågor till dina meddelandevägar finns i frågesyntax för IoT Hub-meddelanderoutning.
Mer information om strukturen för meddelanden från enhet till moln och från moln till enhet finns i Skapa och läsa IoT Hub-meddelanden.