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


Ismerkedés az IoT Hub modulidentitásaival és ikermoduljaival az Azure CLI használatával

A modulidentitások és a moduli ikerpéldányok hasonlóak az Azure IoT Hub-eszközidentitásokhoz és az ikereszközökhöz, de finomabb részletességet biztosítanak. Ahogyan az Azure IoT Hub-eszközidentitások és az ikereszközök lehetővé teszik egy háttéralkalmazás számára az eszköz konfigurálását és az eszköz feltételeinek láthatóságát, a modulidentitások és a modulikrek biztosítják ezeket a képességeket az eszköz egyes összetevői számára. A több összetevővel rendelkező, például operációsrendszer-eszközökkel vagy belső vezérlőprogram-eszközökkel rendelkező, képes eszközökön a modulidentitások és a modulikrek lehetővé teszik az egyes összetevők elkülönített konfigurációját és feltételeit.

Feljegyzés

A cikkben ismertetett funkciók csak az IoT Hub standard szintjén érhetők 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.

Ez a cikk bemutatja, hogyan hozhat létre Azure CLI-munkamenetet, amelyben:

  • Hozzon létre egy eszközidentitást, majd hozzon létre egy modulidentitást az adott eszközhöz.

  • Frissítse a modulidentitáshoz társított ikermodul kívánt tulajdonságait.

Előfeltételek

  • Azure parancssori felület (CLI). A cikkben szereplő parancsokat az Azure Cloud Shell használatával is futtathatja, amely egy interaktív CLI-rendszerhéj, amely a böngészőben vagy egy alkalmazásban, például a Windows Terminálban fut. Ha a Cloud Shellt használja, nem kell semmit telepítenie. Ha inkább helyileg szeretné használni a parancssori felületet, ehhez a cikkhez az Azure CLI 2.36-os vagy újabb verziója szükséges. A verzió azonosításához futtassa a következőt: az --version. Az Azure CLI helyi telepítéséhez vagy frissítéséhez lásd: Az Azure CLI telepítése.

  • IoT Hub az Azure-előfizetésben. Ha még nem rendelkezik központokkal, kövesse az IoT Hub létrehozása című témakörben leírt lépéseket.

  • Győződjön meg arról, hogy a 8883-as port nyitva van a tűzfalon. A cikkben szereplő minták MQTT protokollt használnak, amely a 8883-es porton keresztül kommunikál. Ez a port néhány vállalati és oktatási hálózati környezetben blokkolható. További információkért és a probléma megoldásának módjaiért lásd: Csatlakozás az IoT Hubhoz (MQTT).

Modulhitelesítés

A modulidentitások hitelesítéséhez szimmetrikus kulcsokat vagy X.509-tanúsítványokat használhat. Az X.509-tanúsítványhitelesítéshez a modul tanúsítványának a köznapi neve (CN) formátumával CN=<deviceid>/<moduleid>kell rendelkeznie. Példa:

openssl req -new -key d1m1.key.pem -out d1m1.csr -subj "/CN=device01\/module01"

A Cloud Shell előkészítése

Ha az Azure Cloud Shellt szeretné használni, először el kell indítania és konfigurálnia kell. Ha helyileg használja a parancssori felületet, ugorjon a PARANCSSOR-munkamenet előkészítése szakaszra.

  1. Az Azure Portal oldalfejlécéről válassza a Cloud Shell ikont.

    Képernyőkép az Azure Portal oldalfejlécének globális vezérlőiről, kiemelve a Cloud Shell ikont.

    Feljegyzés

    Ha először használja a Cloud Shellt, a rendszer kéri, hogy hozzon létre egy tárolót, amely a Cloud Shell használatához szükséges. Válasszon ki egy előfizetést a tárfiók és a Microsoft Azure-fájlmegosztás létrehozásához.

  2. A Cloud Shell eszköztár környezetválasztóját használva válassza ki az előnyben részesített CLI-környezetet. Ez a cikk a Bash-környezetet használja. A PowerShell-környezetet is használhatja.

    Feljegyzés

    Egyes parancsok eltérő szintaxist vagy formázást igényelnek a Bash- és PowerShell-környezetekben. További információ: Tippek az Azure CLI sikeres használatához.

    Képernyőkép egy Azure Cloud Shell-ablakról, amely kiemeli a környezetválasztót az eszköztáron.

CLI-munkamenet előkészítése

Ezután elő kell készítenie egy Azure CLI-munkamenetet. Ha a Cloud Shellt használja, a munkamenetet egy Cloud Shell lapon futtatja. Ha helyi CLI-ügyfelet használ, a munkamenetet cli-példányban futtatja.

  1. Ha a Cloud Shellt használja, ugorjon a következő lépésre. Ellenkező esetben futtassa az az login parancsot a CLI-munkamenetben az Azure-fiókba való bejelentkezéshez.

    Ha a Cloud Shellt használja, a rendszer automatikusan bejelentkezik az Azure-fiókjába. Az Azure CLI-munkamenet és az IoT Hub közötti összes kommunikáció hitelesítve és titkosítva van. Ennek eredményeképpen ez a cikk nem igényel olyan extra hitelesítést, amelyet valódi eszközzel, például egy kapcsolati sztring használ. További információ az Azure CLI-vel való bejelentkezésről: Bejelentkezés az Azure CLI-vel.

    az login
    
  2. A CLI-munkamenetben futtassa az az extension add parancsot. A parancs hozzáadja az Azure CLI-hez készült Microsoft Azure IoT-bővítményt a CLI-felülethez. A bővítmény az IoT Hub, az IoT Edge és az IoT Device Provisioning Service (DPS) adott parancsait adja hozzá az Azure CLI-hez. A bővítmény telepítése után nem kell újra telepítenie egy Cloud Shell-munkamenetben sem.

    az extension add --name azure-iot
    

    Feljegyzés

    Ez a cikk az Azure IoT-bővítmény legújabb, úgynevezett azure-iotverzióját használja. Az örökölt verzió neve azure-cli-iot-ext. Egyszerre csak egy verziót kell telepítenie. A parancs segítségével az extension list ellenőrizheti a jelenleg telepített bővítményeket.

    A bővítmény régi verziójának eltávolítására használható az extension remove --name azure-cli-iot-ext .

    A bővítmény új verziójának hozzáadására használható az extension add --name azure-iot .

    A telepített bővítmények megtekintéséhez használja a parancsot az extension list.

Eszközidentitás és modulidentitás létrehozása

Ebben a szakaszban egy eszközidentitást hoz létre az IoT Hubhoz a PARANCSSOR-munkamenetben, majd létrehoz egy modulidentitást az eszközidentitás használatával. Az egyes eszközidentitások alatt legfeljebb 50 modulidentitás hozható létre.

Eszközidentitás és modulidentitás létrehozása:

  1. A CLI-munkamenetben futtassa az az iot hub device-identity create parancsot, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ez a parancs létrehozza a modul eszközidentitását.

    {DeviceName}. Az eszköz neve.

    {HubName}. Az IoT Hub neve.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. A CLI-munkamenetben futtassa az az iot hub module-identity create parancsot, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ez a parancs létrehozza a modul modulidentitását az előző lépésben létrehozott eszközidentitás alatt.

    {DeviceName}. Az eszköz neve.

    {HubName}. Az IoT Hub neve.

    {ModuleName}. Az eszköz moduljának neve.

    az iot hub module-identity create --device-id {DeviceName} --hub-name {HubName} \
                                      --module-id {ModuleName}
    

A modul ikerpéldányának frissítése

A modulidentitás létrehozása után egy moduliker is implicit módon létrejön az IoT Hubban. Ebben a szakaszban a CLI-munkamenettel frissítheti az előző szakaszban létrehozott modulidentitáshoz társított modulidentitás kívánt tulajdonságait.

  1. A CLI-munkamenetben futtassa az az iot hub module-twin update parancsot, és cserélje le a következő helyőrzőket a megfelelő értékekre. Ebben a példában több kívánt tulajdonságot frissítünk a modul ikerpéldányán az előző szakaszban létrehozott modulidentitáshoz.

    {DeviceName}. Az eszköz neve.

    {HubName}. Az IoT Hub neve.

    {ModuleName}. Az eszköz moduljának neve.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. A CLI-munkamenetben győződjön meg arról, hogy a JSON-válasz megjeleníti a frissítési művelet eredményeit. A következő JSON-válasz példában a CLI-parancsban használtuk SampleDevice SampleModule a helyőrzőket és a {DeviceName} {ModuleName} az iot hub module-twin update helyőrzőket.

    {
      "authenticationType": "sas",
      "capabilities": null,
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Disconnected",
      "deviceEtag": "Mzg0OEN1NzW=",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": "SampleModule",
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
            "$lastUpdatedVersion": 2,
            "conditions": {
              "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
              "$lastUpdatedVersion": 2,
              "temperature": {
                "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                "$lastUpdatedVersion": 2,
                "critical": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                },
                "warning": {
                  "$lastUpdated": "2023-02-17T21:26:10.5835633Z",
                  "$lastUpdatedVersion": 2
                }
              }
            }
          },
          "$version": 2,
          "conditions": {
            "temperature": {
              "critical": 100,
              "warning": 75
            }
          }
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "0001-01-01T00:00:00Z"
          },
          "$version": 1
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": null,
      "version": 3,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Következő lépések

Az Azure CLI használatával az IoT-megoldás kibővítéséhez és az eszközök frissítésének ütemezéséhez lásd: Feladatok ütemezése és közvetítése.

Az IoT Hub és az eszközfelügyeleti minták, például a teljes körű rendszerkép-alapú frissítés használatának folytatásához tekintse meg az Azure IoT Hub eszközfrissítése című cikket a Raspberry Pi 3 B+ referenciarendszerkép használatával.