Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Panoramica dello scenario
In questo scenario viene creato un dispositivo che invia i dati di telemetria seguenti al monitoraggio remoto soluzione preconfigurata:
- Temperatura esterna
- Temperatura interna
- Umidità
Per semplicità, il codice nel dispositivo genera valori di esempio, ma è consigliabile estendere l'esempio connettendo sensori reali al dispositivo e inviando dati di telemetria reali.
Il dispositivo è anche in grado di rispondere ai metodi richiamati dal dashboard della soluzione e i valori delle proprietà desiderati impostati nel dashboard della soluzione.
Per completare questa esercitazione, è necessario un account Azure attivo. Se non si dispone di un account, è possibile creare un account di valutazione gratuita in pochi minuti. Per informazioni dettagliate, vedere Versione di valutazione gratuita di Azure.
Prima di iniziare
Prima di scrivere codice per il dispositivo, è necessario effettuare il provisioning della soluzione preconfigurata di monitoraggio remoto ed effettuare il provisioning di un nuovo dispositivo personalizzato in tale soluzione.
Configurare la soluzione preconfigurata di monitoraggio remoto
Il dispositivo creato in questa esercitazione invia i dati a un'istanza della soluzione preconfigurata di monitoraggio remoto. Se non è già stato effettuato il provisioning della soluzione preconfigurata di monitoraggio remoto nell'account Azure, seguire questa procedura:
- Nella pagina https://www.azureiotsolutions.com/ fare clic su + per creare una soluzione.
- Fare clic su Selezionare sul pannello monitoraggio remoto per creare la propria soluzione.
- Nella pagina Crea soluzione di monitoraggio remoto immettere un Nome della soluzione di propria scelta, selezionare la Regione in cui si vuole eseguire la distribuzione e selezionare la sottoscrizione di Azure che si desidera usare. Fare quindi clic su Crea soluzione.
- Attendere il completamento del processo di provisioning.
Avvertimento
Le soluzioni preconfigurate usano servizi di Azure fatturabili. Assicurarsi di rimuovere la soluzione preconfigurata dalla sottoscrizione al termine dell'operazione per evitare addebiti non necessari. È possibile rimuovere completamente una soluzione preconfigurata dalla sottoscrizione visitando la pagina https://www.azureiotsolutions.com/.
Al termine del processo di provisioning per la soluzione di monitoraggio remoto, fare clic su Avvia per aprire il dashboard della soluzione nel browser.
Configura il dispositivo nella soluzione di monitoraggio remoto
Annotazioni
Se è già stato effettuato il provisioning di un dispositivo nella soluzione, è possibile ignorare questo passaggio. È necessario conoscere le credenziali del dispositivo quando si crea l'applicazione client.
Affinché un dispositivo si connetta alla soluzione preconfigurata, deve identificarsi all'hub IoT usando credenziali valide. È possibile recuperare le credenziali del dispositivo dal dashboard della soluzione. Le credenziali del dispositivo vengono incluse nell'applicazione client più avanti in questa esercitazione.
Per aggiungere un dispositivo alla soluzione di monitoraggio remoto, completare i passaggi seguenti nel dashboard della soluzione:
Nell'angolo inferiore sinistro del dashboard fare clic su Aggiungi un dispositivo.
Nel pannello dispositivo personalizzato , fare clic su Aggiungi nuovo.
dispositivo personalizzatoScegliere Permettimi di definire il mio ID dispositivo. Immettere un ID dispositivo, ad esempio mydevice, fare clic su Controlla ID per verificare che il nome non sia già in uso e quindi fare clic su Crea per effettuare il provisioning del dispositivo.
Prendere nota delle credenziali del dispositivo (ID dispositivo, nome host dell'hub IoT e Chiave del dispositivo). L'applicazione client richiede questi valori per connettersi alla soluzione di monitoraggio remoto. Fare quindi clic su Done (Chiudi).
Selezionare il dispositivo nell'elenco dei dispositivi nel dashboard della soluzione. Quindi, nel pannello Dettagli Dispositivo, fare clic su Abilita Dispositivo. Lo stato del tuo dispositivo è attualmente in esecuzione. La soluzione di monitoraggio remoto può ora ricevere dati di telemetria dal dispositivo e richiamare i metodi nel dispositivo.
Creare una soluzione di esempio node.js
Assicurarsi che Node.js versione 0.11.5 o successiva sia installato nel computer di sviluppo. È possibile eseguire node --version nella riga di comando per controllare la versione.
Creare una cartella denominata RemoteMonitoring nel computer di sviluppo. Navigare a questa cartella nell'ambiente della riga di comando.
Eseguire i comandi seguenti per scaricare e installare i pacchetti necessari per completare l'app di esempio:
npm init npm install azure-iot-device azure-iot-device-mqtt --saveNella cartella RemoteMonitoring creare un file denominato remote_monitoring.js. Aprire questo file in un editor di testo.
Nel file remote_monitoring.js aggiungere le istruzioni seguenti
require:'use strict'; var Protocol = require('azure-iot-device-mqtt').Mqtt; var Client = require('azure-iot-device').Client; var ConnectionString = require('azure-iot-device').ConnectionString; var Message = require('azure-iot-device').Message;Aggiungere le dichiarazioni di variabili seguenti dopo le istruzioni
require. Sostituire i valori segnaposto [ID dispositivo] e [Chiave dispositivo] con i valori annotati per il dispositivo nel dashboard della soluzione di monitoraggio remoto. Usare il nome host dell'hub IoT dal dashboard della soluzione per sostituire [Nome IoTHub]. Ad esempio, se il nome host dell'hub IoT è contoso.azure-devices.net, sostituire [Nome IoTHub] con contoso:var connectionString = 'HostName=[IoTHub Name].azure-devices.net;DeviceId=[Device Id];SharedAccessKey=[Device Key]'; var deviceId = ConnectionString.parse(connectionString).DeviceId;Aggiungere le variabili seguenti per definire alcuni dati di telemetria di base:
var temperature = 50; var humidity = 50; var externalTemperature = 55;Aggiungere la funzione helper seguente per stampare i risultati dell'operazione:
function printErrorFor(op) { return function printError(err) { if (err) console.log(op + ' error: ' + err.toString()); }; }Aggiungere la funzione helper seguente da usare per casualizzare i valori di telemetria:
function generateRandomIncrement() { return ((Math.random() * 2) - 1); }Aggiungere la definizione seguente per l'oggetto DeviceInfo inviato dal dispositivo all'avvio:
var deviceMetaData = { 'ObjectType': 'DeviceInfo', 'IsSimulatedDevice': 0, 'Version': '1.0', 'DeviceProperties': { 'DeviceID': deviceId, 'HubEnabledState': 1 } };Aggiungere la definizione seguente per i valori segnalati dal dispositivo gemello. Questa definizione include descrizioni dei metodi diretti supportati dal dispositivo:
var reportedProperties = { "Device": { "DeviceState": "normal", "Location": { "Latitude": 47.642877, "Longitude": -122.125497 } }, "Config": { "TemperatureMeanValue": 56.7, "TelemetryInterval": 45 }, "System": { "Manufacturer": "Contoso Inc.", "FirmwareVersion": "2.22", "InstalledRAM": "8 MB", "ModelNumber": "DB-14", "Platform": "Plat 9.75", "Processor": "i3-9", "SerialNumber": "SER99" }, "Location": { "Latitude": 47.642877, "Longitude": -122.125497 }, "SupportedMethods": { "Reboot": "Reboot the device", "InitiateFirmwareUpdate--FwPackageURI-string": "Updates device Firmware. Use parameter FwPackageURI to specifiy the URI of the firmware file" }, }Aggiungere la funzione seguente per gestire la chiamata al metodo diretto Reboot :
function onReboot(request, response) { // Implement actual logic here. console.log('Simulated reboot...'); // Complete the response response.send(200, "Rebooting device", function(err) { if(!!err) { console.error('An error occurred when sending a method response:\n' + err.toString()); } else { console.log('Response to method \'' + request.methodName + '\' sent successfully.' ); } }); }Aggiungere la funzione seguente per gestire la chiamata al metodo diretto InitiateFirmwareUpdate . Questo metodo diretto usa un parametro per specificare il percorso dell'immagine del firmware da scaricare e avvia l'aggiornamento del firmware nel dispositivo in modo asincrono:
function onInitiateFirmwareUpdate(request, response) { console.log('Simulated firmware update initiated, using: ' + request.payload.FwPackageURI); // Complete the response response.send(200, "Firmware update initiated", function(err) { if(!!err) { console.error('An error occurred when sending a method response:\n' + err.toString()); } else { console.log('Response to method \'' + request.methodName + '\' sent successfully.' ); } }); // Add logic here to perform the firmware update asynchronously }Aggiungere il codice seguente per creare un'istanza client:
var client = Client.fromConnectionString(connectionString, Protocol);Aggiungere il codice seguente a:
- Aprire la connessione.
- Inviare l'oggetto DeviceInfo .
- Configurare un gestore per le proprietà desiderate.
- Inviare le proprietà segnalate.
- Registrare i gestori dei metodi diretti.
- Iniziare a inviare i dati di telemetria.
client.open(function (err) { if (err) { printErrorFor('open')(err); } else { console.log('Sending device metadata:\n' + JSON.stringify(deviceMetaData)); client.sendEvent(new Message(JSON.stringify(deviceMetaData)), printErrorFor('send metadata')); // Create device twin client.getTwin(function(err, twin) { if (err) { console.error('Could not get device twin'); } else { console.log('Device twin created'); twin.on('properties.desired', function(delta) { console.log('Received new desired properties:'); console.log(JSON.stringify(delta)); }); // Send reported properties twin.properties.reported.update(reportedProperties, function(err) { if (err) throw err; console.log('twin state reported'); }); // Register handlers for direct methods client.onDeviceMethod('Reboot', onReboot); client.onDeviceMethod('InitiateFirmwareUpdate', onInitiateFirmwareUpdate); } }); // Start sending telemetry var sendInterval = setInterval(function () { temperature += generateRandomIncrement(); externalTemperature += generateRandomIncrement(); humidity += generateRandomIncrement(); var data = JSON.stringify({ 'DeviceID': deviceId, 'Temperature': temperature, 'Humidity': humidity, 'ExternalTemperature': externalTemperature }); console.log('Sending device event data:\n' + data); client.sendEvent(new Message(data), printErrorFor('send event')); }, 5000); client.on('error', function (err) { printErrorFor('client')(err); if (sendInterval) clearInterval(sendInterval); client.close(printErrorFor('client.close')); }); } });Salvare le modifiche apportate al file remote_monitoring.js .
Eseguire il comando seguente al prompt dei comandi per avviare l'applicazione di esempio:
node remote_monitoring.js
Visualizzare i dati di telemetria del dispositivo nel dashboard
Il dashboard nella soluzione di monitoraggio remoto consente di visualizzare i dati di telemetria inviati dai dispositivi all'hub IoT.
Nel tuo browser, torna al dashboard della soluzione di monitoraggio remoto, fai clic su Dispositivi nel pannello a sinistra per passare all'elenco dei dispositivi .
Nell'elenco Dispositivi, dovresti vedere che lo stato del tuo dispositivo è In esecuzione. Fare clic su Abilita dispositivo nel pannello Dettagli dispositivo in caso contrario.
Fare clic su Dashboard per tornare al dashboard, selezionare il dispositivo nell'elenco a discesa Dispositivo da visualizzare per visualizzarne i dati di telemetria. I dati di telemetria dell'applicazione di esempio sono 50 unità per la temperatura interna, 55 unità per la temperatura esterna e 50 unità per l'umidità.
Richiamare un metodo nel dispositivo
Il dashboard nella soluzione di monitoraggio remoto consente di richiamare metodi nei dispositivi tramite l'hub IoT. Ad esempio, nella soluzione di monitoraggio remoto è possibile richiamare un metodo per simulare il riavvio di un dispositivo.
Nel dashboard della soluzione di monitoraggio remoto fare clic su Dispositivi nel pannello a sinistra per passare all'elenco Dispositivi .
Fare clic su ID dispositivo per il tuo dispositivo nell'elenco dei dispositivi .
Nel pannello dettagli dispositivo fare clic su Metodi.
Nel menu a tendina Method, selezionare InitiateFirmwareUpdatee quindi in FWPACKAGEURI inserire un URL fittizio. Fare clic su Invoke Method per chiamare il metodo nel dispositivo.
Viene visualizzato un messaggio nella console che esegue il codice del dispositivo quando il dispositivo gestisce il metodo. I risultati del metodo vengono aggiunti alla cronologia nel portale della soluzione:
Passaggi successivi
L'articolo Personalizzazione di soluzioni preconfigurate descrive alcuni modi in cui è possibile estendere questo esempio. Le possibili estensioni includono l'uso di sensori reali e l'implementazione di comandi aggiuntivi.
Altre informazioni sulle autorizzazioni di nel sito azureiotsuite.com.