Začínáme s dvojčaty zařízení (Azure CLI)

Dvojčata zařízení jsou dokumenty JSON s uloženými informacemi o stavu zařízení, včetně metadat, konfigurací a podmínek. IoT Hub zachová dvojče zařízení pro každé zařízení, které se k němu připojí.

Poznámka:

Funkce popsané v tomto článku jsou k dispozici pouze na úrovni Standard služby IoT Hub. Další informace o úrovních Služby IoT Hub úrovně Basic a Standard/Free najdete v tématu Volba správné úrovně IoT Hubu pro vaše řešení.

Dvojčata zařízení použijte k:

  • Uložte metadata zařízení z back-endu řešení.

  • Nahlašujte aktuální informace o stavu, jako jsou dostupné možnosti a podmínky, například použitá metoda připojení, z vaší aplikace zařízení.

  • Synchronizujte stav dlouhotrvajících pracovních postupů, jako jsou aktualizace firmwaru a konfigurace, mezi aplikací zařízení a back-endovou aplikací.

  • Zadejte dotaz na metadata, konfiguraci nebo stav zařízení.

Dvojčata zařízení jsou navržená pro synchronizaci a dotazování konfigurací a podmínek zařízení. Další informace o dvojčatech zařízení, včetně případů použití dvojčat zařízení, najdete v tématu Principy dvojčat zařízení.

IoT Hubs ukládají dvojčata zařízení, která obsahují následující prvky:

  • Značky. Metadata zařízení jsou přístupná jenom back-endem řešení.

  • Požadované vlastnosti. Objekty JSON upravitelné back-endem řešení a pozorovatelné aplikací zařízení.

  • Ohlášené vlastnosti Objekty JSON upravitelné aplikací zařízení a čitelné back-endem řešení.

Značky a vlastnosti nemohou obsahovat pole, ale mohou obsahovat vnořené objekty.

Následující obrázek znázorňuje organizaci dvojčete zařízení:

Snímek obrazovky s diagramem konceptu dvojčete zařízení

Back-end řešení navíc může dotazovat dvojčata zařízení na základě všech výše uvedených dat. Další informace o dvojčatech zařízení najdete v tématu Principy dvojčat zařízení. Další informace o dotazování najdete v dotazovacím jazyce služby IoT Hub.

V tomto článku se dozvíte, jak:

  • Simulované zařízení můžete použít k nahlášení kanálu připojení jako ohlášené vlastnosti dvojčete zařízení.

  • Dotazování zařízení pomocí filtrů na dříve vytvořené značky a vlastnosti

Další informace o používání ohlášených vlastností dvojčete zařízení najdete v doprovodných materiálech ke komunikaci typu zařízení-cloud.

V tomto článku se dozvíte, jak vytvořit dvě relace Azure CLI:

  • Relace, která vytvoří simulované zařízení. Simulované zařízení při inicializaci hlásí svůj kanál připojení jako hlášenou vlastnost odpovídající dvojče zařízení.

  • Relace, která aktualizuje značky dvojčete zařízení pro simulované zařízení, pak se na zařízení dotazuje z centra IoT. Dotazy používají filtry založené na značkách a vlastnostech, které byly dříve aktualizovány v obou relacích.

Požadavky

  • Rozhraní příkazového řádku Azure. Příkazy v tomto článku můžete spustit také pomocí azure Cloud Shellu, interaktivního prostředí cli, které běží v prohlížeči nebo v aplikaci, jako je Terminál Windows. Pokud používáte Cloud Shell, nemusíte nic instalovat. Pokud raději používáte rozhraní příkazového řádku místně, tento článek vyžaduje Azure CLI verze 2.36 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud chcete místně nainstalovat nebo upgradovat Azure CLI, přečtěte si téma Instalace Azure CLI.

  • IoT Hub. Vytvořte ho pomocí rozhraní příkazového řádku nebo webu Azure Portal.

  • Ujistěte se, že je v bráně firewall otevřený port 8883. Ukázky v tomto článku používají protokol MQTT, který komunikuje přes port 8883. Tento port je možné zablokovat v některých podnikových a vzdělávacích síťových prostředích. Další informace a způsoby, jak tento problém obejít, najdete v tématu Připojení pro IoT Hub (MQTT).

Příprava Cloud Shellu

Pokud chcete použít Azure Cloud Shell, musíte ho nejprve spustit a nakonfigurovat. Pokud používáte rozhraní příkazového řádku místně, přejděte do části Příprava dvou relací rozhraní příkazového řádku.

  1. V záhlaví stránky na webu Azure Portal vyberte ikonu Cloud Shellu.

    Snímek obrazovky globálních ovládacích prvků ze záhlaví stránky webu Azure Portal se zvýrazněnou ikonou Cloud Shellu

    Poznámka:

    Pokud jste Cloud Shell použili poprvé, zobrazí se výzva k vytvoření úložiště, které je potřeba k použití Cloud Shellu. Vyberte předplatné, abyste vytvořili účet úložiště, a sdílenou složku služby Microsoft Azure Files.

  2. Pomocí selektoru prostředí na panelu nástrojů Cloud Shell vyberte upřednostňované prostředí rozhraní příkazového řádku. Tento článek používá prostředí Bash . Můžete také použít prostředí PowerShellu .

    Poznámka:

    Některé příkazy vyžadují jinou syntaxi nebo formátování v prostředích Bash a PowerShellu . Další informace najdete v tématu Tipy o úspěšném použití Azure CLI.

    Snímek obrazovky s oknem Azure Cloud Shellu a zvýrazněným selektorem prostředí na panelu nástrojů

Příprava dvou relací rozhraní příkazového řádku

Dále musíte připravit dvě relace Azure CLI. Pokud používáte Cloud Shell, spustíte tyto relace na samostatných kartách Cloud Shellu. Pokud používáte místního klienta rozhraní příkazového řádku, spustíte samostatné instance rozhraní příkazového řádku. Pro následující úlohy použijte samostatné relace rozhraní příkazového řádku:

  • První relace simuluje zařízení IoT, které komunikuje s centrem IoT.
  • Druhá relace aktualizuje simulované zařízení a dotazuje se na centrum IoT.
  1. Pokud používáte Cloud Shell, přejděte k dalšímu kroku. V opačném případě spusťte příkaz az login v první relaci rozhraní příkazového řádku a přihlaste se ke svému účtu Azure.

    Pokud používáte Cloud Shell, jste automaticky přihlášení ke svému účtu Azure. Veškerá komunikace mezi relací Azure CLI a centrem IoT se ověřuje a šifruje. V důsledku toho tento článek nepotřebuje další ověřování, které byste použili se skutečným zařízením, jako je připojovací řetězec. Další informace o přihlášení pomocí Azure CLI najdete v tématu Přihlášení pomocí Azure CLI.

    az login
    
  2. V první relaci rozhraní příkazového řádku spusťte příkaz az extension add . Příkaz přidá do prostředí CLI rozšíření Microsoft Azure IoT pro Azure CLI. Rozšíření přidá příkazy specifické pro IoT Hub, IoT Edge a IoT Device Provisioning Service (DPS) do Azure CLI. Po instalaci rozšíření ho nemusíte znovu instalovat v žádné relaci Cloud Shellu.

    az extension add --name azure-iot
    

    Poznámka:

    Tento článek používá nejnovější verzi rozšíření Azure IoT, která se nazývá azure-iot. Starší verze se nazývá azure-cli-iot-ext. Najednou byste měli mít nainstalovanou jenom jednu verzi. Pomocí příkazu az extension list můžete ověřit aktuálně nainstalovaná rozšíření.

    Slouží az extension remove --name azure-cli-iot-ext k odebrání starší verze rozšíření.

    Slouží az extension add --name azure-iot k přidání nové verze rozšíření.

    Pokud chcete zjistit, jaká rozšíření jste nainstalovali, použijte az extension list.

  3. Otevřete druhou relaci rozhraní příkazového řádku. Pokud používáte Cloud Shell v prohlížeči, vyberte na panelu nástrojů první relace rozhraní příkazového řádku ikonu Otevřít novou relaci. Pokud používáte rozhraní příkazového řádku místně, otevřete druhou instanci rozhraní příkazového řádku.

    Snímek obrazovky s oknem Azure Cloud Shellu a zvýrazněnou ikonou Otevřít novou relaci na panelu nástrojů

Vytvoření a simulace zařízení

V této části vytvoříte identitu zařízení pro centrum IoT v první relaci rozhraní příkazového řádku a pak simulujete zařízení pomocí této identity zařízení. Simulované zařízení reaguje na úlohy, které plánujete v druhé relaci rozhraní příkazového řádku.

Vytvoření a spuštění simulovaného zařízení:

  1. V první relaci rozhraní příkazového řádku spusťte příkaz az iot hub device-identity create a nahraďte následující zástupné symboly odpovídajícími hodnotami. Tento příkaz vytvoří identitu zařízení pro simulované zařízení.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. V první relaci rozhraní příkazového řádku spusťte příkaz az iot device simulate a nahraďte následující zástupné symboly odpovídajícími hodnotami. Tento příkaz simuluje zařízení, které jste vytvořili v předchozím kroku. Příkaz také nakonfiguruje simulované zařízení tak, aby při inicializaci nahlásilo svůj kanál připojení jako hlášenou vlastnost odpovídající dvojče zařízení.

    {DeviceName}. Název simulovaného zařízení.

    {HubName}. Název vašeho centra IoT.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --init-reported-properties '{"connectivity":{"type": "cellular"}}'
    

    Tip

    Ve výchozím nastavení odešle příkaz az iot device simulate 100 zpráv typu zařízení-cloud s intervalem 3 sekund mezi zprávami. Simulace skončí po odeslání všech zpráv. Pokud chcete, aby simulace běžela déle, můžete pomocí --msg-count parametru --msg-interval zadat více zpráv nebo parametr určit delší interval mezi zprávami. Můžete také spustit příkaz znovu a restartovat simulované zařízení.

Aktualizace dvojčete zařízení

Po vytvoření identity zařízení se ve službě IoT Hub implicitně vytvoří dvojče zařízení. V této části použijete druhou relaci rozhraní příkazového řádku k aktualizaci sady značek dvojčete zařízení přidruženého k identitě zařízení, kterou jste vytvořili v předchozí části. Značky dvojčat zařízení můžete použít k uspořádání a správě zařízení v řešeníCh IoT. Další informace o správě zařízení pomocí značek najdete v tématu Správa zařízení pomocí značek dvojčat zařízení ve službě Azure IoT Hub.

  1. Ověřte, že je simulované zařízení v první relaci rozhraní příkazového řádku spuštěné. Pokud ne, restartujte ho opětovným spuštěním příkazu az iot device simulate z příkazu Vytvořit a simulovat zařízení.

  2. V druhé relaci rozhraní příkazového řádku spusťte příkaz az iot hub device-twin update a nahraďte následující zástupné symboly odpovídajícími hodnotami. V tomto příkladu aktualizujeme více značek dvojčete zařízení pro identitu zařízení, kterou jsme vytvořili v předchozí části.

    {DeviceName}. Název vašeho zařízení.

    {HubName}. Název vašeho centra IoT.

    az iot hub device-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --tags '{"location":{"region":"US","plant":"Redmond43"}}'
    
  3. V druhé relaci rozhraní příkazového řádku ověřte, že odpověď JSON zobrazuje výsledky operace aktualizace. V následujícím příkladu odpovědi JSON jsme použili SampleDevice zástupný {DeviceName} symbol v příkazu rozhraní příkazového az iot hub device-twin update řádku.

    {
      "authenticationType": "sas",
      "capabilities": {
        "iotEdge": false
      },
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Connected",
      "deviceEtag": "MTA2NTU1MDM2Mw==",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": null,
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:10.5062402Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
            "connectivity": {
              "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
              "type": {
                "$lastUpdated": "2023-02-21T10:40:43.8539917Z"
              }
            }
          },
          "$version": 2,
          "connectivity": {
            "type": "cellular"
          }
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": {
        "location": {
          "plant": "Redmond43",
          "region": "US"
        }
      },
      "version": 4,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    

Dotazování ioT Hubu na dvojčata zařízení

IoT Hub zveřejňuje dvojčata zařízení pro vaše centrum IoT jako kolekci dokumentů označovanou jako zařízení. V této části použijete druhou relaci rozhraní příkazového řádku ke spuštění dvou dotazů v sadě dvojčat zařízení pro centrum IoT: první dotaz vybere pouze dvojčata zařízení umístěná v zařízení Redmond43 a druhý dotaz zpřesní, aby se vybralo jenom zařízení připojená přes mobilní síť. Oba dotazy vrátí pouze prvních 100 zařízení v sadě výsledků. Další informace o dotazech dvojčete zařízení najdete v tématu Dotazy pro zařízení IoT Hub a dvojčata modulů.

  1. Ověřte, že je simulované zařízení v první relaci rozhraní příkazového řádku spuštěné. Pokud ne, restartujte ho opětovným spuštěním příkazu az iot device simulate z příkazu Vytvořit a simulovat zařízení.

  2. V druhé relaci rozhraní příkazového řádku spusťte příkaz az iot hub query a nahraďte následující zástupné symboly odpovídajícími hodnotami. V tomto příkladu filtrujeme dotaz tak, aby vracely pouze dvojčata zařízení umístěná v závodu Redmond43 .

    {HubName}. Název vašeho centra IoT.

    az iot hub query --hub-name {HubName} \
                     --query-command "SELECT * FROM devices WHERE tags.location.plant = 'Redmond43'" \
                     --top 100
    
  3. V druhé relaci rozhraní příkazového řádku ověřte, že odpověď JSON zobrazuje výsledky dotazu.

    {
      "authenticationType": "sas",
      "capabilities": {
        "iotEdge": false
      },
      "cloudToDeviceMessageCount": 0,
      "connectionState": "Connected",
      "deviceEtag": "MTA2NTU1MDM2Mw==",
      "deviceId": "SampleDevice",
      "deviceScope": null,
      "etag": "AAAAAAAAAAI=",
      "lastActivityTime": "0001-01-01T00:00:00+00:00",
      "modelId": "",
      "moduleId": null,
      "parentScopes": null,
      "properties": {
        "desired": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:10.5062402Z"
          },
          "$version": 1
        },
        "reported": {
          "$metadata": {
            "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
            "connectivity": {
              "$lastUpdated": "2023-02-21T10:40:43.8539917Z",
              "type": {
                "$lastUpdated": "2023-02-21T10:40:43.8539917Z"
              }
            }
          },
          "$version": 2,
          "connectivity": {
            "type": "cellular"
          }
        }
      },
      "status": "enabled",
      "statusReason": null,
      "statusUpdateTime": "0001-01-01T00:00:00+00:00",
      "tags": {
        "location": {
          "plant": "Redmond43",
          "region": "US"
        }
      },
      "version": 4,
      "x509Thumbprint": {
        "primaryThumbprint": null,
        "secondaryThumbprint": null
      }
    }
    
  4. V druhé relaci rozhraní příkazového řádku spusťte příkaz az iot hub query a nahraďte následující zástupné symboly odpovídajícími hodnotami. V tomto příkladu filtrujeme dotaz tak, aby vracely pouze dvojčata zařízení umístěná v závodu Redmond43 , která jsou také připojená přes mobilní síť.

    {HubName}. Název vašeho centra IoT.

    az iot hub query --hub-name {HubName} \
                     --query-command "SELECT * FROM devices WHERE tags.location.plant = 'Redmond43' \
                                      AND properties.reported.connectivity.type = 'cellular'" \
                     --top 100
    
  5. V druhé relaci rozhraní příkazového řádku ověřte, že odpověď JSON zobrazuje výsledky dotazu. Výsledky tohoto dotazu by měly odpovídat výsledkům předchozího dotazu v této části.

V tomto článku:

  • Přidání metadat zařízení jako značek z relace Azure CLI
  • Simulované zařízení, které nahlásilo informace o připojení zařízení ve dvojčeti zařízení
  • Dotazovali se na informace dvojčete zařízení pomocí dotazovacího jazyka ioT Hubu podobného SQL v relaci Azure CLI.

Další kroky

Informace o: