Guida introduttiva: Usare Node.js per controllare un dispositivo connesso a un hub IoT di AzureQuickstart: Use Node.js to control a device connected to an Azure IoT hub

In questa guida di avvio rapido si usa un metodo diretto per controllare un dispositivo simulato connesso all'hub IoT di Azure.In this quickstart, you use a direct method to control a simulated device connected to Azure IoT Hub. Hub IoT è un servizio di Azure che consente di gestire i dispositivi IoT dal cloud e di acquisire volumi elevati di dati di telemetria dai dispositivi nel cloud per l'archiviazione o l'elaborazione.IoT Hub is an Azure service that enables you to manage your IoT devices from the cloud, and ingest high volumes of device telemetry to the cloud for storage or processing. È possibile usare metodi diretti per modificare in remoto il comportamento di un dispositivo connesso all'hub IoT.You can use direct methods to remotely change the behavior of a device connected to your IoT hub. Questa guida di avvio rapido usa due applicazioni Node.js: un'applicazione del dispositivo simulato che risponde ai metodi diretti chiamati da un'applicazione back-end e un'applicazione back-end che chiama i metodi diretti sul dispositivo simulato.This quickstart uses two Node.js applications: a simulated device application that responds to direct methods called from a back-end application and a back-end application that calls the direct methods on the simulated device.

PrerequisitiPrerequisites

  • Un account Azure con una sottoscrizione attiva.An Azure account with an active subscription. È possibile crearne uno gratuitamente.Create one for free.

  • Node.js 10+.Node.js 10+.

    È possibile verificare la versione corrente di Node.js installata nel computer di sviluppo tramite il comando seguente:You can verify the current version of Node.js on your development machine using the following command:

    node --version
    
  • Un progetto Node.js di esempio.A sample Node.js project.

  • Porta 8883 aperta nel firewall.Port 8883 open in your firewall. L'esempio di dispositivo di questo argomento di avvio rapido usa il protocollo MQTT, che comunica tramite la porta 8883.The device sample in this quickstart uses MQTT protocol, which communicates over port 8883. Questa porta potrebbe essere bloccata in alcuni ambienti di rete aziendali e didattici.This port may be blocked in some corporate and educational network environments. Per altre informazioni e soluzioni alternative per questo problema, vedere Connettersi all'hub IoT (MQTT).For more information and ways to work around this issue, see Connecting to IoT Hub (MQTT).

  • Usare Azure Cloud Shell tramite l'ambiente Bash.Use Azure Cloud Shell using the Bash environment.

    Avviare Cloud Shell in una nuova finestraLaunch Cloud Shell in a new window

  • Se si preferisce, installare l'interfaccia della riga di comando di Azure per eseguire i relativi comandi di riferimento.If you prefer, install the Azure CLI to run CLI reference commands.

Nota

Questo articolo usa la versione più recente dell'estensione Azure IoT, denominata azure-iot.This article uses the newest version of the Azure IoT extension, called azure-iot. La versione legacy viene chiamata azure-cli-iot-ext. Deve essere installata solo una versione alla volta.The legacy version is called azure-cli-iot-ext.You should only have one version installed at a time. È possibile usare il comando az extension list per convalidare le estensioni attualmente installate.You can use the command az extension list to validate the currently installed extensions.

Usare az extension remove --name azure-cli-iot-ext per rimuovere la versione legacy dell'estensione.Use az extension remove --name azure-cli-iot-ext to remove the legacy version of the extension.

Usare az extension add --name azure-iot per aggiungere la nuova versione dell'estensione.Use az extension add --name azure-iot to add the new version of the extension.

Per visualizzare le estensioni installate, usare az extension list.To see what extensions you have installed, use az extension list.

Creare un hub IoTCreate an IoT hub

Se è stata completata la precedente Guida introduttiva: Inviare dati di telemetria da un dispositivo a un hub IoT, ignorare questo passaggio.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

Questa sezione illustra come creare un hub IoT usando il portale di Azure.This section describes how to create an IoT hub using the Azure portal.

  1. Accedere al portale di Azure.Sign in to the Azure portal.

  2. Nella home page di Azure selezionare il pulsante + Crea una risorsa e quindi immettere Hub IoT nel campo Cerca nel Marketplace.From the Azure homepage, select the + Create a resource button, and then enter IoT Hub in the Search the Marketplace field.

  3. Nei risultati della ricerca selezionare Hub IoT e quindi fare clic su Crea.Select IoT Hub from the search results, and then select Create.

  4. Nella scheda Informazioni di base completare i campi come indicato di seguito:On the Basics tab, complete the fields as follows:

    • Sottoscrizione Selezionare la sottoscrizione da usare per l'hub.Subscription: Select the subscription to use for your hub.

    • Gruppo di risorse: selezionare un gruppo di risorse o crearne uno nuovo.Resource Group: Select a resource group or create a new one. Per crearne uno nuovo, fare clic su Crea nuovo e specificare il nome da usare.To create a new one, select Create new and fill in the name you want to use. Per usare un gruppo di risorse esistente, selezionarlo.To use an existing resource group, select that resource group. Per altre informazioni, vedere l'articolo su come gestire gruppi di risorse di Azure Resource Manager.For more information, see Manage Azure Resource Manager resource groups.

    • Area: selezionare l'area in cui si vuole collocare l'hub.Region: Select the region in which you want your hub to be located. Selezionare la località più vicina.Select the location closest to you. Alcune funzionalità, ad esempio i flussi dei dispositivi dell'hub IoT, sono disponibili solo in aree specifiche.Some features, such as IoT Hub device streams, are only available in specific regions. Per queste funzionalità limitate, è necessario selezionare una delle aree supportate.For these limited features, you must select one of the supported regions.

    • Nome hub IoT: immettere un nome per l'hub.IoT Hub Name: Enter a name for your hub. Il nome deve essere univoco a livello globale.This name must be globally unique. Se il nome immesso è disponibile, viene visualizzato un segno di spunta verde.If the name you enter is available, a green check mark appears.

    Importante

    Dato che l'hub IoT sarà individuabile pubblicamente come endpoint DNS, evitare di includere nel nome informazioni personali o sensibili.Because the IoT hub will be publicly discoverable as a DNS endpoint, be sure to avoid entering any sensitive or personally identifiable information when you name it.

    Creare un hub nel portale di Azure

  5. Selezionare Avanti: Dimensioni e piano per continuare a creare l'hub.Select Next: Size and scale to continue creating your hub.

    Configurare le dimensioni e la scalabilità per un nuovo hub con il portale di Azure

    In questa schermata è possibile accettare le impostazioni predefinite.You can accept the default settings here. Se si preferisce, è possibile modificare uno dei campi seguenti:If desired, you can modify any of the following fields:

    • Piano tariffario e livello di scalabilità: il piano e il livello selezionati.Pricing and scale tier: Your selected tier. È possibile scegliere tra livelli diversi a seconda del numero di funzionalità che si desidera e della quantità di messaggi che si inviano al giorno tramite la soluzione.You can choose from several tiers, depending on how many features you want and how many messages you send through your solution per day. Il livello gratuito è utilizzabile a scopo di test e valutazione.The free tier is intended for testing and evaluation. Consente la connessione di 500 dispositivi all'hub e un massimo di 8.000 messaggi al giorno.It allows 500 devices to be connected to the hub and up to 8,000 messages per day. Per ogni sottoscrizione di Azure è possibile creare un solo hub IoT nel livello gratuito.Each Azure subscription can create one IoT hub in the free tier.

      Se si sta eseguendo un Avvio rapido per flussi dei dispositivi dell'hub IoT, selezionare il livello gratuito.If you are working through a Quickstart for IoT Hub device streams, select the free tier.

    • Unità di hub IoT: Il numero di messaggi consentiti per unità al giorno dipende dal piano tariffario dell'hub.IoT Hub units: The number of messages allowed per unit per day depends on your hub's pricing tier. Se ad esempio si vuole che l'hub supporti 700.000 messaggi in ingresso, selezionare due unità del piano S1.For example, if you want the hub to support ingress of 700,000 messages, you choose two S1 tier units. Per informazioni dettagliate sulle altre opzioni relative al livello, vedere Scegliere il livello più adatto di hub IoT.For details about the other tier options, see Choosing the right IoT Hub tier.

    • Centro sicurezza di Azure: attivare questa opzione per aggiungere un livello aggiuntivo di protezione dalle minacce a IoT e ai dispositivi.Azure Security Center: Turn this on to add an extra layer of threat protection to IoT and your devices. Questa opzione non è disponibile per gli hub del livello gratuito.This option is not available for hubs in the free tier. Per altre informazioni su questa funzionalità, vedere Centro sicurezza di Azure per IoT.For more information about this feature, see Azure Security Center for IoT.

    • Impostazioni avanzate > Partizioni da dispositivo a cloud: questa proprietà associa i messaggi da dispositivo a cloud al numero di lettori simultanei di tali messaggi.Advanced Settings > Device-to-cloud partitions: This property relates the device-to-cloud messages to the number of simultaneous readers of the messages. La maggior parte degli hub richiede solo quattro partizioni.Most hubs need only four partitions.

  6. Selezionare Avanti: Tag per passare alla schermata successiva.Select Next: Tags to continue to the next screen.

    I tag sono coppie nome/valore.Tags are name/value pairs. È possibile assegnare lo stesso tag a più risorse e gruppi di risorse per classificare le risorse e consolidare la fatturazione.You can assign the same tag to multiple resources and resource groups to categorize resources and consolidate billing. Per altre informazioni, vedere Usare tag per organizzare le risorse di Azure.For more information, see Use tags to organize your Azure resources.

    Assegnare tag per l'hub con il portale di Azure

  7. Selezionare Avanti: Rivedi e crea per rivedere le scelte effettuate.Select Next: Review + create to review your choices. Viene visualizzata una schermata simile a questa, ma con i valori selezionati durante la creazione dell'hub.You see something similar to this screen, but with the values you selected when creating the hub.

    Rivedere le informazioni per la creazione del nuovo hub

  8. Fare clic su Crea per creare il nuovo hub.Select Create to create your new hub. La creazione dell'hub richiede alcuni minuti.Creating the hub takes a few minutes.

Registrare un dispositivoRegister a device

Se è stata completata la precedente Guida introduttiva: Inviare dati di telemetria da un dispositivo a un hub IoT, ignorare questo passaggio.If you completed the previous Quickstart: Send telemetry from a device to an IoT hub, you can skip this step.

È necessario registrare un dispositivo con l'hub IoT perché questo possa connettersi.A device must be registered with your IoT hub before it can connect. In questa guida introduttiva si usa Azure Cloud Shell per registrare un dispositivo simulato.In this quickstart, you use the Azure Cloud Shell to register a simulated device.

  1. Eseguire questo comando in Azure Cloud Shell per creare l'identità del dispositivo.Run the following command in Azure Cloud Shell to create the device identity.

    YourIoTHubName: sostituire il segnaposto in basso con il nome scelto per l'hub IoT.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    MyNodeDevice: nome del dispositivo da registrare.MyNodeDevice: This is the name of the device you're registering. È consigliabile usare MyNodeDevice, come illustrato.It's recommended to use MyNodeDevice as shown. Se si sceglie un altro nome per il dispositivo, è necessario usare tale nome anche nell'ambito di questo articolo e aggiornare il nome del dispositivo nelle applicazioni di esempio prima di eseguirle.If you choose a different name for your device, you also need to use that name throughout this article, and update the device name in the sample applications before you run them.

    az iot hub device-identity create \
      --hub-name {YourIoTHubName} --device-id MyNodeDevice
    
  2. Eseguire il comando seguente in Azure Cloud Shell per ottenere la stringa di connessione del dispositivo per il dispositivo appena registrato.Run the following commands in Azure Cloud Shell to get the device connection string for the device you just registered:

    YourIoTHubName: sostituire il segnaposto in basso con il nome scelto per l'hub IoT.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub device-identity show-connection-string \
      --hub-name {YourIoTHubName} \
      --device-id MyNodeDevice \
      --output table
    

    Annotare la stringa di connessione del dispositivo, che avrà questo aspetto:Make a note of the device connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;DeviceId=MyNodeDevice;SharedAccessKey={YourSharedAccessKey}

    Il valore verrà usato più avanti in questa guida introduttiva.You use this value later in the quickstart.

  3. È necessaria anche una stringa di connessione del servizio per consentire all'applicazione back-end di connettersi all'hub IoT dell'utente e recuperare i messaggi.You also need a service connection string to enable the back-end application to connect to your IoT hub and retrieve the messages. Il comando seguente recupera la stringa di connessione del servizio per l'hub IoT:The following command retrieves the service connection string for your IoT hub:

    YourIoTHubName: sostituire il segnaposto in basso con il nome scelto per l'hub IoT.YourIoTHubName: Replace this placeholder below with the name you chose for your IoT hub.

    az iot hub show-connection-string \
      --policy-name service --name {YourIoTHubName} --output table
    
    

    Annotare la stringa di connessione del servizio, che avrà questo aspetto:Make a note of the service connection string, which looks like:

    HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

    Il valore verrà usato più avanti in questa guida introduttiva.You use this value later in the quickstart. Questa stringa di connessione del servizio è diversa dalla stringa di connessione del dispositivo annotata nel passaggio precedente.This service connection string is different from the device connection string you noted in the previous step.

Ascoltare le chiamate dei metodi direttiListen for direct method calls

L'applicazione del dispositivo simulato si connette a un endpoint specifico del dispositivo nell'hub IoT, invia dati di telemetria simulati e ascolta le chiamate dei metodi diretti dall'hub.The simulated device application connects to a device-specific endpoint on your IoT hub, sends simulated telemetry, and listens for direct method calls from your hub. In questa guida introduttiva la chiamata dei metodi diretti dall'hub indica al dispositivo di modificare l'intervallo di invio dei dati di telemetria.In this quickstart, the direct method call from the hub tells the device to change the interval at which it sends telemetry. Il dispositivo simulato invia un acknowledgement all'hub dopo l'esecuzione del metodo diretto.The simulated device sends an acknowledgment back to your hub after it executes the direct method.

  1. In una finestra del terminale locale passare alla cartella radice del progetto Node.js di esempio.In a local terminal window, navigate to the root folder of the sample Node.js project. Passare quindi alla cartella iot-hub\Quickstarts\simulated-device-2.Then navigate to the iot-hub\Quickstarts\simulated-device-2 folder.

  2. Aprire il file SimulatedDevice.js in un editor di testo di propria scelta.Open the SimulatedDevice.js file in a text editor of your choice.

    Sostituire il valore della variabile connectionString con la stringa di connessione del dispositivo annotata in precedenza.Replace the value of the connectionString variable with the device connection string you made a note of earlier. Salvare quindi le modifiche nel file SimulatedDevice.js.Then save your changes to SimulatedDevice.js.

  3. Nella finestra del terminale locale eseguire i comandi seguenti per installare le librerie necessarie ed eseguire l'applicazione del dispositivo simulato:In the local terminal window, run the following commands to install the required libraries and run the simulated device application:

    npm install
    node SimulatedDevice.js
    

    La schermata seguente mostra l'output mentre l'applicazione del dispositivo simulato invia i dati di telemetria all'hub IoT:The following screenshot shows the output as the simulated device application sends telemetry to your IoT hub:

    Eseguire il dispositivo simulato

Chiamare il metodo direttoCall the direct method

L'applicazione back-end si connette a un endpoint sul lato servizio nell'IoT Hub dell'utente.The back-end application connects to a service-side endpoint on your IoT Hub. L'applicazione effettua chiamate dei metodi diretti a un dispositivo tramite l'hub IoT e rimane in ascolto degli acknowledgement.The application makes direct method calls to a device through your IoT hub and listens for acknowledgments. Un'applicazione back-end dell'hub IoT in genere viene eseguita nel cloud.An IoT Hub back-end application typically runs in the cloud.

  1. In un'altra finestra del terminale locale passare alla cartella radice del progetto Node.js di esempio.In another local terminal window, navigate to the root folder of the sample Node.js project. Passare quindi alla cartella iot-hub\Quickstarts\back-end-application.Then navigate to the iot-hub\Quickstarts\back-end-application folder.

  2. Aprire il file BackEndApplication.js in un editor di testo di propria scelta.Open the BackEndApplication.js file in a text editor of your choice.

    Sostituire il valore della variabile connectionString con la stringa di connessione del servizio annotata in precedenza.Replace the value of the connectionString variable with the service connection string you made a note of earlier. Salvare quindi le modifiche nel file BackEndApplication.js.Then save your changes to BackEndApplication.js.

  3. Nella finestra del terminale locale eseguire i comandi seguenti per installare le librerie necessarie ed eseguire l'applicazione back-end:In the local terminal window, run the following commands to install the required libraries and run the back-end application:

    npm install
    node BackEndApplication.js
    

    La schermata seguente mostra l'output visualizzato quando l'applicazione effettua una chiamata del metodo diretto al dispositivo e riceve un acknowledgement:The following screenshot shows the output as the application makes a direct method call to the device and receives an acknowledgment:

    Output quando l'applicazione effettua una chiamata del metodo diretto al dispositivo

    Dopo l'esecuzione dell'applicazione back-end, viene visualizzato un messaggio nella finestra della console che esegue il dispositivo simulato e cambia la frequenza di invio dei messaggi:After you run the back-end application, you see a message in the console window running the simulated device, and the rate at which it sends messages changes:

    Output in caso di modifica nel client simulato

Pulire le risorseClean up resources

Se si continua con il prossimo articolo consigliato, è possibile conservare le risorse già create e riutilizzarle.If you will be continuing to the next recommended article, you can keep the resources you've already created and reuse them.

In caso contrario, è possibile eliminare le risorse di Azure create in questo articolo per evitare addebiti.Otherwise, you can delete the Azure resources created in this article to avoid charges.

Importante

L'eliminazione di un gruppo di risorse è irreversibile.Deleting a resource group is irreversible. Il gruppo di risorse e tutte le risorse in esso contenute vengono eliminati in modo permanente.The resource group and all the resources contained in it are permanently deleted. Assicurarsi di non eliminare accidentalmente il gruppo di risorse sbagliato o le risorse errate.Make sure that you do not accidentally delete the wrong resource group or resources. Se si è creato l'hub IoT all'interno di un gruppo di risorse esistente che contiene risorse che si vogliono conservare, eliminare solo la risorsa dell'hub IoT invece di eliminare il gruppo di risorse.If you created the IoT Hub inside an existing resource group that contains resources you want to keep, only delete the IoT Hub resource itself instead of deleting the resource group.

Per eliminare un gruppo di risorse per nome:To delete a resource group by name:

  1. Accedere al portale di Azure e selezionare Gruppi di risorse.Sign in to the Azure portal and select Resource groups.

  2. Nella casella di testo Filtra per nome immettere il nome del gruppo di risorse che contiene l'hub IoT.In the Filter by name textbox, type the name of the resource group containing your IoT Hub.

  3. A destra del gruppo di risorse nell'elenco dei risultati selezionare ... quindi su Elimina gruppo di risorse.To the right of your resource group in the result list, select ... then Delete resource group.

    Delete

  4. Verrà chiesto di confermare l'eliminazione del gruppo di risorse.You will be asked to confirm the deletion of the resource group. Digitare di nuovo il nome del gruppo di risorse per confermare e quindi selezionare Elimina.Type the name of your resource group again to confirm, and then select Delete. Dopo qualche istante il gruppo di risorse e tutte le risorse che contiene vengono eliminati.After a few moments, the resource group and all of its contained resources are deleted.

Passaggi successiviNext steps

In questa guida introduttiva è stato chiamato un metodo diretto su un dispositivo da un'applicazione back-end ed è stata inviata una risposta alla chiamata del metodo diretto in un'applicazione del dispositivo simulato.In this quickstart, you called a direct method on a device from a back-end application, and responded to the direct method call in a simulated device application.

Per informazioni su come indirizzare messaggi da dispositivo a cloud a diverse destinazioni nel cloud, continuare con l'esercitazione successiva.To learn how to route device-to-cloud messages to different destinations in the cloud, continue to the next tutorial.