IoT Plug and Play-modellek használata IoT-megoldásban
Ez a cikk azt ismerteti, hogyan azonosíthatja egy IoT Plug and Play-eszköz modellazonosítóját egy IoT-megoldásban, majd lekérheti annak modelldefinícióját.
Az IoT-megoldásnak két széles kategóriája van:
A célalapú megoldás a megoldáshoz csatlakozó IoT Plug and Play-eszközök ismert modellkészletével működik. Ezeket a modelleket a megoldás fejlesztésekor használja.
A modellalapú megoldások bármilyen IoT Plug and Play-eszköz modelljével működnek. A modellalapú megoldás létrehozása összetettebb, de az előnye, hogy a megoldás a jövőben hozzáadott eszközökkel is működik. A modellalapú IoT-megoldások lekérnek egy modellt, és segítségével határozzák meg az eszköz által implementálandó telemetriát, tulajdonságokat és parancsokat.
IoT Plug and Play-modell használatához IoT-megoldás:
Azonosítja a megoldáshoz csatlakoztatott IoT Plug and Play-eszköz, modul vagy IoT Edge modul által implementált modell modellazonosítóját.
A modellazonosító használatával lekéri a csatlakoztatott eszköz modelldefinícióját egy modelladattárból vagy egyéni tárolóból.
Modellazonosító azonosítása
Amikor egy IoT Plug and Play-eszköz csatlakozik az IoT Hubhoz, regisztrálja az IoT Hubbal implementálandó modell modellazonosítóját.
Az IoT Hub az eszközkapcsolati folyamat részeként értesíti a megoldást az eszközmodell azonosítójával.
A megoldás az alábbi három módszer egyikével lekérheti az IoT Plug and Play eszköz modellazonosítóját:
Ikereszköz API lekérése
A megoldás a Device Twin API használatával lekérheti az IoT Plug and Play eszköz modellazonosítóját.
Tipp.
Modulok és IoT Edge-modulok esetén használja a ModuleClient.getTwint.
A következő ikereszköz-válaszrészlet modelId
tartalmazza egy IoT Plug and Play-eszköz modellazonosítóját:
{
"deviceId": "sample-device",
"etag": "AAAAAAAAAAc=",
"deviceEtag": "NTk0ODUyODgx",
"status": "enabled",
"statusUpdateTime": "0001-01-01T00:00:00Z",
"connectionState": "Disconnected",
"lastActivityTime": "2020-07-17T06:12:26.8402249Z",
"cloudToDeviceMessageCount": 0,
"authenticationType": "sas",
"x509Thumbprint": {
"primaryThumbprint": null,
"secondaryThumbprint": null
},
"modelId": "dtmi:com:example:TemperatureController;1",
"version": 15,
"properties": {...}
}
}
Digital Twin API beszerzése
A megoldás a Get Digital Twin API használatával lekérheti az IoT Plug and Play eszköz által implementált modell modellazonosítóját.
A következő digitális ikerválasz-kódrészlet $metadata.$model
tartalmazza egy IoT Plug and Play-eszköz modellazonosítóját:
{
"$dtId": "sample-device",
"$metadata": {
"$model": "dtmi:com:example:TemperatureController;1",
"serialNumber": {
"lastUpdateTime": "2020-07-17T06:10:31.9609233Z"
}
}
}
Digitális ikerpéldány-változási esemény értesítése
Az eszközkapcsolat digitális ikerpéldány-változási eseményértesítést eredményez. A megoldásnak elő kell fizetnie erre az eseményértesítésre. A digitális ikeresemények útválasztásának engedélyezéséről az IoT Hub üzenet-útválasztás használata eszközről a felhőbe irányuló üzenetek különböző végpontokra való küldéséhez című témakörben olvashat.
A megoldás az alábbi kódrészletben látható esemény használatával megismerheti a csatlakozó IoT Plug and Play-eszközt, és lekérheti a modellazonosítóját:
iothub-connection-device-id:sample-device
iothub-enqueuedtime:7/22/2020 8:02:27 PM
iothub-message-source:digitalTwinChangeEvents
correlation-id:100f322dc2c5
content-type:application/json-patch+json
content-encoding:utf-8
[
{
"op": "replace",
"path": "/$metadata/$model",
"value": "dtmi:com:example:TemperatureController;1"
}
]
Modelldefiníció lekérése
A megoldás a korábban azonosított modellazonosítót használja a megfelelő modelldefiníció lekéréséhez.
A megoldás az alábbi lehetőségek egyikével lekérheti a modelldefiníciót:
Modelladattár
A megoldások lekérhetik a DTDL-modelleket az eszközmodell-adattárból (DMR). A DMR a Microsoft által üzemeltetett nyilvános adattár, amely válogatott DTDL-modellek gyűjteményét tartalmazza. A DMR-ben tárolt nyilvános eszközmodellek mindenki számára elérhetők, hogy a nyilvános végpontról https://devicemodels.azure.comhasználják és integrálhassák az alkalmazásaikat.
Miután azonosította az új eszközkapcsolat modellazonosítóját, kövesse az alábbi lépéseket:
Kérje le a modelldefiníciót a modellazonosító használatával a modelladattárból. További információ: Modellek feloldása.
A csatlakoztatott eszköz modelldefiníciójának használatával számba veheti az eszköz képességeit.
Az eszköz számbavételi képességeinek használatával engedélyezheti a felhasználók számára az eszköz használatát.
Modellek feloldása
A DMR-konvenciók más összetevőket is tartalmaznak a üzemeltetett modellek fogyasztásának egyszerűsítése érdekében. Ezek a funkciók egyéni vagy privát adattárak esetén nem kötelezőek .
- Index. Az összes elérhető DTMI egy json-fájlok sorozatából álló indexen keresztül érhető el, például: https://devicemodels.azure.com/index.page.2.json
- Kibontva. Az egyes felületekhez minden függőséget tartalmazó fájl érhető el, például: https://devicemodels.azure.com/dtmi/com/example/temperaturecontroller-1.expanded.json
- Metaadatok. Ez a fájl egy adattár kulcsattribútumait teszi elérhetővé, és rendszeres időközönként frissül a legújabb közzétett modellek pillanatképével. Olyan funkciókat tartalmaz, amelyeket az adattár implementál, például hogy a modellindex vagy a kiterjesztett modellfájlok elérhetők-e. A DMR metaadatait a következő címen érheti el: https://devicemodels.azure.com/metadata.json
A nyilvános DTDL-modellek DMR-ben való programozott eléréséhez használhatja az ModelsRepositoryClient
Azure.IoT.ModelsRepository NuGet-csomagban elérhetőeket. Ez az ügyfél alapértelmezés szerint a devicemodels.azure.com elérhető nyilvános DMR lekérdezésére van konfigurálva, és bármely egyéni adattárba konfigurálható.
Az ügyfél bemenetként fogad el egy DTMI
szótárt, és visszaadja az összes szükséges interfészt:
using Azure.IoT.ModelsRepository;
var client = new ModelsRepositoryClient();
ModelResult models = client.GetModel("dtmi:com:example:TemperatureController;1");
models.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));
A várt kimenet a DTMI
függőségi láncban található három adaptert jeleníti meg:
dtmi:com:example:TemperatureController;1
dtmi:com:example:Thermostat;1
dtmi:azure:DeviceManagement:DeviceInformation;1
Konfigurálható ModelsRepositoryClient
úgy, hogy lekérdezze a https használatával elérhető egyéni DMR-t, és a jelölő használatával adja meg a függőség feloldását ModelDependencyResolution
:
- Letiltva. Csak a megadott felületet adja vissza függőség nélkül.
- Engedélyezve. A függőségi lánc összes adapterét adja vissza
Tipp.
Előfordulhat, hogy az egyéni adattárak nem teszik elérhetővé a .expanded.json
fájlt. Ha ez a fájl nem érhető el, az ügyfél visszatér az egyes függőségek helyi feldolgozásához.
Az alábbi mintakód bemutatja, hogyan inicializálható az ModelsRepositoryClient
egyéni adattár alap URL-címével, ebben az esetben a GitHub API URL-címeinek használatával raw
az expanded
űrlap használata nélkül, mivel az nem érhető el a raw
végponton. A AzureEventSourceListener
rendszer inicializálva van az ügyfél által végrehajtott HTTP-kérés vizsgálatához:
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();
var client = new ModelsRepositoryClient(
new Uri("https://raw.githubusercontent.com/Azure/iot-plugandplay-models/main"));
ModelResult model = await client.GetModelAsync(
"dtmi:com:example:TemperatureController;1",
dependencyResolution: ModelDependencyResolution.Enabled);
model.Content.Keys.ToList().ForEach(k => Console.WriteLine(k));
További minták érhetők el az Azure SDK GitHub-adattárban: Azure.Iot.ModelsRepository/samples.
Egyéni tároló
A megoldások ezeket a modelldefiníciókat helyi fájlrendszerben, nyilvános fájltárolóban vagy egyéni implementációban tárolhatják.
Miután azonosította az új eszközkapcsolat modellazonosítóját, kövesse az alábbi lépéseket:
Kérje le a modelldefiníciót a modellazonosító használatával az egyéni tárolóból.
A csatlakoztatott eszköz modelldefiníciójának használatával számba veheti az eszköz képességeit.
Az eszköz számbavételi képességeinek használatával engedélyezheti a felhasználók számára az eszköz használatát.
Következő lépések
Most, hogy megtanulta, hogyan integrálhatja az IoT Plug and Play-modelleket egy IoT-megoldásba, néhány javasolt következő lépés: