Esercitazione: Connettere un'applicazione del dispositivo Plug and Play IoT di esempio in esecuzione in Linux o Windows a hub IoT
Questa esercitazione illustra come creare un'applicazione del dispositivo di esempio Plug and Play IoT, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria inviati. L'applicazione di esempio è scritta in C ed è inclusa in Azure IoT SDK per dispositivi per C. Un generatore di soluzioni può usare lo strumento Azure IoT Explorer per conoscere le funzionalità di un dispositivo Plug and Play IoT senza dover visualizzare il codice del dispositivo.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
È possibile eseguire questa esercitazione in Linux o in Windows. I comandi della shell in questa esercitazione seguono la convenzione Linux per i separatori di percorso '/
'. Se si usa Windows, assicurarsi di sostituire questi separatori con '\
'.
I prerequisiti variano in base al sistema operativo:
Linux
Questa esercitazione presuppone l'uso di Ubuntu Linux. I passaggi in questa esercitazione sono stati testati con Ubuntu 18.04.
Per completare questa esercitazione, installare il software seguente nell'ambiente Linux locale:
Installare GCC, Git, cmake e tutte le dipendenze necessarie usando il comando apt-get
:
sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev
Verificare che la versione di cmake
sia superiore alla 2.8.12 e che la versione di GCC sia superiore alla 4.4.7.
cmake --version
gcc --version
Finestre
Per completare questa esercitazione in Windows, installare il software seguente nell'ambiente Windows locale:
- Visual Studio (Community, Professional o Enterprise): assicurarsi di includere il carico di lavoro Sviluppo di applicazioni desktop con C++ quando si installa Visual Studio.
- Git.
- CMake.
Scaricare il codice
In questa esercitazione viene preparato un ambiente di sviluppo che è possibile usare per clonare e compilare Azure IoT Hub SDK per dispositivi per C.
Aprire un prompt dei comandi nella directory di propria scelta. Eseguire questo comando per clonare il repository GitHub di SDK e librerie di Azure IoT per C in tale percorso:
git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init
Il completamento di questa operazione richiederà alcuni minuti.
Compilare il codice
È possibile compilare ed eseguire il codice usando Visual Studio oppure eseguendo cmake
dalla riga di comando.
Usare Visual Studio
Aprire la cartella radice del repository clonato. Dopo alcuni secondi, il supporto CMake in Visual Studio crea tutti gli elementi necessari per l'esecuzione e il debug del progetto.
Quando Visual Studio è pronto, in Esplora soluzioni passare all'esempio iothub_client/samples/pnp/pnp_simple_thermostat/.
Fare clic con il pulsante destro del mouse sul file pnp_simple_thermostat.c e scegliere Aggiungi configurazione di debug. Selezionare l'impostazione predefinita.
In Visual Studio viene aperto il file launch.vs.json. Modificare questo file come illustrato nel frammento di codice seguente per impostare le variabili di ambiente richieste. L'ID ambito e la chiave primaria di registrazione sono stati annotati quando sono state completate le guide di avvio rapido e le esercitazioni per configurare l'ambiente per Plug and Play IoT:
{ "version": "0.2.1", "defaults": {}, "configurations": [ { "type": "default", "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c", "projectTarget": "", "name": "pnp_simple_thermostat.c", "env": { "IOTHUB_DEVICE_SECURITY_TYPE": "DPS", "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>", "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device", "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>" } } ] }
Fare clic con il pulsante destro del mouse sul file pnp_simple_thermostat.c e scegliere Imposta come elemento di avvio.
Per tracciare l'esecuzione del codice in Visual Studio, aggiungere un punto di interruzione alla
main
funzione nel file pnp_simple_thermostat.c .È ora possibile eseguire l'esempio ed eseguirne il debug dal menu Debug.
Il dispositivo è ora pronto a ricevere comandi e aggiornamenti delle proprietà e ha iniziato a inviare dati di telemetria all'hub. Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare cmake per compilare il codice
Usare l'utilità della riga di comando cmake per compilare il codice:
Creare una sottodirectory cmake nella cartella radice dell'SDK per dispositivi e passare a tale cartella:
cd azure-iot-sdk-c mkdir cmake cd cmake
Eseguire i comandi seguenti per compilare l'SDK e gli esempi:
cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF .. cmake --build .
Eseguire l'esempio del dispositivo
Nell'articolo Configurare l'ambiente sono state create quattro variabili di ambiente per configurare l'esempio in modo da usare il servizio Device Provisioning per connettersi all'hub IoT:
- IOTHUB_DEVICE_SECURITY_TYPE con il valore
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE con l'ambito ID servizio Device Provisioning.
- IOTHUB_DEVICE_DPS_DEVICE_ID con il valore
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY con la chiave primaria di registrazione.
- IOTHUB_DEVICE_DPS_ENDPOINT con il valore
global.azure-devices-provisioning.net
.
Per altre informazioni sulla configurazione di esempio, vedere il file Leggimi dell'esempio.
Per eseguire l'applicazione di esempio nell'SDK che simula un dispositivo Plug and Play IoT che invia dati di telemetria all'hub IoT:
Dalla cartella cmake passare alla cartella che contiene il file eseguibile ed eseguirlo:
# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe
Suggerimento
Per tracciare l'esecuzione del codice in Visual Studio in Windows, aggiungere un punto di interruzione alla funzione main
nel file pnp_simple_thermostat.c.
Il dispositivo è ora pronto a ricevere comandi e aggiornamenti delle proprietà e ha iniziato a inviare dati di telemetria all'hub. Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare Azure IoT Explorer per convalidare il codice
Dopo l'avvio dell'esempio client del dispositivo, usare lo strumento Azure IoT Explorer per verificarne il funzionamento.
Aprire Azure IoT Explorer.
Nella pagina Hub IoT, se non è già stata aggiunta una connessione all'hub IoT, selezionare + Aggiungi connessione. Immettere la stringa di connessione per l'hub IoT creato in precedenza e selezionare Salva.
Nella pagina Impostazioni Plug and Play IoT selezionare + Aggiungi > cartella locale e selezionare la cartella modelli locale in cui sono stati salvati i file del modello.
Nella pagina Hub IoT fare clic sul nome dell'hub che si vuole usare. Viene visualizzato un elenco dei dispositivi registrati nell'hub IoT.
Fare clic sull'ID dispositivo del dispositivo creato in precedenza.
Il menu a sinistra mostra i diversi tipi di informazioni disponibili per il dispositivo.
Selezionare Componenti Plug and Play IoT per visualizzare le informazioni sul modello del dispositivo.
È possibile visualizzare i diversi componenti del dispositivo. Componente predefinito ed eventuali componenti aggiuntivi. Selezionare un componente da usare.
Selezionare la pagina Telemetria e quindi selezionare Avvia per visualizzare i dati di telemetria inviati dal dispositivo per questo componente.
Selezionare la pagina Proprietà (solo lettura) per visualizzare le proprietà di sola lettura segnalate per questo componente.
Selezionare la pagina Properties (writable) (Proprietà - accessibili in scrittura) per visualizzare le proprietà accessibili in scrittura che è possibile aggiornare per questo componente.
Selezionare una proprietà in base al nome, immettere un nuovo valore e selezionare Update desired value (Aggiorna valore desiderato).
Per visualizzare il nuovo valore, selezionare il pulsante Aggiorna.
Selezionare la pagina Comandi per visualizzare tutti i comandi per questo componente.
Selezionare il comando di cui si vuole testare l'impostazione del parametro, se presente. Selezionare Invia comando per chiamare il comando nel dispositivo. Nella finestra del prompt dei comandi in cui è in esecuzione il codice di esempio si vedrà che il dispositivo risponde al comando.
Esaminare il codice
Questo esempio implementa un semplice dispositivo termostato Plug and Play IoT. Il modello termostato non usa componenti Plug and Play IoT. Il file di modello DTDL per il dispositivo termostato definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Il codice del dispositivo usa la funzione standard per la connessione all'hub IoT:
deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)
Il dispositivo invia l'ID modello del modello DTDL implementato nella richiesta di connessione. Un dispositivo che invia un ID modello è un dispositivo Plug and Play IoT:
static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";
...
IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)
Il codice che aggiorna le proprietà, gestisce i comandi e invia i dati di telemetria è identico al codice per un dispositivo che non usa le convenzioni di Plug and Play IoT.
Il codice usa la libreria Parson per analizzare oggetti JSON nei payload inviati dall'hub IoT:
// JSON parser
#include "parson.h"
Pulire le risorse
Se sono state completate le guide introduttive e le esercitazioni, vedere Pulire le risorse.
Questa esercitazione illustra come creare un'applicazione del dispositivo di esempio Plug and Play IoT, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria inviati. L'applicazione di esempio è scritta in C# ed è inclusa in Azure IoT SDK per C#. Un integratore di soluzioni può usare lo strumento Azure IoT Explorer per conoscere le funzionalità di un dispositivo Plug and Play IoT senza doverne visualizzare il codice.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
È possibile eseguire questa esercitazione in Linux o in Windows. I comandi della shell in questa esercitazione seguono la convenzione Linux per i separatori di percorso '/
'. Se si usa Windows, assicurarsi di sostituire questi separatori con '\
'.
- La versione più recente di .NET SDK per la piattaforma.
- Git.
Scaricare il codice
In questa esercitazione si prepara un ambiente di sviluppo che è possibile usare per clonare e compilare il repository Azure IoT SDK per C#.
Aprire un prompt dei comandi in una cartella di propria scelta. Eseguire il comando seguente per clonare il repository GitHub di Microsoft Azure IoT SDK per C# (.NET) in questo percorso:
git clone https://github.com/Azure/azure-iot-sdk-csharp
Compilare il codice
È ora possibile compilare l'esempio ed eseguirlo. Eseguire i comandi seguenti per compilare l'esempio:
cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build
Eseguire l'esempio del dispositivo
Per eseguire l'esempio, eseguire il comando seguente:
dotnet run
Il dispositivo è ora pronto a ricevere comandi e aggiornamenti delle proprietà e ha iniziato a inviare dati di telemetria all'hub. Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare Azure IoT Explorer per convalidare il codice
Dopo l'avvio dell'esempio client del dispositivo, usare lo strumento Azure IoT Explorer per verificarne il funzionamento.
Aprire Azure IoT Explorer.
Nella pagina Hub IoT, se non è già stata aggiunta una connessione all'hub IoT, selezionare + Aggiungi connessione. Immettere la stringa di connessione per l'hub IoT creato in precedenza e selezionare Salva.
Nella pagina Impostazioni Plug and Play IoT selezionare + Aggiungi > cartella locale e selezionare la cartella modelli locale in cui sono stati salvati i file del modello.
Nella pagina Hub IoT fare clic sul nome dell'hub che si vuole usare. Viene visualizzato un elenco dei dispositivi registrati nell'hub IoT.
Fare clic sull'ID dispositivo del dispositivo creato in precedenza.
Il menu a sinistra mostra i diversi tipi di informazioni disponibili per il dispositivo.
Selezionare Componenti Plug and Play IoT per visualizzare le informazioni sul modello del dispositivo.
È possibile visualizzare i diversi componenti del dispositivo. Componente predefinito ed eventuali componenti aggiuntivi. Selezionare un componente da usare.
Selezionare la pagina Telemetria e quindi selezionare Avvia per visualizzare i dati di telemetria inviati dal dispositivo per questo componente.
Selezionare la pagina Proprietà (solo lettura) per visualizzare le proprietà di sola lettura segnalate per questo componente.
Selezionare la pagina Properties (writable) (Proprietà - accessibili in scrittura) per visualizzare le proprietà accessibili in scrittura che è possibile aggiornare per questo componente.
Selezionare una proprietà in base al nome, immettere un nuovo valore e selezionare Update desired value (Aggiorna valore desiderato).
Per visualizzare il nuovo valore, selezionare il pulsante Aggiorna.
Selezionare la pagina Comandi per visualizzare tutti i comandi per questo componente.
Selezionare il comando di cui si vuole testare l'impostazione del parametro, se presente. Selezionare Invia comando per chiamare il comando nel dispositivo. Nella finestra del prompt dei comandi in cui è in esecuzione il codice di esempio si vedrà che il dispositivo risponde al comando.
Esaminare il codice
Questo esempio implementa un semplice dispositivo termostato Plug and Play IoT. Il modello implementato da questo esempio non usa componenti di Plug and Play IoT. Il file di modello DTDL (Digital Twins Definition Language) per il dispositivo termostato definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Il codice del dispositivo si connette all'hub IoT usando il metodo CreateFromConnectionString
standard. Il dispositivo invia l'ID modello del modello DTDL implementato nella richiesta di connessione. Un dispositivo che invia un ID modello è un dispositivo Plug and Play IoT:
private static void InitializeDeviceClientAsync()
{
var options = new ClientOptions
{
ModelId = ModelId,
};
s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
}
L'ID modello viene archiviato nel codice come mostrato nel frammento seguente:
private const string ModelId = "dtmi:com:example:Thermostat;1";
Il codice che aggiorna le proprietà, gestisce i comandi e invia i dati di telemetria è identico al codice per un dispositivo che non usa le convenzioni di Plug and Play IoT.
L'esempio usa una libreria JSON per analizzare oggetti JSON nei payload inviati dall'hub IoT:
using Newtonsoft.Json;
...
DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);
Pulire le risorse
Se sono state completate le guide introduttive e le esercitazioni, vedere Pulire le risorse.
Questa esercitazione illustra come creare un'applicazione del dispositivo di esempio Plug and Play IoT, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria inviati. L'applicazione di esempio è scritta in Java ed è inclusa in Azure IoT SDK per dispositivi per Java. Un integratore di soluzioni può usare lo strumento Azure IoT Explorer per conoscere le funzionalità di un dispositivo Plug and Play IoT senza doverne visualizzare il codice.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
È possibile eseguire questa esercitazione in Linux o in Windows. I comandi della shell in questa esercitazione seguono la convenzione Linux per i separatori di percorso '/
'. Se si usa Windows, assicurarsi di sostituire questi separatori con '\
'.
Per completare questa esercitazione, installare il software seguente nell'ambiente di sviluppo locale:
Scaricare il codice
In questa esercitazione viene preparato un ambiente di sviluppo che è possibile usare per clonare e compilare Azure IoT Hub SDK per dispositivi per Java.
Aprire un prompt dei comandi nella directory di propria scelta. Eseguire il comando seguente per clonare il repository GitHub di SDK e librerie di Azure IoT per Java in questo percorso:
git clone https://github.com/Azure/azure-iot-sdk-java.git
Compilare il codice
Passare alla cartella radice dell'esempio di termostato nel repository Java SDK clonato e compilarla:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package
Eseguire l'esempio del dispositivo
Nell'articolo Configurare l'ambiente sono state create quattro variabili di ambiente per configurare l'esempio in modo da usare il servizio Device Provisioning per connettersi all'hub IoT:
- IOTHUB_DEVICE_SECURITY_TYPE con il valore
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE con l'ambito ID servizio Device Provisioning.
- IOTHUB_DEVICE_DPS_DEVICE_ID con il valore
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY con la chiave primaria di registrazione.
- IOTHUB_DEVICE_DPS_ENDPOINT con il valore
global.azure-devices-provisioning.net
.
Per altre informazioni sulla configurazione di esempio, vedere il file Leggimi dell'esempio.
Dalla cartella /device/iot-device-samples/pnp-device-sample/thermostat-device-sample eseguire l'applicazione:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"
Il dispositivo è ora pronto a ricevere comandi e aggiornamenti delle proprietà e ha iniziato a inviare dati di telemetria all'hub. Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare Azure IoT Explorer per convalidare il codice
Dopo l'avvio dell'esempio client del dispositivo, usare lo strumento Azure IoT Explorer per verificarne il funzionamento.
Aprire Azure IoT Explorer.
Nella pagina Hub IoT, se non è già stata aggiunta una connessione all'hub IoT, selezionare + Aggiungi connessione. Immettere la stringa di connessione per l'hub IoT creato in precedenza e selezionare Salva.
Nella pagina Impostazioni Plug and Play IoT selezionare + Aggiungi > cartella locale e selezionare la cartella modelli locale in cui sono stati salvati i file del modello.
Nella pagina Hub IoT fare clic sul nome dell'hub che si vuole usare. Viene visualizzato un elenco dei dispositivi registrati nell'hub IoT.
Fare clic sull'ID dispositivo del dispositivo creato in precedenza.
Il menu a sinistra mostra i diversi tipi di informazioni disponibili per il dispositivo.
Selezionare Componenti Plug and Play IoT per visualizzare le informazioni sul modello del dispositivo.
È possibile visualizzare i diversi componenti del dispositivo. Componente predefinito ed eventuali componenti aggiuntivi. Selezionare un componente da usare.
Selezionare la pagina Telemetria e quindi selezionare Avvia per visualizzare i dati di telemetria inviati dal dispositivo per questo componente.
Selezionare la pagina Proprietà (solo lettura) per visualizzare le proprietà di sola lettura segnalate per questo componente.
Selezionare la pagina Properties (writable) (Proprietà - accessibili in scrittura) per visualizzare le proprietà accessibili in scrittura che è possibile aggiornare per questo componente.
Selezionare una proprietà in base al nome, immettere un nuovo valore e selezionare Update desired value (Aggiorna valore desiderato).
Per visualizzare il nuovo valore, selezionare il pulsante Aggiorna.
Selezionare la pagina Comandi per visualizzare tutti i comandi per questo componente.
Selezionare il comando di cui si vuole testare l'impostazione del parametro, se presente. Selezionare Invia comando per chiamare il comando nel dispositivo. Nella finestra del prompt dei comandi in cui è in esecuzione il codice di esempio si vedrà che il dispositivo risponde al comando.
Esaminare il codice
Questo esempio implementa un semplice dispositivo termostato Plug and Play IoT. Il modello implementato da questo esempio non usa componenti di Plug and Play IoT. Il file di modello DTDL per il dispositivo termostato definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Il codice del dispositivo usa la classe DeviceClient
standard per la connessione all'hub IoT. Il dispositivo invia l'ID modello del modello DTDL implementato nella richiesta di connessione. Un dispositivo che invia un ID modello è un dispositivo Plug and Play IoT:
private static void initializeDeviceClient() throws URISyntaxException, IOException {
ClientOptions options = new ClientOptions();
options.setModelId(MODEL_ID);
deviceClient = new DeviceClient(deviceConnectionString, protocol, options);
deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);
if (throwable != null) {
log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
throwable.printStackTrace();
}
}, deviceClient);
deviceClient.open();
}
L'ID modello viene archiviato nel codice come mostrato nel frammento seguente:
private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";
Il codice che aggiorna le proprietà, gestisce i comandi e invia i dati di telemetria è identico al codice per un dispositivo che non usa le convenzioni di Plug and Play IoT.
L'esempio usa una libreria JSON per analizzare oggetti JSON nei payload inviati dall'hub IoT:
import com.google.gson.Gson;
...
Date since = new Gson().fromJson(jsonRequest, Date.class);
Pulire le risorse
Se sono state completate le guide introduttive e le esercitazioni, vedere Pulire le risorse.
Questa esercitazione illustra come creare un'applicazione del dispositivo di esempio Plug and Play IoT, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria inviati. L'applicazione di esempio è scritta in Node.js ed è inclusa in Azure IoT SDK per dispositivi per Node.js. Un integratore di soluzioni può usare lo strumento Azure IoT Explorer per conoscere le funzionalità di un dispositivo Plug and Play IoT senza doverne visualizzare il codice.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
È possibile eseguire questa esercitazione in Linux o in Windows. I comandi della shell in questa esercitazione seguono la convenzione Linux per i separatori di percorso '/
'. Se si usa Windows, assicurarsi di sostituire questi separatori con '\
'.
Per completare questa esercitazione, è necessario Node.js nel computer di sviluppo. È possibile scaricare la versione più recente consigliata per più piattaforme da nodejs.org.
È possibile verificare la versione corrente di Node.js installata nel computer di sviluppo tramite il comando seguente:
node --version
Scaricare il codice
In questa esercitazione viene preparato un ambiente di sviluppo che è possibile usare per clonare e compilare Azure IoT Hub Device SDK per Node.js.
Aprire un prompt dei comandi nella directory di propria scelta. Eseguire questo comando per clonare il repository GitHub di Microsoft Azure IoT SDK per Node.js in questo percorso:
git clone https://github.com/Azure/azure-iot-sdk-node
Installare le librerie necessarie
Usare l'SDK del dispositivo per compilare il codice di esempio incluso. L'applicazione compilata simula un dispositivo che si connette a un hub IoT. L'applicazione invia proprietà e dati di telemetria e riceve comandi.
In una finestra del terminale locale passare alla cartella del repository clonato e passare alla cartella /azure-iot-sdk-node/device/samples/javascript . Eseguire quindi il comando seguente per installare le librerie necessarie:
npm install
Eseguire il dispositivo di esempio
Questo esempio implementa un semplice dispositivo termostato Plug and Play IoT. Il modello implementato da questo esempio non usa componenti di Plug and Play IoT. Il file di modello DTDL per il dispositivo termostato definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Aprire il file pnp_simple_thermostat.js . In questo file è possibile osservare come:
- Importare le interfacce necessarie.
- Scrivere un gestore di aggiornamento delle proprietà e un gestore di comandi.
- Gestire le patch delle proprietà desiderate e inviare i dati di telemetria.
- Eseguire facoltativamente il provisioning del dispositivo con il servizio Device Provisioning (DPS) di Azure.
Nella funzione principale è possibile osservare come vengono combinate tutte queste operazioni:
- Creare il dispositivo dalla stringa di connessione o eseguirne il provisioning usando il servizio Device Provisioning.
- Usare l'opzione modelID per specificare il modello di dispositivo Plug and Play IoT.
- Abilitare il gestore dei comandi.
- Inviare i dati di telemetria dal dispositivo all'hub.
- Ottenere i dispositivi gemelli e aggiornare le proprietà segnalate.
- Abilitare il gestore di aggiornamento delle proprietà desiderato.
Nell'articolo Configurare l'ambiente sono state create quattro variabili di ambiente per configurare l'esempio in modo da usare il servizio Device Provisioning per connettersi all'hub IoT:
- IOTHUB_DEVICE_SECURITY_TYPE con il valore
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE con l'ambito ID servizio Device Provisioning.
- IOTHUB_DEVICE_DPS_DEVICE_ID con il valore
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY con la chiave primaria di registrazione.
- IOTHUB_DEVICE_DPS_ENDPOINT con il valore
global.azure-devices-provisioning.net
.
Per altre informazioni sulla configurazione di esempio, vedere il file Leggimi dell'esempio.
Eseguire l'applicazione di esempio per simulare un dispositivo Plug and Play IoT che invia dati di telemetria all'hub IoT. Per eseguire l'applicazione di esempio, usare il comando seguente:
node pnp_simple_thermostat.js
Viene visualizzato l'output seguente, che indica che il dispositivo ha iniziato a inviare dati di telemetria all'hub ed è ora pronto a ricevere comandi e aggiornamenti delle proprietà.
Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare Azure IoT Explorer per convalidare il codice
Dopo l'avvio dell'esempio client del dispositivo, usare lo strumento Azure IoT Explorer per verificarne il funzionamento.
Aprire Azure IoT Explorer.
Nella pagina Hub IoT, se non è già stata aggiunta una connessione all'hub IoT, selezionare + Aggiungi connessione. Immettere la stringa di connessione per l'hub IoT creato in precedenza e selezionare Salva.
Nella pagina Impostazioni Plug and Play IoT selezionare + Aggiungi > cartella locale e selezionare la cartella modelli locale in cui sono stati salvati i file del modello.
Nella pagina Hub IoT fare clic sul nome dell'hub che si vuole usare. Viene visualizzato un elenco dei dispositivi registrati nell'hub IoT.
Fare clic sull'ID dispositivo del dispositivo creato in precedenza.
Il menu a sinistra mostra i diversi tipi di informazioni disponibili per il dispositivo.
Selezionare Componenti Plug and Play IoT per visualizzare le informazioni sul modello del dispositivo.
È possibile visualizzare i diversi componenti del dispositivo. Componente predefinito ed eventuali componenti aggiuntivi. Selezionare un componente da usare.
Selezionare la pagina Telemetria e quindi selezionare Avvia per visualizzare i dati di telemetria inviati dal dispositivo per questo componente.
Selezionare la pagina Proprietà (solo lettura) per visualizzare le proprietà di sola lettura segnalate per questo componente.
Selezionare la pagina Properties (writable) (Proprietà - accessibili in scrittura) per visualizzare le proprietà accessibili in scrittura che è possibile aggiornare per questo componente.
Selezionare una proprietà in base al nome, immettere un nuovo valore e selezionare Update desired value (Aggiorna valore desiderato).
Per visualizzare il nuovo valore, selezionare il pulsante Aggiorna.
Selezionare la pagina Comandi per visualizzare tutti i comandi per questo componente.
Selezionare il comando di cui si vuole testare l'impostazione del parametro, se presente. Selezionare Invia comando per chiamare il comando nel dispositivo. Nella finestra del prompt dei comandi in cui è in esecuzione il codice di esempio si vedrà che il dispositivo risponde al comando.
Pulire le risorse
Se sono state completate le guide introduttive e le esercitazioni, vedere Pulire le risorse.
Questa esercitazione illustra come creare un'applicazione del dispositivo di esempio Plug and Play IoT, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria inviati. L'applicazione di esempio è scritta per Python ed è inclusa in Azure IoT Hub Device SDK per Python. Un integratore di soluzioni può usare lo strumento Azure IoT Explorer per conoscere le funzionalità di un dispositivo Plug and Play IoT senza doverne visualizzare il codice.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
Per completare questa esercitazione, è necessario che Python sia installato nel computer di sviluppo. Verifica i requisiti della versione corrente di Python consultando l'Azure IoT SDK per Python. È possibile controllare la versione di Python con il comando seguente:
python --version
È possibile scaricare la versione più recente consigliata per più piattaforme da python.org.
Nell'ambiente Python locale installare il pacchetto nel modo seguente:
pip install azure-iot-device
Clonare il repository IoT di Python SDK:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
Eseguire il dispositivo di esempio
La cartella azure-iot-sdk-python/samples/pnp contiene il codice di esempio per il dispositivo Plug and Play IoT. Questa esercitazione usa il file simple_thermostat.py . Questo codice di esempio implementa un dispositivo compatibile con Plug and Play IoT e usa la libreria client dei dispositivi Python di Azure IoT.
Aprire il file simple_thermostat.py in un editor di testo. Si noti che:
Definisce un singolo identificatore di modello di dispositivo gemello che rappresenta in modo univoco il termostato. Un identificatore di modello di dispositivo gemello deve essere noto all'utente e dipende dallo scenario di implementazione del dispositivo. Per l'esempio corrente il modello rappresenta un termostato con dati di telemetria, proprietà e comandi associati al monitoraggio della temperatura.
Include funzioni per definire implementazioni del gestore di comandi. È necessario scrivere questi gestori per definire il modo in cui il dispositivo risponde alle richieste dei comandi.
Include una funzione per definire una risposta ai comandi. È necessario creare funzioni di risposta ai comandi per restituire una risposta all'hub IoT.
Definisce una funzione listener di tastiera di input che consente di uscire dall'applicazione.
Include una funzione main. La funzione main:
Usa l'SDK del dispositivo per creare un client del dispositivo e connettersi all'hub IoT.
Aggiorna le proprietà. Il modello Thermostat definisce
targetTemperature
emaxTempSinceLastReboot
come le due proprietà per il termostato. Le proprietà vengono aggiornate tramite il metodopatch_twin_reported_properties
definito indevice_client
.Avvia l'ascolto di richieste di comandi tramite la funzione execute_command_listener. La funzione configura un "listener" per ascoltare i comandi provenienti dal servizio. Quando si configura il listener, si specifica un
method_name
oggetto ,user_command_handler
ecreate_user_response_handler
.- La funzione
user_command_handler
definisce l'operazione che il dispositivo deve eseguire quando riceve un comando. - La funzione
create_user_response_handler
crea una risposta da inviare all'hub IoT quando un comando viene eseguito correttamente. È possibile visualizzare questa risposta nel portale.
- La funzione
Avviare l'invio dei dati di telemetria. Il valore pnp_send_telemetry viene definito nel file pnp_methods.py. Il codice di esempio usa un ciclo per chiamare questa funzione ogni otto secondi.
Disabilita tutti i listener e le attività ed esce dal ciclo quando si preme Q o q.
Nell'articolo Configurare l'ambiente sono state create quattro variabili di ambiente per configurare l'esempio in modo da usare il servizio Device Provisioning per connettersi all'hub IoT:
- IOTHUB_DEVICE_SECURITY_TYPE con il valore
DPS
- IOTHUB_DEVICE_DPS_ID_SCOPE con l'ambito ID servizio Device Provisioning.
- IOTHUB_DEVICE_DPS_DEVICE_ID con il valore
my-pnp-device
. - IOTHUB_DEVICE_DPS_DEVICE_KEY con la chiave primaria di registrazione.
- IOTHUB_DEVICE_DPS_ENDPOINT con il valore
global.azure-devices-provisioning.net
.
Per altre informazioni sulla configurazione di esempio, vedere il file Leggimi dell'esempio.
Dopo avere esaminato il codice, usare il comando seguente per eseguire l'esempio:
python simple_thermostat.py
Viene visualizzato l'output seguente, che indica che il dispositivo invia dati di telemetria all'hub ed è ora pronto a ricevere comandi e aggiornamenti delle proprietà:
Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message
Lasciare l'esempio in esecuzione mentre si completano i passaggi successivi.
Usare Azure IoT Explorer per convalidare il codice
Dopo l'avvio dell'esempio client del dispositivo, usare lo strumento Azure IoT Explorer per verificarne il funzionamento.
Aprire Azure IoT Explorer.
Nella pagina Hub IoT, se non è già stata aggiunta una connessione all'hub IoT, selezionare + Aggiungi connessione. Immettere la stringa di connessione per l'hub IoT creato in precedenza e selezionare Salva.
Nella pagina Impostazioni Plug and Play IoT selezionare + Aggiungi > cartella locale e selezionare la cartella modelli locale in cui sono stati salvati i file del modello.
Nella pagina Hub IoT fare clic sul nome dell'hub che si vuole usare. Viene visualizzato un elenco dei dispositivi registrati nell'hub IoT.
Fare clic sull'ID dispositivo del dispositivo creato in precedenza.
Il menu a sinistra mostra i diversi tipi di informazioni disponibili per il dispositivo.
Selezionare Componenti Plug and Play IoT per visualizzare le informazioni sul modello del dispositivo.
È possibile visualizzare i diversi componenti del dispositivo. Componente predefinito ed eventuali componenti aggiuntivi. Selezionare un componente da usare.
Selezionare la pagina Telemetria e quindi selezionare Avvia per visualizzare i dati di telemetria inviati dal dispositivo per questo componente.
Selezionare la pagina Proprietà (solo lettura) per visualizzare le proprietà di sola lettura segnalate per questo componente.
Selezionare la pagina Properties (writable) (Proprietà - accessibili in scrittura) per visualizzare le proprietà accessibili in scrittura che è possibile aggiornare per questo componente.
Selezionare una proprietà in base al nome, immettere un nuovo valore e selezionare Update desired value (Aggiorna valore desiderato).
Per visualizzare il nuovo valore, selezionare il pulsante Aggiorna.
Selezionare la pagina Comandi per visualizzare tutti i comandi per questo componente.
Selezionare il comando di cui si vuole testare l'impostazione del parametro, se presente. Selezionare Invia comando per chiamare il comando nel dispositivo. Nella finestra del prompt dei comandi in cui è in esecuzione il codice di esempio si vedrà che il dispositivo risponde al comando.
Pulire le risorse
Se sono state completate le guide introduttive e le esercitazioni, vedere Pulire le risorse.
Se si sviluppa per i dispositivi vincolati, è possibile usare Plug and Play IoT con:
- Librerie client di Azure SDK per IoT C embedded.
- Eclipse ThreadX..
Questo articolo include collegamenti e risorse per questi scenari vincolati.
Prerequisiti
Molti degli esempi seguenti richiedono un dispositivo hardware specifico e i prerequisiti sono diversi per ognuno degli esempi. Seguire il collegamento all'esempio pertinente per istruzioni dettagliate su prerequisiti, configurazione e compilazione.
Usare l'SDK per Embedded C
L'SDK per Embedded C offre una soluzione leggera per connettere i dispositivi vincolati ai servizi Azure IoT, inclusa l'uso delle convenzioni di Plug and Play IoT. I collegamenti seguenti includono esempi per i dispositivi basati su MCU e per scopi didattici e di debug.
Usare un dispositivo basato su MCU
Per un'esercitazione end-to-end completa che usa l'SDK per Embedded C, il servizio Device Provisioning e Plug and Play IoT in un MCU, vedere Repurpose PIC-IoT Wx Development Board to Connect to Azure through hub IoT Device Provisioning Service (Repurpose PIC-IoT Wx Development Board to Connect to Azure through hub IoT Device Provisioning Service).For a complete end-to-end tutorial using the SDK for Embedded C, the Device Provisioning Service, and Plug and Play IoT on an MCU, see Repurpose PIC-IoT Wx Development Board to Connect to Azure through hub IoT Device Provisioning Service.
Esempi introduttivi
Il repository SDK per Embedded C contiene diversi esempi che illustrano come usare Plug and Play IoT:
Nota
Questi esempi vengono visualizzati in esecuzione in Windows e Linux per scopi didattici e di debug. In uno scenario di produzione, gli esempi sono destinati solo ai dispositivi vincolati.
Uso di Eclipse ThreadX
Eclipse ThreadX include un livello leggero che aggiunge connettività nativa ai servizi cloud Azure IoT. Questo livello offre un meccanismo semplice per connettere i dispositivi vincolati ad Azure IoT usando le funzionalità avanzate di Eclipse ThreadX. Per altre informazioni, vedere la panoramica di Eclipse ThreadX.
Toolchain
Gli esempi di Eclipse ThreadX vengono forniti con diversi tipi di combinazioni di IDE e toolchain, ad esempio:
- IAR: IDE Embedded Workbench di IAR
- GCC/CMake: eseguire la compilazione sulla base del sistema di compilazione CMake open source e della toolchain GNU Arm Embedded.
- MCUExpresso: IDE MCUXpresso di NXP
- STM32Cube: IDE STDevices STM32Cube
- MPLAB: IDE X MPLAB di Microprocessor
Esempi
La tabella seguente elenca gli esempi che illustrano come iniziare a usare dispositivi diversi con Eclipse ThreadX e Plug and Play IoT:
Produttore | Dispositivo | Esempi |
---|---|---|
Microchip | ATSAME54-XPRO | GCC/CMake • IAR • MPLAB |
MXCHIP | AZ3166 | GCC/CMake |
NXP | MIMXRT1060-EVK | GCC/CMake • IAR • MCUXpresso |
STMicroelectronics | 32F746GDISCOVERY | IAR • STM32Cube |
STMicroelectronics | B-L475E-IOT01 | GCC/CMake • IAR • STM32Cube |
STMicroelectronics | B-L4S5I-IOT01 | GCC/CMake • IAR • STM32Cube |
Passaggi successivi
In questa esercitazione si è appreso come connettere un dispositivo Plug and Play IoT a un hub IoT. Per altre informazioni su come creare una soluzione che interagisce con i dispositivi Plug and Play IoT, vedere: