Connettere Raspberry Pi 3 alla soluzione di monitoraggio remoto e attivare gli aggiornamenti del firmware remoto usando Node.js

Questa esercitazione illustra come usare lo Starter Kit di Microsoft Azure IoT per Raspberry Pi 3 per:

  • Sviluppare un lettore di temperatura e umidità in grado di comunicare con il cloud.
  • Abilitare ed eseguire un aggiornamento del firmware remoto per aggiornare l'applicazione client su Raspberry Pi.

L'esercitazione usa:

  • Il sistema operativo Raspbian, il linguaggio di programmazione Node.js e Microsoft Azure IoT SDK per Node.js per implementare un dispositivo di esempio.
  • La soluzione preconfigurata di monitoraggio remoto IoT Suite come back-end basato su cloud.

Panoramica

In questa esercitazione si completa la procedura seguente:

  • Distribuire un'istanza della soluzione preconfigurata di monitoraggio remoto nella sottoscrizione di Azure. Questo passaggio distribuisce e configura automaticamente più servizi di Azure.
  • Configurare il dispositivo e i sensori per la comunicazione con il computer e la soluzione di monitoraggio remoto.
  • Aggiornare il codice del dispositivo di esempio per eseguire la connessione alla soluzione di monitoraggio remoto e inviare i dati di telemetria che è possibile visualizzare nel dashboard della soluzione.
  • Usare il codice del dispositivo di esempio per aggiornare l'applicazione client.

Prerequisiti

Per completare l'esercitazione, è necessaria una sottoscrizione di Azure attiva.

Nota

Se non si dispone di un account, è possibile creare un account di valutazione gratuita in pochi minuti. Per informazioni dettagliate, vedere la pagina relativa alla versione di valutazione gratuita di Azure.

Requisiti software

È necessario un client SSH nel computer desktop per poter accedere in remoto alla riga di comando in Raspberry Pi.

  • Windows non include un client SSH. È consigliabile usare PuTTY.
  • La maggior parte delle distribuzioni Linux e Mac OS includono l'utilità SSH della riga di comando. Per altre informazioni, vedere SSH Using Linux or Mac OS (SSH con Linux o Mac OS).

Requisiti hardware

Un computer desktop per potersi connettere in remoto alla riga di comando in Raspberry Pi.

Starter kit di Microsoft Azure IoT per Raspberry Pi 3 o componenti equivalenti. Questa esercitazione usa gli elementi seguenti del kit:

  • Raspberry Pi 3
  • Scheda microSD (con NOOBS)
  • Un cavo USB mini
  • Un cavo Ethernet
  • Sensore BME280
  • Breadboard
  • Cavi ponticello
  • Resistori
  • LED

Effettuare il provisioning della soluzione

Se nel proprio account non è già stato effettuato il provisioning della soluzione preconfigurata per il monitoraggio remoto:

  1. Accedere a azureiotsuite.com con le credenziali dell'account Azure e fare clic su + per creare una soluzione.
  2. Fare clic su Seleziona nel riquadro Remote monitoring (Monitoraggio remoto).
  3. Immettere un valore in Nome soluzione per la soluzione preconfigurata di monitoraggio remoto.
  4. Selezionare l'area e la sottoscrizione che si desidera usare per il provisioning della soluzione.
  5. Fare clic su Crea soluzione per iniziare il processo di provisioning. In genere il processo richiede alcuni minuti.

Attendere il completamento del processo di provisioning.

  1. Fare clic sul riquadro della soluzione con stato Provisioning.
  2. Notare gli stati Provisioning man mano che i servizi di Azure vengono distribuiti nella sottoscrizione di Azure.
  3. Al termine del provisioning, lo stato cambierà in Pronto.
  4. Fare clic sul riquadro per visualizzare i dettagli della soluzione nel riquadro di destra.

Nota

In caso di problemi di distribuzione della soluzione preconfigurata, vedere Autorizzazioni per il sito azureiotsuite.com e le domande frequenti. Se i problemi persistono, creare un ticket di servizio nel portale.

Se ci sono dettagli importanti non elencati per la soluzione, è possibile inviare suggerimenti sulle funzionalità usando i suggerimenti degli utenti.

Avviso

La soluzione di monitoraggio remota esegue il provisioning di un set di servizi di Azure nella sottoscrizione di Azure. La distribuzione riflette un'architettura enterprise reale. Per evitare costi di consumo di Azure non necessari, eliminare l'istanza della soluzione preconfigurata in azureiotsuite.com al completamento. Se la soluzione preconfigurata occorre nuovamente, è possibile ricrearla facilmente. Per altre informazioni sulla riduzione del consumo durante l'esecuzione della soluzione di monitoraggio remoto, vedere Configuring Azure IoT Suite preconfigured solutions for demo purposes (Configurazione di soluzioni preconfigurate di Azure IoT Suite per scopi dimostrativi).

Visualizzare il dashboard della soluzione

Il dashboard della soluzione consente di gestire la soluzione distribuita. Ad esempio, è possibile visualizzare dati di telemetria, aggiungere dispositivi e richiamare metodi.

  1. Al termine del provisioning, quando il riquadro della soluzione preconfigurata indica Pronto, scegliere Avvia per aprire il portale della soluzione di monitoraggio remoto in una nuova scheda.

    Avviare la soluzione preconfigurata

  2. Per impostazione predefinita, il portale della soluzione visualizza il dashboard. È possibile passare ad altre aree del portale della soluzione usando il menu sul lato sinistro della pagina.

    Dashboard della soluzione preconfigurata per il monitoraggio remoto

Aggiungere un dispositivo

Per connettere un dispositivo alla soluzione preconfigurata, è necessario che identifichi se stesso nell'hub IoT mediante delle credenziali valide. È possibile recuperare le credenziali del dispositivo dal dashboard della soluzione. Le istruzioni per includere le credenziali del dispositivo nell'applicazione client sono illustrate più avanti in questa esercitazione.

Se non è già stato fatto, aggiungere un dispositivo personalizzato alla soluzione di monitoraggio remoto. Completare questa procedura nel dashboard della soluzione:

  1. Nell'angolo inferiore sinistro del dashboard fare clic su Aggiungi un dispositivo.

    Aggiungere un dispositivo

  2. Nel pannello Dispositivo personalizzato fare clic su Aggiungi nuovo.

    Aggiungere un dispositivo personalizzato

  3. Scegliere Let me define my own Device ID (Desidero definire il mio ID dispositivo). Immettere un ID dispositivo, ad esempio rasppi, fare clic su Controlla ID per verificare di non avere già usato il nome nella soluzione e quindi fare clic su Crea per effettuare il provisioning del dispositivo.

    Aggiungere un ID dispositivo

  4. Annotare le credenziali del dispositivo (ID dispositivo, Nome host hub IoT e Chiave dispositivo). Questi valori sono necessari per consentire all'applicazione client in Raspberry Pi di connettersi alla soluzione per il monitoraggio remoto. Fare quindi clic su Done.

    Vedere le credenziali del dispositivo

  5. Selezionare il dispositivo nell'elenco dei dispositivi nel dashboard della soluzione. Nel pannello Dettagli dispositivo fare clic su Attiva dispositivo. Lo stato del dispositivo è ora In esecuzione. La soluzione per il monitoraggio remoto può ora ricevere i dati di telemetria dal dispositivo e richiamare i metodi sul dispositivo.

Preparare Raspberry Pi

Installare Raspbian

Se è la prima volta che si usa Raspberry Pi, è necessario installare il sistema operativo Raspbian tramite NOOBS nella scheda SD inclusa nel kit. La Raspberry Pi Software Guide (Guida al software Raspberry Pi) descrive come installare un sistema operativo in Raspberry Pi. Questa esercitazione presuppone che si sia installato il sistema operativo Raspbian in Raspberry Pi.

Nota

NOOBS è già installato nella scheda SD inclusa in Starter Kit di Microsoft Azure IoT per Raspberry Pi 3. È possibile avviare Raspberry Pi da questa scheda e scegliere di installare il sistema operativo Raspbian.

Configurare l'hardware

Questa esercitazione usa il sensore BME280 incluso in Starter Kit di Microsoft Azure IoT per Raspberry Pi 3 per generare dati di telemetria. Usa un LED per indicare quando Raspberry Pi elabora una chiamata a un metodo dal dashboard della soluzione.

I componenti sulla breadboard sono:

  • LED rosso
  • Resistore da 220 Ohm (rosso, rosso, marrone)
  • Sensore BME280

Il diagramma seguente illustra come collegare l'hardware:

Configurazione hardware per Raspberry Pi

La tabella seguente riepiloga i collegamenti da Raspberry Pi ai componenti della breadboard:

Raspberry Pi Breadboard Colore
GND (Pin 14) LED -ve pin (18A) Viola
GPCLK0 (Pin 7) Resistore (25A) Arancione
SPI_CE0 (Pin 24) CS (39A) Blu
SPI_SCLK (Pin 23) SCK (36A) Giallo
SPI_MISO (Pin 21) SDO (37A) Bianco
SPI_MOSI (Pin 19) SDI (38A) Verde
GND (Pin 6) GND (35A) Nero
3.3 V (Pin 1) 3Vo (34A) Rosso

Per completare la configurazione dell'hardware, è necessario:

  • Connettere Raspberry Pi all'alimentatore incluso nel kit.
  • Connettere Raspberry Pi alla rete usando il cavo Ethernet incluso nel kit. In alternativa, è possibile configurare la connettività wireless per Raspberry Pi.

La configurazione hardware di Raspberry Pi è stata quindi completata.

Accedere al terminale

Esistono due opzioni per accedere all'ambiente di un terminale in Raspberry Pi:

  • Se a Raspberry Pi sono connessi una tastiera e un monitor, è possibile usare l'interfaccia utente grafica di Raspbian per accedere a una finestra del terminale.

  • Accedere alla riga di comando in Raspberry Pi usando SSH dal computer desktop.

Usare una finestra del terminale nell'interfaccia utente grafica

Le credenziali predefinite per Raspbian sono il nome utente pi e la password raspberry. Nella barra della applicazioni dell'interfaccia utente grafica è possibile avviare l'utilità Terminal (Terminale) usando l'icona del monitor.

Accedere con SSH

È possibile usare la riga di comando SSH per accedere a Raspberry Pi. L'articolo SSH (Secure Shell) (SSH - Secure Shell) descrive come configurare SSH in Raspberry Pi e come connettersi da Windows o Linux e Mac OS.

Accedere con il nome utente pi e la password raspberry.

Facoltativo: condividere una cartella in Raspberry Pi

È facoltativamente possibile condividere una cartella in Raspberry Pi con l'ambiente desktop. La condivisione di una cartella consente di usare l'editor di testo desktop preferito (ad esempio, Visual Studio Code o Sublime Text) per modificare i file in Raspberry Pi invece di usare nano o vi.

Per condividere una cartella con Windows, configurare un server Samba in Raspberry Pi. Usare in alternativa il server SFTP predefinito con un client SFTP sul desktop.

Abilitare SPI

Prima di poter eseguire l'applicazione di esempio, è necessario abilitare il bus SPI (Serial Peripheral Interface) in Raspberry Pi. Raspberry Pi comunica con il dispositivo sensore BME280 tramite il bus SPI. Usare il comando seguente per modificare il file di configurazione:

sudo nano /boot/config.txt

Trovare la riga:

#dtparam=spi=on

  • Per rimuovere il commento dalla riga, eliminare # all'inizio.
  • Salvare le modifiche (CTRL+O, INVIO) e chiudere l'editor (CTRL+X).
  • Per abilitare SPI, riavviare Raspberry Pi. Il riavvio disconnette il terminale, quindi è necessario eseguire di nuovo l'accesso quando Raspberry Pi viene riavviato:

    sudo reboot
    

Scaricare e configurare l'esempio

È ora possibile scaricare e configurare l'applicazione client di monitoraggio remoto su Raspberry Pi.

Installare Node.js

Se non è già stato fatto, installare Node.js in Raspberry Pi. IoT SDK per Node.js richiede la versione 0.11.5 o successiva di Node.js. I passaggi seguenti mostrano come installare Node.js v6.10.2 su Raspberry Pi:

  1. Usare il comando seguente per aggiornare Raspberry Pi:

    sudo apt-get update
    
  2. Usare il comando seguente per scaricare i file binari di Node.js su Raspberry Pi:

    wget https://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-armv7l.tar.gz
    
  3. Usare il comando seguente per installare i file binari:

    sudo tar -C /usr/local --strip-components 1 -xzf node-v6.10.2-linux-armv7l.tar.gz
    
  4. Usare il comando seguente per verificare di aver installato correttamente Node.js v6.10.2:

    node --version
    

Clonare i repository

Se non è già stato fatto, clonare i repository necessari eseguendo i comandi seguenti nel Pi:

cd ~
git clone --recursive https://github.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit.git

Aggiornare la stringa di connessione del dispositivo

Aprire il file di configurazione di esempio nell'editor nano usando il comando seguente:

nano ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/config/deviceinfo

Sostituire i valori segnaposto con l'id del dispositivo e informazioni dell'hub IoT creati e salvati all'inizio di questa esercitazione.

Al termine, il contenuto del file deviceinfo dovrebbe essere simile all'esempio seguente:

yourdeviceid
HostName=youriothubname.azure-devices.net;DeviceId=yourdeviceid;SharedAccessKey=yourdevicekey

Salvare le modifiche (Ctrl+O, INVIO) e chiudere l'editor (Ctrl+X).

Eseguire l'esempio

Eseguire i comandi seguenti per installare i pacchetti prerequisiti per l'esempio:

cd ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advance/1.0
npm install

È ora possibile eseguire il programma di esempio su Raspberry Pi. Immettere il comando:

sudo node ~/iot-remote-monitoring-node-raspberrypi-getstartedkit/advanced/1.0/remote_monitoring.js

L'output seguente riporta un esempio dell'output visualizzato al prompt dei comandi su Raspberry Pi:

Output dell'app Raspberry Pi

Premere CTRL+C per uscire dal programma in qualsiasi momento.

Visualizzare i dati di telemetria

Raspberry Pi ora invia i dati di telemetria alla soluzione di monitoraggio remota. È possibile visualizzare i dati di telemetria nel dashboard della soluzione. È anche possibile inviare messaggi a Raspberry Pi dal dashboard della soluzione.

  • Passare al dashboard della soluzione.
  • Selezionare il dispositivo nell'elenco a discesa Dispositivo da visualizzare.
  • I dati di telemetria da Raspberry Pi vengono visualizzati nel dashboard.

Visualizzare i dati di telemetria da Raspberry Pi

Avviare l'aggiornamento del firmware

Il processo di aggiornamento del firmware scarica e installa una versione aggiornata dell'applicazione client del dispositivo in Raspberry Pi. Per altre informazioni sul processo di aggiornamento del firmware, vedere la descrizione del modello di aggiornamento del firmware in Panoramica della gestione dei dispositivi con l'hub IoT.

Per avviare il processo di aggiornamento del firmware, richiamare un metodo nel dispositivo. Questo metodo è asincrono e viene restituito non appena inizia il processo di aggiornamento. Il dispositivo usa le proprietà segnalate per notificare la soluzione sullo stato dell'aggiornamento.

I metodi vengono richiamati in Raspberry Pi dal dashboard della soluzione. Quando Raspberry Pi si connette per la prima volta alla soluzione di monitoraggio remoto, invia le informazioni sui metodi supportati.

  1. Nel dashboard della soluzione fare clic su Dispositivi per passare alla pagina Dispositivi. Selezionare Raspberry Pi in Elenco dispositivi. Quindi scegliere Metodi:

    Elencare i dispositivi nel dashboard

  2. Nella pagina Richiama metodo, scegliere InitiateFirmwareUpdate nell'elenco a discesa Metodo.

  3. Nel campo FWPackageURI immettere https://raw.githubusercontent.com/Azure-Samples/iot-remote-monitoring-node-raspberrypi-getstartedkit/master/advanced/2.0/raspberry.js. Questo file contiene l'implementazione della versione 2.0 del firmware.

  4. Scegliere InvokeMethod. L'app su Raspberry Pi invia un riconoscimento al dashboard della soluzione. Avvia quindi il processo di aggiornamento del firmware scaricando la nuova versione del firmware:

    Visualizzare la cronologia del metodo

Osservare il processo di aggiornamento del firmware

È possibile osservare il processo di aggiornamento del firmware durante l'esecuzione nel dispositivo e visualizzando le proprietà dichiarate nel dashboard della soluzione:

  1. È possibile visualizzare lo stato di avanzamento del processo di aggiornamento su Raspberry Pi:

    Mostra l'avanzamento dell'aggiornamento

    Nota

    L'applicazione di monitoraggio remoto viene riavviata automaticamente al termine dell'aggiornamento. Usare il comando ps -ef per verificare che sia in esecuzione. Se si vuole terminare il processo, usare il comando kill con l'id del processo.

  2. È possibile visualizzare lo stato dell'aggiornamento del firmware, come segnalato dal dispositivo, nel portale della soluzione. La schermata seguente mostra lo stato e la durata di ogni fase del processo di aggiornamento e la nuova versione del firmware:

    Mostra lo stato del processo

    Se si passa nuovamente al dashboard, è possibile verificare che il dispositivo sta ancora inviando i dati di telemetria dopo l'aggiornamento del firmware.

Avviso

Se si lascia la soluzione di monitoraggio remoto in esecuzione nell'account Azure, verrà addebitato il tempo dell'esecuzione. Per altre informazioni sulla riduzione del consumo durante l'esecuzione della soluzione di monitoraggio remoto, vedere Configuring Azure IoT Suite preconfigured solutions for demo purposes (Configurazione di soluzioni preconfigurate di Azure IoT Suite per scopi dimostrativi). Al termine, eliminare la soluzione preconfigurata dall'account Azure.

Passaggi successivi

Visitare il Centro per sviluppatori Azure IoT per altri esempi e documentazione su Azure IoT.