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:

  1. 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.

  2. 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 fent 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:

  1. Kérje le a modelldefiníciót a modellazonosító használatával a modelladattárból. További információ: Modellek feloldása.

  2. A csatlakoztatott eszköz modelldefiníciójának használatával számba veheti az eszköz képességeit.

  3. 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 .

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 http(ek)n keresztül 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:

  1. Kérje le a modelldefiníciót a modellazonosító használatával az egyéni tárolóból.

  2. A csatlakoztatott eszköz modelldefiníciójának használatával számba veheti az eszköz képességeit.

  3. 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: