Share via


Introduzione alle identità dei moduli hub IoT e ai moduli gemelli con l'interfaccia della riga di comando di Azure

Le identità dei moduli e i moduli gemelli sono simili a hub IoT di Azure identità dei dispositivi e dispositivi gemelli, ma offrono una granularità più fine. Proprio come hub IoT di Azure le identità dei dispositivi e i dispositivi gemelli consentono a un'applicazione back-end di configurare un dispositivo e fornire visibilità sulle condizioni del dispositivo, le identità dei moduli e i moduli gemelli offrono queste funzionalità per i singoli componenti di un dispositivo. Nei dispositivi compatibili con più componenti, ad esempio dispositivi del sistema operativo o dispositivi firmware, identità dei moduli e moduli gemelli consentono la configurazione e le condizioni isolate per ogni componente.

Nota

Le funzionalità descritte in questo articolo sono disponibili solo nel livello Standard dell'hub IoT. Per altre informazioni sui livelli di hub IoT standard e standard, vedere Scegliere il livello di hub IoT appropriato per la soluzione.

Questo articolo illustra come creare una sessione dell'interfaccia della riga di comando di Azure in cui:

  • Creare un'identità del dispositivo, quindi creare un'identità del modulo per tale dispositivo.

  • Aggiornare un set di proprietà desiderate per il modulo gemello associato all'identità del modulo.

Prerequisiti

  • Interfaccia della riga di comando di Azure. È anche possibile eseguire i comandi in questo articolo usando azure Cloud Shell, una shell interattiva dell'interfaccia della riga di comando eseguita nel browser o in un'app, ad esempio Terminale Windows. Se si usa Cloud Shell, non è necessario installare alcun componente. Se si preferisce usare l'interfaccia della riga di comando in locale, questo articolo richiede l'interfaccia della riga di comando di Azure versione 2.36 o successiva. Eseguire az --version per trovare la versione. Per installare o aggiornare localmente l'interfaccia della riga di comando di Azure, vedere Installare l'interfaccia della riga di comando di Azure.

  • Un hub IoT. Crearne uno con l'interfaccia della riga di comando o il portale di Azure.

  • Assicurarsi che la porta 8883 sia aperta nel firewall. Gli esempi in questo articolo usano il protocollo MQTT, che comunica sulla porta 8883. Questa porta può essere bloccata in alcuni ambienti di rete aziendali e didattici. Per altre informazioni e soluzioni alternative per questo problema, vedere Connettersi all'hub IoT (MQTT).

Autenticazione del modulo

È possibile usare chiavi simmetriche o certificati X.509 per autenticare le identità del modulo. Per l'autenticazione del certificato X.509, il certificato del modulo deve avere il nome comune (CN) formattato come CN=<deviceid>/<moduleid>. Ad esempio:

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

Preparare il Cloud Shell

Se si vuole usare il Cloud Shell di Azure, è necessario avviarlo e configurarlo. Se si usa l'interfaccia della riga di comando in locale, passare alla sezione Preparare una sessione dell'interfaccia della riga di comando .

  1. Selezionare l'icona Cloud Shell nell'intestazione di pagina nel portale di Azure.

    Screenshot dei controlli globali dall'intestazione di pagina del portale di Azure, evidenziando l'icona Cloud Shell.

    Nota

    Se è la prima volta che si usa Cloud Shell, viene richiesto di creare una risorsa di archiviazione necessaria per usare Cloud Shell. Selezionare una sottoscrizione per creare un account di archiviazione e una condivisione File di Microsoft Azure.

  2. Usare il selettore di ambiente nella barra degli strumenti Cloud Shell per selezionare l'ambiente dell'interfaccia della riga di comando preferito. Questo articolo usa l'ambiente Bash . È anche possibile usare l'ambiente PowerShell .

    Nota

    Alcuni comandi richiedono sintassi o formattazione diversi negli ambienti Bash e PowerShell . Per altre informazioni, vedere Suggerimenti per l'uso dell'interfaccia della riga di comando di Azure.

    Screenshot di una finestra di Cloud Shell di Azure, che evidenzia il selettore di ambiente nella barra degli strumenti.

Preparare una sessione dell'interfaccia della riga di comando

È quindi necessario preparare una sessione dell'interfaccia della riga di comando di Azure. Se si usa il Cloud Shell, eseguire la sessione in una scheda Cloud Shell. Se si usa un client dell'interfaccia della riga di comando locale, eseguire la sessione in un'istanza dell'interfaccia della riga di comando.

  1. Se si usa il Cloud Shell, passare al passaggio successivo. In caso contrario, eseguire il comando az login nella sessione dell'interfaccia della riga di comando per accedere all'account Azure.

    Se si usa il Cloud Shell, si accede automaticamente all'account Azure. Tutte le comunicazioni tra la sessione dell'interfaccia della riga di comando di Azure e l'hub IoT vengono autenticate e crittografate. Di conseguenza, questo articolo non richiede l'autenticazione aggiuntiva usata con un dispositivo reale, ad esempio una stringa di connessione. Per altre informazioni sull'accesso con l'interfaccia della riga di comando di Azure, vedere Accedere con l'interfaccia della riga di comando di Azure.

    az login
    
  2. Nella sessione dell'interfaccia della riga di comando eseguire il comando az extension add . Il comando aggiunge l'estensione Microsoft Azure IoT per l'interfaccia della riga di comando di Azure alla shell dell'interfaccia della riga di comando. L'estensione aggiunge hub IoT, IoT Edge e comandi specifici del servizio Device Provisioning IoT all'interfaccia della riga di comando di Azure. Dopo aver installato l'estensione, non è necessario installarla di nuovo in alcuna sessione di Cloud Shell.

    az extension add --name azure-iot
    

    Nota

    Questo articolo usa la versione più recente dell'estensione Azure IoT, denominata azure-iot. La versione legacy viene chiamata azure-cli-iot-ext. Deve essere installata solo una versione alla volta. È possibile usare il comando az extension list per convalidare le estensioni attualmente installate.

    Usare az extension remove --name azure-cli-iot-ext per rimuovere la versione legacy dell'estensione.

    Usare az extension add --name azure-iot per aggiungere la nuova versione dell'estensione.

    Per visualizzare le estensioni installate, usare az extension list.

Creare un'identità del dispositivo e un'identità del modulo

In questa sezione viene creata un'identità del dispositivo per l'hub IoT nella sessione dell'interfaccia della riga di comando e quindi si crea un'identità del modulo usando tale identità del dispositivo. È possibile creare fino a 50 identità del modulo in ogni identità del dispositivo.

Per creare un'identità del dispositivo e un'identità del modulo:

  1. Nella sessione dell'interfaccia della riga di comando eseguire il comando az iot hub device-identity create , sostituendo i segnaposto seguenti con i valori corrispondenti. Questo comando crea l'identità del dispositivo per il modulo.

    {DeviceName}. Nome del dispositivo.

    {HubName}. Il nome dell'hub IoT.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. Nella sessione dell'interfaccia della riga di comando eseguire il comando az iot hub module-identity create , sostituendo i segnaposto seguenti con i valori corrispondenti. Questo comando crea l'identità del modulo, nell'identità del dispositivo creata nel passaggio precedente.

    {DeviceName}. Nome del dispositivo.

    {HubName}. Il nome dell'hub IoT.

    {ModuleName}. Nome del modulo del dispositivo.

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

Aggiornare il modulo gemello

Una volta creata un'identità del modulo, viene implicitamente creato anche un modulo gemello nell'hub IoT. In questa sezione si usa la sessione dell'interfaccia della riga di comando per aggiornare un set di proprietà desiderate nel modulo gemello associato all'identità del modulo creata nella sezione precedente.

  1. Nella sessione dell'interfaccia della riga di comando eseguire il comando az iot hub module-twin update , sostituendo i segnaposto seguenti con i valori corrispondenti. In questo esempio vengono aggiornate più proprietà desiderate nel modulo gemello per l'identità del modulo creata nella sezione precedente.

    {DeviceName}. Nome del dispositivo.

    {HubName}. Il nome dell'hub IoT.

    {ModuleName}. Nome del modulo del dispositivo.

    az iot hub module-twin update --device-id {DeviceName} --hub-name {HubName} \
                                  --module-id {ModuleName} \
                                  --desired '{"conditions":{"temperature":{"warning":75, "critical":100}}}'
    
  2. Nella sessione dell'interfaccia della riga di comando verificare che la risposta JSON mostri i risultati dell'operazione di aggiornamento. Nell'esempio di risposta JSON seguente è stato usato SampleDevice e SampleModule rispettivamente per i {DeviceName} segnaposto e {ModuleName} nel comando dell'interfaccia della az iot hub module-twin update riga di comando.

    {
      "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
      }
    }
    

Passaggi successivi

Per informazioni su come usare l'interfaccia della riga di comando di Azure per estendere la soluzione IoT e pianificare gli aggiornamenti nei dispositivi, vedere Pianificazione e trasmissione dei processi.

Per continuare a iniziare a usare hub IoT e modelli di gestione dei dispositivi, ad esempio l'aggiornamento basato su immagini end-to-end, vedere Aggiornamento del dispositivo per hub IoT di Azure articolo usando l'immagine di riferimento di Raspberry Pi 3 B+ .