Avvio rapido: Effettuare il provisioning di un dispositivo TPM simulato
In questa guida introduttiva si creerà un dispositivo simulato nel computer Windows. Il dispositivo simulato verrà configurato per l'uso di un meccanismo di attestazione TPM (Trusted Platform Module) per l'autenticazione. Dopo aver configurato il dispositivo, eseguirne il provisioning nell'hub IoT usando il servizio Device Provisioning hub IoT di Azure. Il codice di esempio verrà quindi usato per registrare il dispositivo con un'istanza del servizio Device Provisioning.
Se non si ha familiarità con il processo di provisioning, vedere la panoramica del provisioning . È anche necessario aver completato la procedura descritta in Configurare il servizio Device Provisioning in hub IoT con il portale di Azure prima di continuare.
Il servizio Device Provisioning in Azure IoT supporta due tipi di registrazione:
Gruppi di registrazione usati per registrare più dispositivi correlati.
Registrazioni singole usate per registrare un singolo dispositivo.
Questo articolo descrive le registrazioni singole.
L'attestazione TPM (Trusted Platform Module) non è supportata in Python SDK. Con Python è possibile effettuare il provisioning di un dispositivo usando chiavi simmetriche o certificati X.509.
Prerequisiti
Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Completare la procedura descritta in Configurare il servizio Device Provisioning in hub IoT con il portale di Azure.
I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.
- Visual Studio 2019 con il carico di lavoro 'Sviluppo di applicazioni desktop con C++' abilitato. Sono supportati anche Visual Studio 2015 e Visual Studio 2017.
Modulo di sicurezza hardware TPM 2.0 nel computer basato su Windows.
Installare .NET Core SDK 6.0 o versione successiva nel computer basato su Windows. Per controllare la versione, è possibile usare il comando seguente.
dotnet --info
- Installare Node.js v4.0+.
Installare Java SE Development Kit 8 o versione successiva installata nel computer.
Scaricare e installare Maven.
- Installare la versione più recente di Git. Verificare che Git venga aggiunto alle variabili di ambiente accessibili alla finestra di comando. Vedere gli strumenti client Git di Software Freedom Conservancy per la versione più recente degli strumenti
git
da installare, tra cui Git Bash, l'app da riga di comando che è possibile usare per interagire con il repository Git locale.
Preparare l'ambiente di sviluppo
In questa sezione si preparerà un ambiente di sviluppo usato per compilare Azure IoT C SDK e l'esempio di simulatore di dispositivi TPM .
Scaricare il sistema di compilazione CMake più recente.
Importante
Verificare che i prerequisiti di Visual Studio (Visual Studio e il carico di lavoro "Sviluppo di applicazioni desktop con C++") siano installati nel computer prima di avviare l'installazione
CMake
. Quando i prerequisiti sono pronti e il download è stato verificato, installare il sistema di compilazione CMake. Tenere inoltre presente che le versioni precedenti del sistema di compilazione CMake non riescono a generare il file di soluzione usato in questo articolo. Assicurarsi di usare la versione più recente di CMake.Aprire un Web browser e passare alla pagina Versione di Azure IoT C SDK.
Selezionare la scheda Tag nella parte superiore della pagina.
Copiare il nome del tag per la versione più recente di Azure IoT C SDK.
Aprire un prompt dei comandi o la shell Git Bash. Eseguire i comandi seguenti per clonare la versione più recente del repository GitHub azure IoT Device SDK per C . Sostituire
<release-tag>
con il tag copiato nel passaggio precedente, ad esempio :lts_01_2023
.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
Il completamento di questa operazione potrebbe richiedere alcuni minuti.
Al termine dell'operazione, eseguire i comandi seguenti dalla
azure-iot-sdk-c
directory :mkdir cmake cd cmake
Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.
Clonare il repository GitHub azure IoT SDK per C# usando il comando seguente:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.
Clonare il repository GitHub azure-utpm-c usando il comando seguente:
git clone https://github.com/Azure/azure-utpm-c.git --recursive
Aprire una shell CMD Git o un ambiente della riga di comando Bash Git.
Clonare il repository GitHub Java usando il comando seguente:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Compilare ed eseguire il simulatore di dispositivi TPM
In questa sezione verrà compilato ed eseguito il simulatore TPM. Questo simulatore è in ascolto su un socket sulle porte 2321 e 2322. Non chiudere la finestra di comando. Sarà necessario mantenere il simulatore in esecuzione fino alla fine di questo argomento di avvio rapido.
Eseguire il comando seguente per compilare Azure IoT C SDK che include il codice di esempio del simulatore di dispositivi TPM. Viene generata una soluzione di Visual Studio per il dispositivo simulato nella directory
cmake
. Questo esempio offre un meccanismo di attestazione TPM tramite l'autenticazione di token di firma di accesso condiviso (SAS).cmake -Duse_prov_client:BOOL=ON -Duse_tpm_simulator:BOOL=ON ..
Suggerimento
Se
cmake
non trova il compilatore C++, potrebbero verificarsi errori di compilazione durante l'esecuzione del comando precedente. In tal caso, provare a eseguire il comando nel prompt dei comandi di Visual Studio.Quando la compilazione ha esito positivo, le ultime righe di output sono simili all'output seguente:
$ cmake -Duse_prov_client:BOOL=ON .. -- Building for: Visual Studio 16 2019 -- The C compiler identification is MSVC 19.23.28107.0 -- The CXX compiler identification is MSVC 19.23.28107.0 ... -- Configuring done -- Generating done -- Build files have been written to: C:/code/azure-iot-sdk-c/cmake
Passare alla cartella radice del repository Git clonato.
Eseguire il simulatore TPM usando il percorso illustrato di seguito.
cd .. .\provisioning_client\deps\utpm\tools\tpm_simulator\Simulator.exe
Il simulatore non visualizza alcun output. Lasciare che continui a essere eseguito durante la simulazione di un dispositivo TPM.
Passare alla cartella radice di GitHub.
Eseguire il simulatore TPM affinché sia il Modulo di protezione hardware per il dispositivo simulato.
.\azure-utpm-c\tools\tpm_simulator\Simulator.exe
Creare una nuova cartella vuota denominata registerdevice. Nella cartella registerdevice creare un file package.json usando il comando seguente al prompt dei comandi(assicurarsi di rispondere a tutte le domande poste da
npm
o accettare le impostazioni predefinite se si adattano):npm init
Installare i pacchetti precursori seguenti:
npm install node-gyp -g npm install ffi-napi -g
Nota
Sono presenti alcuni problemi noti per l'installazione dei pacchetti indicati in precedenza. Per risolvere questi problemi, eseguire
npm install --global --production windows-build-tools
usando un prompt dei comandi in modalità Esegui come amministratore, eseguireSET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
dopo aver sostituito il percorso con quello della versione installata e quindi eseguire di nuovo i comandi di installazione precedenti.Installare tutti i pacchetti necessari eseguendo il comando seguente al prompt dei comandi nella cartella registerdevice :
npm install --save azure-iot-device azure-iot-device-mqtt azure-iot-security-tpm azure-iot-provisioning-device-http azure-iot-provisioning-device
Il comando installa i pacchetti seguenti:
Un client di sicurezza che funziona con TPM:
azure-iot-security-tpm
Trasporto per la connessione del dispositivo al servizio Device Provisioning:
azure-iot-provisioning-device-http
oazure-iot-provisioning-device-amqp
Client per l'uso del client di trasporto e sicurezza:
azure-iot-provisioning-device
Il client del dispositivo:
azure-iot-device
Trasporto: uno qualsiasi di
azure-iot-device-amqp
,azure-iot-device-mqtt
oazure-iot-device-http
Client di sicurezza già installato:
azure-iot-security-tpm
Nota
Gli esempi in questa guida introduttiva usano i
azure-iot-provisioning-device-http
trasporti eazure-iot-device-mqtt
.
Aprire un editor di testo delle scelte.
Nella cartella registerdevice creare un nuovo file ExtractDevice.js.
Aggiungere le istruzioni
require
seguenti all'inizio del file ExtractDevice.js:'use strict'; var tpmSecurity = require('azure-iot-security-tpm'); var tssJs = require("tss.js"); var myTpm = new tpmSecurity.TpmSecurityClient(undefined, new tssJs.Tpm(true));
Aggiungere la funzione seguente per implementare il metodo:
myTpm.getEndorsementKey(function(err, endorsementKey) { if (err) { console.log('The error returned from get key is: ' + err); } else { console.log('the endorsement key is: ' + endorsementKey.toString('base64')); myTpm.getRegistrationId((getRegistrationIdError, registrationId) => { if (getRegistrationIdError) { console.log('The error returned from get registration id is: ' + getRegistrationIdError); } else { console.log('The Registration Id is: ' + registrationId); process.exit(); } }); } });
Salvare e chiudere il file ExtractDevice.js.
node ExtractDevice.js
Eseguire l'esempio.
Nella finestra di output vengono visualizzati la chiave di verifica dell'autenticità e l'ID registrazione necessari per la registrazione del dispositivo. Copiare questi valori.
Eseguire il simulatore TPM affinché sia il Modulo di protezione hardware per il dispositivo simulato.
Selezionare Consenti accesso. Il simulatore è in ascolto su un socket sulle porte 2321 e 2322. Non chiudere questa finestra di comando; è necessario mantenere il simulatore in esecuzione fino alla fine di questa guida introduttiva.
.\azure-iot-sdk-java\provisioning\provisioning-tools\tpm-simulator\Simulator.exe
Aprire un secondo prompt dei comandi.
Nel secondo prompt dei comandi passare alla cartella radice e compilare le dipendenze di esempio.
cd azure-iot-sdk-java mvn install -DskipTests=true
Passare alla cartella dell'esempio.
cd provisioning/provisioning-samples/provisioning-tpm-sample
In questa sezione verrà compilato ed eseguito un esempio che legge la chiave di verifica dell'autenticità e l'ID di registrazione dal simulatore TPM lasciato in esecuzione e rimane in ascolto sulle porte 2321 e 2322. Questi valori verranno usati per la registrazione del dispositivo nell'istanza del servizio Device Provisioning.
Avviare Visual Studio.
Aprire la soluzione generata nella cartella cmake denominata
azure_iot_sdks.sln
.Nel menu di Visual Studio selezionare Compila>Compila soluzione per compilare tutti i progetti nella soluzione.
Nella finestra Esplora soluzioni di Visual Studio passare alla cartella Provision_Tools. Fare clic con il pulsante destro del mouse sul progetto tpm_device_provision e scegliere Imposta come progetto di avvio.
Nel menu di Visual Studio selezionare Debug>Avvia senza eseguire debug per eseguire la soluzione. L'app legge e visualizza un ID registrazione e una Chiave di approvazione. Prendere nota di questi valori o copiarli. Questi verranno usati nella sezione successiva per la registrazione del dispositivo.
Accedere al portale di Azure, selezionare il pulsante Tutte le risorse nel menu a sinistra e aprire il servizio Device Provisioning. Prendere nota dell'ambito ID e dell'endpoint globale del servizio di provisioning.
Modificare
src/main/java/samples/com/microsoft/azure/sdk/iot/ProvisioningTpmSample.java
per poter includere l'ambito ID e l'endpoint globale del servizio di provisioning annotati prima.private static final String idScope = "[Your ID scope here]"; private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]"; private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
Salvare il file.
Usare i comandi seguenti per compilare il progetto, passare alla cartella di destinazione ed eseguire il file di .jar creato (sostituire
{version}
con la versione di Java):mvn clean install cd target java -jar ./provisioning-tpm-sample-{version}-with-deps.jar
Quando il programma inizia l'esecuzione, visualizzerà la chiave di verifica dell'autenticità e l'ID registrazione. Copiare questi valori per la sezione successiva. Assicurarsi di lasciare in esecuzione il programma.
In questa sezione verrà compilato ed eseguito un esempio che legge la chiave di verifica dell'autenticità dal modulo di sicurezza hardware TPM 2.0. Questo valore verrà usato per la registrazione del dispositivo con l'istanza del servizio Device Provisioning.
In un prompt dei comandi sostituire le directory con la directory del progetto per l'esempio di provisioning del dispositivo TPM.
cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
Digitare il comando seguente per compilare ed eseguire l'esempio di provisioning di dispositivo TPM. Copiare la chiave di verifica dell'autenticità restituita dal modulo di sicurezza hardware TPM 2.0 da usare in un secondo momento durante la registrazione del dispositivo.
dotnet run -- -e
Accedere al portale di Azure e aprire l'istanza del servizio Device Provisioning.
Selezionare Gestisci registrazioni nella sezione Impostazioni del menu di spostamento.
Selezionare la scheda Registrazioni singole, quindi selezionare Aggiungi registrazione singola.
Nella pagina Registrazione e provisioning della pagina Aggiungi registrazione specificare le informazioni seguenti per configurare i dettagli della registrazione:
Campo Descrizione Attestazione Selezionare Trusted Platform Module (TPM) come meccanismo di attestazione. Impostazioni TPM (Trusted Platform Module) Fornire la chiave di verifica dell'autenticità che verrà usata per verificare il dispositivo per la registrazione. È possibile recuperare la chiave di verifica dell'autenticità dal TPM del dispositivo. ID registrazione Specificare l'ID di registrazione univoco per il dispositivo. È possibile recuperare l'ID di registrazione dal TPM del dispositivo. Stato del provisioning Selezionare la casella Abilita questa registrazione se si vuole che la registrazione sia disponibile per effettuare il provisioning del dispositivo. Deselezionare questa casella se si vuole disabilitare la registrazione. Non è possibile modificare questa impostazione in un secondo momento. Criteri di reprovisioning Scegliere un criterio di reprovisioning che rifletta il modo in cui si vuole che il servizio Device Provisioning gestisca i dispositivi che richiedono il provisioning. Per altre informazioni, vedere Criteri di reprovisioning. Selezionare Avanti: Hub IoT.
Nella scheda Hub IoT della pagina Aggiungi registrazione specificare le informazioni seguenti per determinare gli hub IoT a cui la registrazione può effettuare il provisioning dei dispositivi:
Campo Descrizione Hub IoT di destinazione Selezionare uno o più hub IoT collegati oppure aggiungere un nuovo collegamento a un hub IoT. Per altre informazioni sul collegamento degli hub IoT all'istanza del servizio Device Provisioning, vedere Come collegare e gestire hub IoT. Criteri di allocazione Se sono stati selezionati più hub IoT collegati, selezionare la modalità di assegnazione dei dispositivi ai diversi hub. Per altre informazioni sui criteri di allocazione, vedere Come usare i criteri di allocazione.
Se è stato selezionato un solo hub IoT collegato, è consigliabile usare i criteri di distribuzione ponderati in modo uniforme.Selezionare Avanti: Impostazioni dispositivo
Nella scheda Impostazioni dispositivo della pagina Aggiungi registrazione specificare le informazioni seguenti per definire la modalità di configurazione dei dispositivi di cui è stato appena effettuato il provisioning:
Campo Descrizione ID dispositivo Specificare un ID dispositivo che verrà assegnato al dispositivo di cui è stato effettuato il provisioning in hub IoT. Se non si specifica un ID dispositivo, verrà usato l'ID di registrazione. IoT Edge Selezionare Abilita IoT Edge nei dispositivi di cui è stato effettuato il provisioning se il dispositivo di cui è stato effettuato il provisioning eseguirà Azure IoT Edge. Deselezionare questa casella se questa registrazione è per un dispositivo non abilitato per IoT Edge. Tag del dispositivo Usare questa casella di testo per specificare i tag da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning. Proprietà desiderate Usare questa casella di testo per specificare le proprietà desiderate che si desidera applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.
Selezionare Avanti: Rivedi e crea.
Nella scheda Rivedi e crea, verificare tutti i valori e quindi selezionare Crea.
L'esempio TPM C# per questa guida introduttiva non fornisce un ID di registrazione. Quando viene richiesto di aggiungerne uno per la registrazione singola, specificare il proprio valore.
Accedere al portale di Azure e aprire l'istanza del servizio Device Provisioning.
Selezionare Gestisci registrazioni nella sezione Impostazioni del menu di spostamento.
Selezionare la scheda Registrazioni singole, quindi selezionare Aggiungi registrazione singola.
Nella pagina Registrazione e provisioning della pagina Aggiungi registrazione specificare le informazioni seguenti per configurare i dettagli della registrazione:
Campo Descrizione Attestazione Selezionare Trusted Platform Module (TPM) come meccanismo di attestazione. Impostazioni TPM (Trusted Platform Module) Fornire la chiave di verifica dell'autenticità che verrà usata per verificare il dispositivo per la registrazione. È possibile recuperare la chiave di verifica dell'autenticità dal TPM del dispositivo. ID registrazione Specificare l'ID di registrazione univoco per il dispositivo. È possibile recuperare l'ID di registrazione dal TPM del dispositivo. Stato del provisioning Selezionare la casella Abilita questa registrazione se si vuole che la registrazione sia disponibile per effettuare il provisioning del dispositivo. Deselezionare questa casella se si vuole disabilitare la registrazione. Non è possibile modificare questa impostazione in un secondo momento. Criteri di reprovisioning Scegliere un criterio di reprovisioning che rifletta il modo in cui si vuole che il servizio Device Provisioning gestisca i dispositivi che richiedono il provisioning. Per altre informazioni, vedere Criteri di reprovisioning. Selezionare Avanti: Hub IoT.
Nella scheda Hub IoT della pagina Aggiungi registrazione specificare le informazioni seguenti per determinare gli hub IoT a cui la registrazione può effettuare il provisioning dei dispositivi:
Campo Descrizione Hub IoT di destinazione Selezionare uno o più hub IoT collegati oppure aggiungere un nuovo collegamento a un hub IoT. Per altre informazioni sul collegamento degli hub IoT all'istanza del servizio Device Provisioning, vedere Come collegare e gestire hub IoT. Criteri di allocazione Se sono stati selezionati più hub IoT collegati, selezionare la modalità di assegnazione dei dispositivi ai diversi hub. Per altre informazioni sui criteri di allocazione, vedere Come usare i criteri di allocazione.
Se è stato selezionato un solo hub IoT collegato, è consigliabile usare i criteri di distribuzione ponderati in modo uniforme.Selezionare Avanti: Impostazioni dispositivo
Nella scheda Impostazioni dispositivo della pagina Aggiungi registrazione specificare le informazioni seguenti per definire la modalità di configurazione dei dispositivi di cui è stato appena effettuato il provisioning:
Campo Descrizione ID dispositivo Specificare un ID dispositivo che verrà assegnato al dispositivo di cui è stato effettuato il provisioning in hub IoT. Se non si specifica un ID dispositivo, verrà usato l'ID di registrazione. IoT Edge Selezionare Abilita IoT Edge nei dispositivi di cui è stato effettuato il provisioning se il dispositivo di cui è stato effettuato il provisioning eseguirà Azure IoT Edge. Deselezionare questa casella se questa registrazione è per un dispositivo non abilitato per IoT Edge. Tag del dispositivo Usare questa casella di testo per specificare i tag da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning. Proprietà desiderate Usare questa casella di testo per specificare le proprietà desiderate che si desidera applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.
Selezionare Avanti: Rivedi e crea.
Nella scheda Rivedi e crea, verificare tutti i valori e quindi selezionare Crea.
Registrare il dispositivo
In questa sezione si configurerà il codice di esempio per l'uso del protocollo AMQP (Advanced Message Queuing Protocol) per inviare la sequenza di avvio del dispositivo all'istanza del servizio Device Provisioning. Questa sequenza di avvio fa sì che il dispositivo venga registrato in un hub IoT collegato all'istanza del servizio Device Provisioning.
Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.
Copiare il valore ambito ID.
Nella finestra Esplora soluzioni di Visual Studio passare alla cartella Provision_Samples. Espandere il progetto di esempio denominato prov_dev_client_sample. Espandere File di origine e aprire prov_dev_client_sample.c.
Nella parte superiore del file trovare le istruzioni
#define
per ogni protocollo di dispositivo come illustrato di seguito. Assicurarsi che soloSAMPLE_AMQP
sia senza commento.Attualmente, il protocollo MQTT non è supportato per la registrazione singola TPM.
// // The protocol you wish to use should be uncommented // //#define SAMPLE_MQTT //#define SAMPLE_MQTT_OVER_WEBSOCKETS #define SAMPLE_AMQP //#define SAMPLE_AMQP_OVER_WEBSOCKETS //#define SAMPLE_HTTP
Trovare la costante
id_scope
e sostituire il valore con il valore Ambito ID copiato in precedenza.static const char* id_scope = "0ne00002193";
Trovare la definizione per la funzione
main()
nello stesso file. Assicurarsi che la variabilehsm_type
sia impostata suSECURE_DEVICE_TYPE_TPM
come illustrato di seguito.SECURE_DEVICE_TYPE hsm_type; hsm_type = SECURE_DEVICE_TYPE_TPM; //hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Fare clic con il pulsante destro del mouse sul progetto prov_dev_client_sample e scegliere Imposta come progetto di avvio.
Nel menu di Visual Studio selezionare Debug>Avvia senza eseguire debug per eseguire la soluzione. Nella richiesta di ricompilare il progetto fare clic su Sì per ricompilare il progetto prima dell'esecuzione.
L'output seguente è un esempio dell'avvio corretto del client del dispositivo di provisioning di esempio, che si connette all'istanza del servizio Device Provisioning per ottenere informazioni sull'hub IoT ed effettuare la registrazione:
Provisioning API Version: 1.2.7 Registering... Press enter key to interrupt. Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: test-docs-hub.azure-devices.net, deviceId: test-docs-cert-device
Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.
Copiare il valore ambito ID.
In un prompt dei comandi sostituire le directory con la directory del progetto per l'esempio di provisioning del dispositivo TPM.
cd '.\azure-iot-sdk-csharp\provisioning\device\samples\how to guides\TpmSample\'
Eseguire il comando seguente per registrare il dispositivo. Sostituire
<IdScope>
con il valore del servizio Device Provisioning copiato e<RegistrationId>
con il valore usato durante la creazione della registrazione del dispositivo.dotnet run -- -s <IdScope> -r <RegistrationId>
Se la registrazione del dispositivo ha avuto esito positivo, verranno visualizzati i messaggi seguenti:
Initializing security using the local TPM... Initializing the device provisioning client... Initialized for registration Id <RegistrationId>. Registering with the device provisioning service... Registration status: Assigned. Device <RegistrationId> registered to <HubName>.azure-devices.net. Creating TPM authentication for IoT Hub... Testing the provisioned device with IoT Hub... Sending a telemetry message... Finished.
Nella portale di Azure selezionare la scheda Panoramica per il servizio Device Provisioning.
Copiare il valore ambito ID.
Aprire un editor di testo di propria scelta.
Nella cartella registerdevice creare un nuovo file RegisterDevice.js.
Aggiungere le istruzioni
require
seguenti all'inizio del file RegisterDevice.js:'use strict'; var ProvisioningTransport = require('azure-iot-provisioning-device-http').Http; var iotHubTransport = require('azure-iot-device-mqtt').Mqtt; var Client = require('azure-iot-device').Client; var Message = require('azure-iot-device').Message; var tpmSecurity = require('azure-iot-security-tpm'); var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;
Nota
Azure IoT SDK per Node.js supporta altri protocolli come AMQP, AMQP WS e MQTT WS. Per altri esempi vedere Esempi di Device Provisioning Service SDK per Node.js.
Aggiungere le variabili globalDeviceEndpoint e idScope e usarle per creare un'istanza di ProvisioningDeviceClient. Sostituire {globalDeviceEndpoint} e {idScope} con i valori di endpoint dispositivo globale e ID ambito del passaggio 1:
var provisioningHost = '{globalDeviceEndpoint}'; var idScope = '{idScope}'; var tssJs = require("tss.js"); var securityClient = new tpmSecurity.TpmSecurityClient('', new tssJs.Tpm(true)); // if using non-simulated device, replace the above line with following: //var securityClient = new tpmSecurity.TpmSecurityClient(); var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), securityClient);
Aggiungere la funzione seguente per implementare il metodo nel dispositivo:
provisioningClient.register(function(err, result) { if (err) { console.log("error registering device: " + err); } else { console.log('registration succeeded'); console.log('assigned hub=' + result.registrationState.assignedHub); console.log('deviceId=' + result.registrationState.deviceId); var tpmAuthenticationProvider = tpmSecurity.TpmAuthenticationProvider.fromTpmSecurityClient(result.registrationState.deviceId, result.registrationState.assignedHub, securityClient); var hubClient = Client.fromAuthenticationProvider(tpmAuthenticationProvider, iotHubTransport); var connectCallback = function (err) { if (err) { console.error('Could not connect: ' + err.message); } else { console.log('Client connected'); var message = new Message('Hello world'); hubClient.sendEvent(message, printResultFor('send')); } }; hubClient.open(connectCallback); function printResultFor(op) { return function printResult(err, res) { if (err) console.log(op + ' error: ' + err.toString()); if (res) console.log(op + ' status: ' + res.constructor.name); process.exit(1); }; } } });
Salvare e chiudere il file RegisterDevice.js.
Esegui questo comando:
node RegisterDevice.js
Si notino i messaggi che simulano l'avvio e la connessione del dispositivo al servizio Device Provisioning per ottenere le informazioni dell'hub IoT.
Nella finestra di comando che esegue il codice di esempio Java nel computer premere INVIO per continuare a eseguire l'applicazione. Si notino i messaggi che simulano l'avvio e la connessione del dispositivo al servizio Device Provisioning per ottenere le informazioni dell'hub IoT.
Confermare la registrazione del provisioning dei dispositivi
Accedere al portale di Azure.
Nel menu a sinistra o nella pagina del portale selezionare Tutte le risorse.
Selezionare l'hub IoT a cui è stato assegnato il dispositivo.
Nel menu Explorer selezionare Dispositivi IoT.
Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.
Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.
Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.
Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo dovrebbe essere visualizzato nell'elenco, con Stato impostato come abilitato. Se il dispositivo non è visualizzato, selezionare Aggiorna nella parte superiore della pagina.
Nota
Se si è modificato lo stato iniziale del dispositivo gemello rispetto al valore predefinito della voce di registrazione del dispositivo, è possibile eseguire il pull dello stato del dispositivo desiderato dall'hub e agire di conseguenza. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.
Pulire le risorse
Se si prevede di continuare a lavorare ed esplorare l'esempio client del dispositivo, non pulire le risorse create in questa guida introduttiva. Se non si prevede di continuare, seguire questa procedura per eliminare tutte le risorse create da questa guida introduttiva.
Eliminare la registrazione del dispositivo
Chiudere la finestra di output di esempio di client del dispositivo sul computer.
Nel menu a sinistra nel portale di Azure, selezionare Tutte le risorse.
Selezionare il servizio Device Provisioning.
Nel menu Impostazioni selezionare Gestisci registrazioni.
Selezionare la scheda Registrazioni singole.
Selezionare la casella di controllo accanto all'ID di registrazione del dispositivo registrato in questa guida introduttiva.
Nella parte superiore della pagina selezionare Elimina.
Eliminare la registrazione del dispositivo da hub IoT
Nel menu a sinistra nel portale di Azure, selezionare Tutte le risorse.
Selezionare l'hub IoT.
Nel menu Explorer selezionare Dispositivi IoT.
Selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questa guida introduttiva.
Nella parte superiore della pagina selezionare Elimina.
Passaggi successivi
In questa guida introduttiva è stato effettuato il provisioning di un singolo dispositivo nell'hub IoT usando una registrazione singola. Successivamente, informazioni su come effettuare il provisioning di più dispositivi tra più hub.