Esercitazione: Connettere un Plug and Play IoT più applicazioni per dispositivi componenti in esecuzione in Linux o Windows a hub IoT
Questa esercitazione illustra come creare un'applicazione di un dispositivo Plug and Play IoT di esempio con componenti, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare le informazioni inviate all'hub. 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.
In questa esercitazione:
- Scaricare il codice di esempio.
- Compilare il codice di esempio.
- Eseguire l'applicazione del dispositivo di esempio e verificare che si connetta all'hub IoT.
- Esaminare il codice sorgente.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
È possibile completare questa esercitazione in Linux o 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
Se è stata completata l'esercitazione: Connettere un'applicazione del dispositivo di esempio Plug and Play IoT in esecuzione in Linux o Windows a hub IoT (C) è già stato scaricato 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 in una cartella 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 ed eseguire 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 alla cartella iothub_client/samples/pnp/pnp_temperature_controller/ di esempio.
Fare clic con il pulsante destro del mouse sul file pnp_temperature_controller.c e selezionare 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_temperature_controller\\pnp_temperature_controller.c", "projectTarget": "", "name": "pnp_temperature_controller.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_temperature_controller.c e selezionare Imposta come elemento di avvio.
Per tracciare l'esecuzione del codice in Visual Studio, aggiungere un punto di interruzione alla funzione
main
nel file pnp_temperature_controller.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
dalla riga di comando
Per compilare l'esempio:
Creare una sottocartella cmake nella cartella radice dell'SDK per dispositivi clonato e passare a tale cartella:
cd azure-iot-sdk-c mkdir cmake cd cmake
Eseguire i comandi seguenti per generare e compilare i file di progetto per l'SDK e gli esempi:
cmake .. cmake --build .
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'esempio:
Dalla cartella cmake passare alla cartella che contiene il file eseguibile ed eseguirlo:
# Bash cd iothub_client/samples/pnp/pnp_temperature_controller ./pnp_temperature_controller
REM Windows cd iothub_client\samples\pnp\pnp_temperature_controller\Debug pnp_temperature_controller.exe
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 dispositivo termoregolatore Plug and Play IoT. In questo esempio viene implementato un modello con più componenti. Il file del modello DTDL (Digital Twins Definition Language) per il dispositivo temperature definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Funzioni helper di Plug and Play IoT
Per questo esempio il codice usa alcune funzioni helper della cartella /common:
pnp_device_client_ll contiene il metodo di connessione per Plug and Play IoT con model-id
incluso come parametro: PnP_CreateDeviceClientLLHandle
.
pnp_protocol contiene le funzioni helper di Plug and Play IoT:
PnP_CreateReportedProperty
PnP_CreateReportedPropertyWithStatus
PnP_ParseCommandName
PnP_CreateTelemetryMessageHandle
PnP_ProcessTwinData
PnP_CopyPayloadToString
PnP_CreateDeviceClientLLHandle_ViaDps
Queste funzioni helper sono sufficientemente generiche per essere usate nel progetto. In questo esempio vengono usate nei tre file che corrispondono a ogni componente del modello:
- pnp_deviceinfo_component
- pnp_temperature_controller
- pnp_thermostat_component
Ad esempio, nel file pnp_deviceinfo_component la funzione SendReportedPropertyForDeviceInformation
usa due delle funzioni helper:
if ((jsonToSend = PnP_CreateReportedProperty(componentName, propertyName, propertyValue)) == NULL)
{
LogError("Unable to build reported property response for propertyName=%s, propertyValue=%s", propertyName, propertyValue);
}
else
{
const char* jsonToSendStr = STRING_c_str(jsonToSend);
size_t jsonToSendStrLen = strlen(jsonToSendStr);
if ((iothubClientResult = IoTHubDeviceClient_LL_SendReportedState(deviceClientLL, (const unsigned char*)jsonToSendStr, jsonToSendStrLen, NULL, NULL)) != IOTHUB_CLIENT_OK)
{
LogError("Unable to send reported state for property=%s, error=%d", propertyName, iothubClientResult);
}
else
{
LogInfo("Sending device information property to IoTHub. propertyName=%s, propertyValue=%s", propertyName, propertyValue);
}
}
Ogni componente dell'esempio è conforme a questo modello.
flusso del codice
La funzione main
inizializza la connessione e invia l'ID modello:
deviceClient = CreateDeviceClientAndAllocateComponents();
Il codice usa PnP_CreateDeviceClientLLHandle
per connettersi all'hub IoT, impostare modelId
come opzione e configurare i gestori di callback del metodo del dispositivo e del dispositivo gemello per i metodi diretti e gli aggiornamenti del dispositivo gemello:
g_pnpDeviceConfiguration.deviceMethodCallback = PnP_TempControlComponent_DeviceMethodCallback;
g_pnpDeviceConfiguration.deviceTwinCallback = PnP_TempControlComponent_DeviceTwinCallback;
g_pnpDeviceConfiguration.modelId = g_temperatureControllerModelId;
...
deviceClient = PnP_CreateDeviceClientLLHandle(&g_pnpDeviceConfiguration);
&g_pnpDeviceConfiguration
contiene anche le informazioni sulla connessione. La variabile di ambiente IOTHUB_DEVICE_SECURITY_TYPE determina se per l'esempio viene usata una stringa di connessione o il servizio di provisioning di dispositivi per connettersi all'hub IoT.
Quando il dispositivo invia un ID modello, diventa un dispositivo Plug and Play IoT.
Se i gestori di callback sono configurati, il dispositivo reagisce agli aggiornamenti del dispositivo gemello e alle chiamate a metodi diretti:
Per il callback del dispositivo gemello,
PnP_TempControlComponent_DeviceTwinCallback
chiama la funzionePnP_ProcessTwinData
per elaborare i dati.PnP_ProcessTwinData
usa il modello visitor per analizzare il codice JSON e quindi visitare ogni proprietà, chiamandoPnP_TempControlComponent_ApplicationPropertyCallback
su ogni elemento.Per il callback dei comandi, la funzione
PnP_TempControlComponent_DeviceMethodCallback
usa la funzione helper per analizzare i nomi di comandi e componenti:PnP_ParseCommandName(methodName, &componentName, &componentNameSize, &pnpCommandName);
La funzione
PnP_TempControlComponent_DeviceMethodCallback
chiama quindi il comando sul componente:LogInfo("Received PnP command for component=%.*s, command=%s", (int)componentNameSize, componentName, pnpCommandName); if (strncmp((const char*)componentName, g_thermostatComponent1Name, g_thermostatComponent1Size) == 0) { result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle1, pnpCommandName, rootValue, response, responseSize); } else if (strncmp((const char*)componentName, g_thermostatComponent2Name, g_thermostatComponent2Size) == 0) { result = PnP_ThermostatComponent_ProcessCommand(g_thermostatHandle2, pnpCommandName, rootValue, response, responseSize); } else { LogError("PnP component=%.*s is not supported by TemperatureController", (int)componentNameSize, componentName); result = PNP_STATUS_NOT_FOUND; }
La funzione main
inizializza le proprietà di sola lettura inviate all'hub IoT:
PnP_TempControlComponent_ReportSerialNumber_Property(deviceClient);
PnP_DeviceInfoComponent_Report_All_Properties(g_deviceInfoComponentName, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle1, deviceClient);
PnP_TempControlComponent_Report_MaxTempSinceLastReboot_Property(g_thermostatHandle2, deviceClient);
La funzione main
immette un ciclo per aggiornare i dati di telemetria e degli eventi per ogni componente:
while (true)
{
PnP_TempControlComponent_SendWorkingSet(deviceClient);
PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle1, deviceClient);
PnP_ThermostatComponent_SendTelemetry(g_thermostatHandle2, deviceClient);
}
La PnP_ThermostatComponent_SendTelemetry
funzione mostra come usare lo struct PNP_THERMOSTAT_COMPONENT
. Questo struct viene usato nell'esempio per archiviare le informazioni sui due termostati nel dispositivo termoregolatore. Il codice usa la funzione PnP_CreateTelemetryMessageHandle
per preparare il messaggio e inviarlo:
messageHandle = PnP_CreateTelemetryMessageHandle(pnpThermostatComponent->componentName, temperatureStringBuffer);
...
iothubResult = IoTHubDeviceClient_LL_SendEventAsync(deviceClientLL, messageHandle, NULL, NULL);
La funzione main
, infine, elimina definitivamente i diversi componenti e chiude la connessione all'hub.
Questa esercitazione illustra come creare un'applicazione di un dispositivo Plug and Play IoT di esempio con componenti, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare le informazioni inviate all'hub. L'applicazione di esempio è scritta in C# ed è inclusa in Azure IoT SDK per dispositivi 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.
In questa esercitazione:
- Scaricare il codice di esempio.
- Compilare il codice di esempio.
- Eseguire l'applicazione del dispositivo di esempio e verificare che si connetta all'hub IoT.
- Esaminare il codice sorgente.
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.
Clonare il repository dell'SDK con il codice di esempio
Se è stata completata l'esercitazione: Connettere un'applicazione del dispositivo di esempio Plug and Play IoT in esecuzione in Windows a hub IoT (C#), il repository è già stato clonato.
Clonare gli esempi dal repository GitHub degli esempi di Azure IoT 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 .NET :
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
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/TemperatureController
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 dispositivo termoregolatore Plug and Play IoT. Il modello implementato da questo esempio usa più componenti. Il file del modello DTDL (Digital Twins Definition Language) per il dispositivo temperature 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 DeviceClient InitializeDeviceClient(string hostname, IAuthenticationMethod authenticationMethod)
{
var options = new ClientOptions
{
ModelId = ModelId,
};
var deviceClient = DeviceClient.Create(hostname, authenticationMethod, TransportType.Mqtt, options);
deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
{
s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
});
return deviceClient;
}
L'ID modello viene archiviato nel codice come mostrato nel frammento seguente:
private const string ModelId = "dtmi:com:example:TemperatureController;1";
Quando il dispositivo si connette all'hub IoT, il codice registra i gestori dei comandi. Il comando reboot
viene definito nel componente predefinito. Il comando getMaxMinReport
viene definito in ognuno dei due componenti del termostato:
await _deviceClient.SetMethodHandlerAsync("reboot", HandleRebootCommandAsync, _deviceClient, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat1*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat1, cancellationToken);
await _deviceClient.SetMethodHandlerAsync("thermostat2*getMaxMinReport", HandleMaxMinReportCommandAsync, Thermostat2, cancellationToken);
Sono disponibili gestori distinti per gli aggiornamenti delle proprietà desiderati sui due componenti del termostato:
_desiredPropertyUpdateCallbacks.Add(Thermostat1, TargetTemperatureUpdateCallbackAsync);
_desiredPropertyUpdateCallbacks.Add(Thermostat2, TargetTemperatureUpdateCallbackAsync);
Il codice di esempio invia dati di telemetria da ogni componente del termostato:
await SendTemperatureAsync(Thermostat1, cancellationToken);
await SendTemperatureAsync(Thermostat2, cancellationToken);
Il metodo SendTemperatureTelemetryAsync
usa la classe PnpHelper
per creare messaggi per ogni componente:
using Message msg = PnpHelper.CreateIothubMessageUtf8(telemetryName, JsonConvert.SerializeObject(currentTemperature), componentName);
La classe PnpHelper
contiene altri metodi di esempio che è possibile usare con un modello a più componenti.
Usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria e le proprietà dei due componenti del termostato:
È anche possibile usare lo strumento Azure IoT Explorer per chiamare i comandi in uno dei due componenti del termostato o nel componente predefinito.
Questa esercitazione illustra come creare un'applicazione di un dispositivo Plug and Play IoT di esempio con componenti, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare le informazioni inviate all'hub. 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.
In questa esercitazione:
- Scaricare il codice di esempio.
- Compilare il codice di esempio.
- Eseguire l'applicazione del dispositivo di esempio e verificare che si connetta all'hub IoT.
- Esaminare il codice sorgente.
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
Se è stata completata l'esercitazione: Connettere un'applicazione del dispositivo di esempio Plug and Play IoT a hub IoT (Java), il repository è già stato clonato.
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
Il completamento di questa operazione richiederà alcuni minuti.
Compilare il codice
Passare alla cartella radice dell'esempio del controller di temperatura nel repository java SDK clonato e compilarlo:
cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/temperature-controller-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 eseguire l'applicazione di esempio, passare alla cartella /device/iot-device-samples/pnp-device-sample/temperature-controller-device-sample ed eseguire il comando seguente:
mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.TemperatureController"
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 dispositivo termoregolatore Plug and Play IoT. Il modello implementato da questo esempio usa più componenti. Il file del modello DTDL (Digital Twins Definition Language) per il dispositivo temperature 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";
Quando il dispositivo si connette all'hub IoT, il codice registra i gestori dei comandi.
deviceClient.subscribeToDeviceMethod(new MethodCallback(), null, new MethodIotHubEventCallback(), null);
Sono disponibili gestori distinti per gli aggiornamenti delle proprietà desiderati sui due componenti del termostato:
deviceClient.startDeviceTwin(new TwinIotHubEventCallback(), null, new GenericPropertyUpdateCallback(), null);
Map<Property, Pair<TwinPropertyCallBack, Object>> desiredPropertyUpdateCallback = Stream.of(
new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
new Property(THERMOSTAT_1, null),
new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_1)),
new AbstractMap.SimpleEntry<Property, Pair<TwinPropertyCallBack, Object>>(
new Property(THERMOSTAT_2, null),
new Pair<>(new TargetTemperatureUpdateCallback(), THERMOSTAT_2))
).collect(Collectors.toMap(AbstractMap.SimpleEntry::getKey, AbstractMap.SimpleEntry::getValue));
deviceClient.subscribeToTwinDesiredProperties(desiredPropertyUpdateCallback);
Il codice di esempio invia dati di telemetria da ogni componente del termostato:
sendTemperatureReading(THERMOSTAT_1);
sendTemperatureReading(THERMOSTAT_2);
Il metodo sendTemperatureReading
usa la classe PnpHelper
per creare messaggi per ogni componente:
Message message = PnpHelper.createIotHubMessageUtf8(telemetryName, currentTemperature, componentName);
La classe PnpHelper
contiene altri metodi di esempio che è possibile usare con un modello a più componenti.
Usare lo strumento Azure IoT Explorer per visualizzare i dati di telemetria e le proprietà dei due componenti del termostato:
È anche possibile usare lo strumento Azure IoT Explorer per chiamare i comandi in uno dei due componenti del termostato o nel componente predefinito.
Questa esercitazione illustra come creare un'applicazione di un dispositivo Plug and Play IoT di esempio con componenti, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare le informazioni inviate all'hub. L'applicazione di esempio è scritta per Node.js ed è inclusa in Azure IoT Hub Device SDK 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.
In questa esercitazione:
- Scaricare il codice di esempio.
- Eseguire l'applicazione del dispositivo di esempio e verificare che si connetta all'hub IoT.
- Esaminare il codice sorgente.
Prerequisiti
Prima di continuare, assicurarsi di aver configurato l'ambiente, incluso l'hub IoT.
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
Se è stata completata l'esercitazione: Connettere un'applicazione del dispositivo di esempio Plug and Play IoT in esecuzione in Windows a hub IoT (Node), il repository è già stato clonato.
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 creata simula un dispositivo Plug and Play con più componenti 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
Questo comando installa i file npm pertinenti necessari per eseguire gli esempi nella cartella .
Esaminare il codice
Passare alla cartella azure-iot-sdk-node/device/samples/javascript .
La cartella azure-iot-sdk-node/device/samples/javascript contiene il codice di esempio per il dispositivo controller di temperatura Plug and Play IoT.
Il codice nel file pnp_temperature_controller.js implementa un dispositivo controller di temperatura Plug and Play IoT. Il modello implementato da questo esempio usa più componenti. Il file del modello DTDL (Digital Twins Definition Language) per il dispositivo temperature definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
Aprire il file pnp_temperature_controller.js in un editor di codice di propria scelta. Il codice di esempio illustra come:
Definire l'oggetto
modelId
che rappresenta il DTMI per il dispositivo che si sta implementando. Questo DTMI è definito dall'utente e deve corrispondere a quello del modello DTDL del dispositivo termoregolatore.Implementare i componenti definiti nel modello DTDL del dispositivo termoregolatore. I componenti di un dispositivo termoregolatore reale dovranno implementare queste due interfacce. Queste due interfacce sono già pubblicate in un repository centrale. In questo esempio, le due interfacce sono:
- Thermostat
- Informazioni sul dispositivo sviluppate da Azure
Definire i nomi dei componenti. Questo esempio include due termostati e un componente di informazioni sul dispositivo.
Definire i nomi dei comandi per i comandi a cui risponde il dispositivo.
Definire la costante
serialNumber
.serialNumber
è un valore fisso in qualsiasi dispositivo specifico.Definire i gestori dei comandi.
Definire le funzioni per inviare le risposte ai comandi.
Definire le funzioni helper per registrare le richieste dei comandi.
Definire una funzione helper per creare le proprietà.
Definire un listener per gli aggiornamenti delle proprietà.
Definire una funzione per inviare dati di telemetria da questo dispositivo. Sia i termostati che il componente predefinito inviano dati di telemetria. Questa funzione riceve il nome del componente come parametro.
Definire una funzione
main
che:Usa l'SDK del dispositivo per creare un client del dispositivo e connettersi all'hub IoT. Il dispositivo fornisce il valore di
modelId
in modo che possa essere identificato dall'hub IoT come dispositivo Plug and Play IoT.Avvia l'ascolto di richieste dei comandi tramite la funzione
onDeviceMethod
. La funzione configura un listener per le richieste dei comandi provenienti dal servizio:- Il DTDL del dispositivo definisce i comandi
reboot
egetMaxMinReport
. - La funzione
commandHandler
definisce il modo in cui il dispositivo risponde a un comando.
- Il DTDL del dispositivo definisce i comandi
Avvia l'invio dei dati di telemetria usando
setInterval
esendTelemetry
.Usa la funzione
helperCreateReportedPropertiesPatch
per creare le proprietà eupdateComponentReportedProperties
per aggiornarle.Usa
desiredPropertyPatchListener
per restare in ascolto di aggiornamenti delle proprietà.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:
node pnp_temperature_controller.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.
Questa esercitazione illustra come creare un'applicazione di un dispositivo Plug and Play IoT di esempio con componenti, connetterla all'hub IoT e usare lo strumento Azure IoT Explorer per visualizzare le informazioni inviate all'hub. L'applicazione di esempio è scritta per Python ed è inclusa in Azure IoT SDK per dispositivi 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.
In questa esercitazione:
- Scaricare il codice di esempio.
- Eseguire l'applicazione del dispositivo di esempio e verificare che si connetta all'hub IoT.
- Esaminare il codice sorgente.
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 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.
Scaricare il codice
Il pacchetto azure-iot-device è pubblicato come PIP.
Nell'ambiente Python locale installare il pacchetto nel modo seguente:
pip install azure-iot-device
Se è stata completata l'esercitazione: Connettere un'applicazione del dispositivo di esempio Plug and Play IoT in esecuzione in Windows a hub IoT (Python), il repository è già stato clonato.
Clonare il repository IoT di Python SDK:
git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python
Esaminare il codice
Questo esempio implementa un dispositivo termoregolatore Plug and Play IoT. Il modello implementato da questo esempio usa più componenti. Il file del modello DTDL (Digital Twins Definition Language) per il dispositivo temperature definisce i dati di telemetria, le proprietà e i comandi implementati dal dispositivo.
La cartella azure-iot-sdk-python/samples/pnp contiene il codice di esempio per il dispositivo Plug and Play IoT. I file per l'esempio di dispositivo termoregolatore sono:
- temp_controller_with_thermostats.py
- pnp_helper.py
Il dispositivo termoregolatore include più componenti e un componente predefinito ed è basato sul modello DTDL.
Aprire il file temp_controller_with_thermostats.py in un editor a scelta. Il codice di questo file:
Importa
pnp_helper.py
per ottenere l'accesso ai metodi helper.Definisce due identificatori DTMI (Digital Twin Model Identifier) che rappresentano in modo univoco due interfacce diverse, definite nel modello DTDL. I componenti di un dispositivo termoregolatore reale dovranno implementare queste due interfacce. Queste due interfacce sono già pubblicate in un repository centrale. Questi DTMI devono essere noti all'utente e variano in base allo scenario di implementazione del dispositivo. Per l'esempio corrente, queste due interfacce rappresentano:
- Un termostato
- Informazioni sul dispositivo sviluppate da Azure.
Definisce il DTMI
model_id
per il dispositivo da implementare. Il DTMI è definito dall'utente e deve corrispondere al DTMI nel file del modello DTDL.Definisce i nomi assegnati ai componenti nel file DTDL. Nel DTDL sono inclusi due termostati e un componente di informazioni sul dispositivo. Nel componente predefinito viene anche definita una costante denominata
serial_number
. Non è possibile cambiareserial_number
per un dispositivo.Definisce le implementazioni del gestore comandi, Questi gestori definiscono le operazioni eseguite dal dispositivo quando riceve le richieste di comando.
Definisce le funzioni per la creazione della risposta a un comando, Queste funzioni definiscono il modo in cui il dispositivo risponde alle richieste di comando. Creare le funzioni di risposta ai comandi se un comando deve inviare una risposta personalizzata all'hub IoT. Se non viene specificata una funzione di risposta per un comando, viene inviata una risposta generica. In questo esempio solo il comando getMaxMinReport include una risposta personalizzata.
Definisce una funzione per l'invio di dati di telemetria da questo dispositivo. Sia i termostati che il componente predefinito inviano dati di telemetria. Questa funzione ha un parametro facoltativo per il nome del componente per consentire all'utente di identificare il componente che ha inviato i dati di telemetria.
Definisce un listener per le richieste dei comandi.
Definisce un listener per gli aggiornamenti delle proprietà desiderati.
Include una funzione
main
che:Usa l'SDK del dispositivo per creare un client del dispositivo e connettersi all'hub IoT. Il dispositivo invia
model_id
in modo che possa essere identificato dall'hub IoT come dispositivo Plug and Play IoT.Usa la funzione
create_reported_properties
nel file helper per creare le proprietà. Passare il nome del componente e le proprietà come coppie chiave-valore a questa funzione.Aggiorna le proprietà leggibili per i relativi componenti chiamando
patch_twin_reported_properties
.Avvia l'ascolto di richieste dei comandi tramite la funzione
execute_command_listener
. La funzione configura un listener per le richieste dei comandi provenienti dal servizio. Quando si configura il listener, si specifica unmethod_name
oggetto ,user_command_handler
e un oggetto facoltativocreate_user_response_handler
come parametri.method_name
definisce la richiesta del comando. In questo esempio il modello definisce i comandi riavviati e getMaxMinReport.- 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. Se questa funzione non viene specificata, al servizio viene inviata una risposta generica.
Usa
execute_property_listener
per restare in ascolto di aggiornamenti delle proprietà.Avvia l'invio di dati di telemetria tramite
send_telemetry
. Il codice di esempio usa un ciclo per chiamare tre funzioni di invio di dati di telemetria. Ciascuna di esse viene chiamata ogni otto secondiDisabilita 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.
Usare il comando seguente per eseguire l'esempio:
python temp_controller_with_thermostats.py
Il dispositivo di esempio invia messaggi di telemetria a intervalli di pochi secondi all'hub IoT.
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à.
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 si prevede di continuare con altri articoli per sviluppatori di dispositivi, è possibile conservare e riutilizzare le risorse usate in questo articolo. In caso contrario, è possibile eliminare le risorse create in questo articolo per evitare altri addebiti.
È possibile eliminare l'hub e il dispositivo registrato contemporaneamente eliminando l'intero gruppo di risorse con il comando dell'interfaccia della riga di comando di Azure seguente. Non usare questo comando se queste risorse condividono un gruppo di risorse con altre risorse che si vogliono conservare.
az group delete --name <YourResourceGroupName>
Per eliminare solo l'hub IoT, eseguire questo comando usando l'interfaccia della riga di comando di Azure:
az iot hub delete --name <YourIoTHubName>
Per eliminare solo l'identità del dispositivo registrato con l'hub IoT, eseguire questo comando usando l'interfaccia della riga di comando di Azure:
az iot hub device-identity delete --hub-name <YourIoTHubName> --device-id <YourDeviceID>
È anche possibile rimuovere dal computer di sviluppo i file di esempio clonati.
Passaggi successivi
In questa esercitazione si è appreso come connettere un dispositivo Plug and Play IoT con componenti a un hub IoT. Per altre informazioni sui modelli di dispositivo Plug and Play IoT, vedere: