Avvio rapido: Inviare dati di telemetria da un dispositivo a un hub IoT e leggere i dati con un'applicazione di back-end (Python)Quickstart: Send telemetry from a device to an IoT hub and read it with a back-end application (Python)

In questa guida di avvio rapido si inviano dati di telemetria da un'applicazione del dispositivo simulato, tramite l'hub IoT di Azure, a un'applicazione back-end per l'elaborazione.In this quickstart, you send telemetry from a simulated device application through Azure IoT Hub to a back-end application for processing. L'hub IoT è un servizio di Azure che consente di acquisire volumi elevati di dati di telemetria dai dispositivi IoT nel cloud per l'archiviazione o l'elaborazione.IoT Hub is an Azure service that enables you to ingest high volumes of telemetry from your IoT devices into the cloud for storage or processing. Questo argomento di avvio rapido usa due applicazioni Python già scritte: una per l'invio dei dati di telemetria e l'altra per la relativa lettura dall'hub.This quickstart uses two pre-written Python applications: one to send the telemetry and one to read the telemetry from the hub. Prima di eseguire queste due applicazioni, creare un hub IoT e registrare un dispositivo con l'hub.Before you run these two applications, you create an IoT hub and register a device with the hub.

PrerequisitiPrerequisites

  • Usare l'ambiente bash in Azure cloud Shell.Use the Bash environment in Azure Cloud Shell.

    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

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.

    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 nell'portale di Azure.

  5. Selezionare Avanti: Rete per continuare a creare l'hub.Select Next: Networking to continue creating your hub.

    Scegliere gli endpoint che possono connettersi all'hub IoT.Choose the endpoints that can connect to your IoT Hub. È possibile selezionare l'impostazione predefinita Endpoint pubblico (tutte le reti) oppure scegliere Endpoint pubblico (intervalli IP selezionati) o Endpoint privato.You can select the default setting Public endpoint (all networks), or choose Public endpoint (selected IP ranges), or Private endpoint. Accettare l'impostazione predefinita per questo esempio.Accept the default setting for this example.

    Scegliere gli endpoint che possono connettersi.

  6. Selezionare Avanti: Gestione per continuare a creare l'hub.Select Next: Management to continue creating your hub.

    Imposta la dimensione e la scala per un nuovo hub usando 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.

    • Defender per IoT: attivare questa opzione per aggiungere un livello aggiuntivo di protezione dalle minacce a IoT e ai dispositivi.Defender for IoT: 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.

  7. 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 i tag per l'hub usando il portale di Azure.

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

    Esaminare le informazioni per la creazione del nuovo hub.

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

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

    MyPythonDevice: nome del dispositivo da registrare.MyPythonDevice: This is the name of the device you're registering. È consigliabile usare MyPythonDevice, come illustrato.It's recommended to use MyPythonDevice as shown. Se si sceglie un altro nome per il dispositivo, sarà 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'll 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 MyPythonDevice
    
  2. Eseguire il comando seguente in Azure Cloud Shell per ottenere la stringa di connessione del dispositivo per il dispositivo registrato:Run the following command in Azure Cloud Shell to get the device connection string for the device you 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 connection-string show --hub-name {YourIoTHubName} --device-id MyPythonDevice --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=MyPythonDevice;SharedAccessKey={YourSharedAccessKey}

    Il valore verrà usato più avanti in questa guida di avvio rapido.You'll use this value later in the quickstart.

  3. È necessario anche l'endpoint compatibile con gli Hub eventi di Azure, il percorso compatibile con gli Hub eventi di Azure, e la chiave primaria di servizio dall'hub IoT dell'utente per consentire all'applicazione back-end di connettersi all'hub di IoT e recuperare i messaggi.You also need the Event Hubs-compatible endpoint, Event Hubs-compatible path, and service primary key from your IoT hub to enable the back-end application to connect to your IoT hub and retrieve the messages. I comandi seguenti recuperano questi valori per l'hub IoT:The following commands retrieve these values 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 choose for your IoT hub.

    az iot hub show --query properties.eventHubEndpoints.events.endpoint --name {YourIoTHubName}
    
    az iot hub show --query properties.eventHubEndpoints.events.path --name {YourIoTHubName}
    
    az iot hub policy show --name service --query primaryKey --hub-name {YourIoTHubName}
    

    Prendere nota di questi tre valori, che verranno usati più avanti nella guida di avvio rapido.Make a note of these three values, which you'll use later in the quickstart.

Inviare dati di telemetria simulatiSend simulated telemetry

L'applicazione del dispositivo simulato si connette a un endpoint specifico del dispositivo nell'hub IoT e invia dati di telemetria simulati di temperatura e umidità.The simulated device application connects to a device-specific endpoint on your IoT hub and sends simulated temperature and humidity telemetry.

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

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

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

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

    pip install azure-iot-device
    
  4. Nella finestra del terminale locale eseguire i comandi seguenti per eseguire l'applicazione del dispositivo simulato:In the local terminal window, run the following commands to run the simulated device application:

    python SimulatedDevice.py
    

    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

Leggere i dati di telemetria dell'hubRead the telemetry from your hub

L'applicazione back-end si connette all'endpoint Eventi sul lato servizio dell'hub IoT.The back-end application connects to the service-side Events endpoint on your IoT Hub. L'applicazione riceve i messaggi da dispositivo a cloud inviati dal dispositivo simulato.The application receives the device-to-cloud messages sent from your simulated device. In genere, un'applicazione di back-end di hub IoT viene eseguita nel cloud per ricevere ed elaborare i messaggi da dispositivo a cloud.An IoT Hub back-end application typically runs in the cloud to receive and process device-to-cloud messages.

Nota

La procedura seguente usa l'esempio sincrono read_device_to_cloud_messages_sync.py.The following steps use the synchronous sample, read_device_to_cloud_messages_sync.py. È possibile eseguire la stessa procedura con l'esempio asincrono read_device_to_cloud_messages_async.py.You can perform the same steps with the asynchronous sample, read_device_to_cloud_messages_async.py.

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

  2. Aprire il file read_device_to_cloud_messages_sync.py in un editor di testo a scelta.Open the read_device_to_cloud_messages_sync.py file in a text editor of your choice. Aggiornare le variabili seguenti e salvare le modifiche nel file.Update the following variables and save your changes to the file.

    VariabileVariable valoreValue
    EVENTHUB_COMPATIBLE_ENDPOINT Sostituire il valore della variabile con l'endpoint compatibile con hub eventi annotato in precedenza.Replace the value of the variable with the Event Hubs-compatible endpoint you made a note of earlier.
    EVENTHUB_COMPATIBLE_PATH Sostituire il valore della variabile con il percorso compatibile con hub eventi annotato in precedenza.Replace the value of the variable with the Event Hubs-compatible path you made a note of earlier.
    IOTHUB_SAS_KEY Sostituire il valore della variabile con la chiave primaria di servizio annotata in precedenza.Replace the value of the variable with the service primary key you made a note of earlier.
  3. Nella finestra del terminale locale eseguire i comandi seguenti per installare le librerie necessarie per l'applicazione back-end:In the local terminal window, run the following commands to install the required libraries for the back-end application:

    pip install azure-eventhub
    
  4. Nella finestra del terminale locale eseguire i comandi seguenti per compilare ed eseguire l'applicazione back-end:In the local terminal window, run the following commands to build and run the back-end application:

    python read_device_to_cloud_messages_sync.py
    

    La schermata seguente mostra l'output mentre l'applicazione back-end riceve i dati di telemetria inviati dal dispositivo simulato all'hub:The following screenshot shows the output as the back-end application receives telemetry sent by the simulated device to the hub:

    Eseguire l'applicazione back-end

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 di avvio rapido è stato configurato un hub IoT, è stato registrato un dispositivo, sono stati inviati dati di telemetria simulati all'hub usando un'applicazione Python e sono stati letti i dati di telemetria dall'hub usando una semplice applicazione back-end.In this quickstart, you set up an IoT hub, registered a device, sent simulated telemetry to the hub using a Python application, and read the telemetry from the hub using a simple back-end application.

Per informazioni su come controllare il dispositivo simulato da un'applicazione back-end, continuare nella Guida introduttiva successiva.To learn how to control your simulated device from a back-end application, continue to the next quickstart.