Trasformare i dati esternamente per IoT Central
I dispositivi IoT inviano dati in vari formati. Per usare i dati del dispositivo con l'applicazione IoT Central, potrebbe essere necessario usare una trasformazione per:
- Rendere il formato dei dati compatibili con l'applicazione IoT Central.
- Converti unità.
- Calcolare nuove metriche.
- Arricchire i dati da altre origini.
Questo articolo illustra come trasformare i dati del dispositivo all'esterno di IoT Central in ingresso o in uscita.
Nota
IoT Central può anche trasformare i dati internamente. Per altre informazioni, vedere Eseguire il mapping dei dati di telemetria in ingresso a IoT Central e Trasformare i dati all'interno dell'applicazione IoT Central per l'esportazione.
Il diagramma seguente illustra tre route per i dati che includono trasformazioni:
La tabella seguente illustra tre tipi di trasformazione di esempio:
Trasformazione | Descrizione | Esempio | Note |
---|---|---|---|
Formato messaggio | Convertire o modificare i messaggi JSON. | Da CSV a JSON | In ingresso. IoT Central accetta solo messaggi JSON di valore. Per altre informazioni, vedere Telemetria, proprietà e payload dei comandi. |
Calcoli | Funzioni matematiche che Funzioni di Azure possono essere eseguite. | Conversione unità da Fahrenheit a Celsius. | Trasformare usando il modello in uscita per sfruttare i vantaggi dell'ingresso dei dispositivi scalabili tramite la connessione diretta a IoT Central. La trasformazione dei dati consente di usare le funzionalità di IoT Central, ad esempio visualizzazioni e processi. |
Arricchimento dei messaggi | Arricchimenti da origini dati esterne non trovate nelle proprietà del dispositivo o nei dati di telemetria. Per altre informazioni sugli arricchimenti interni, vedere Esportare i dati IoT in destinazioni cloud usando blob Archiviazione. | Aggiungere informazioni meteo ai messaggi usando i dati sulla posizione dai dispositivi. | Trasformare usando il modello in uscita per sfruttare i vantaggi dell'ingresso dei dispositivi scalabili tramite la connessione diretta a IoT Central. |
Prerequisiti
Per completare la procedura descritta in questa guida pratica, sono necessari gli elementi seguenti:
Una sottoscrizione di Azure attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Applicazione IoT Central creata dal modello applicazione personalizzata. Per altre informazioni, vedere Creare un'applicazione IoT Central e Informazioni sull'applicazione.
Trasformazione dei dati in ingresso
Per trasformare i dati del dispositivo in ingresso, sono disponibili due opzioni:
IoT Edge: usare un modulo IoT Edge per trasformare i dati dai dispositivi downstream prima di inviare i dati all'applicazione IoT Central.
Bridge di dispositivi IoT Central: il bridge di dispositivi IoT Central connette altri cloud di dispositivi IoT, ad esempio Sigfox, Particle e The Things Network, a IoT Central. Il bridge di dispositivi usa una funzione di Azure per inoltrare i dati ed è possibile personalizzare la funzione per trasformare i dati del dispositivo.
Usare IoT Edge per trasformare i dati dei dispositivi
In questo scenario, un modulo IoT Edge trasforma i dati dai dispositivi downstream prima di inoltrarli all'applicazione IoT Central. A livello generale, i passaggi per configurare questo scenario sono:
Configurare un dispositivo IoT Edge: installare ed effettuare il provisioning di un dispositivo IoT Edge come gateway e connettere il gateway all'applicazione IoT Central.
Connessione dispositivo downstream al dispositivo IoT Edge: Connessione dispositivi downstream al dispositivo IoT Edge ed eseguirne il provisioning nell'applicazione IoT Central.
Trasformare i dati dei dispositivi in IoT Edge: creare un modulo IoT Edge per trasformare i dati. Distribuire il modulo nel dispositivo gateway IoT Edge che inoltra i dati del dispositivo trasformati all'applicazione IoT Central.
Verifica: inviare dati da un dispositivo downstream al gateway e verificare che i dati del dispositivo trasformati raggiungano l'applicazione IoT Central.
Nell'esempio descritto nelle sezioni seguenti il dispositivo downstream invia dati JSON nel formato seguente al dispositivo gateway IoT Edge:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "celsius",
}
}
Si usa un modulo IoT Edge per trasformare i dati e convertire il valore della temperatura da Celsius
a Fahrenheit
prima di inviarlo a IoT Central:
{
"device": {
"deviceId": "<downstream-deviceid>"
},
"measurements": {
"temp": <temperature>,
"pressure": <pressure>,
"humidity": <humidity>,
"scale": "fahrenheit"
}
}
I passaggi seguenti illustrano come configurare e configurare questo scenario:
Compilare il modulo personalizzato
In questo scenario, il dispositivo IoT Edge esegue un modulo personalizzato che trasforma i dati dal dispositivo downstream. Prima di distribuire e configurare il dispositivo IoT Edge, è necessario:
- Compilare il modulo personalizzato.
- Aggiungere il modulo personalizzato a un registro contenitori.
Il runtime di IoT Edge scarica moduli personalizzati da un registro contenitori, ad esempio un registro Contenitori di Azure o un hub Docker. Azure Cloud Shell include tutti gli strumenti necessari per creare un registro contenitori, compilare il modulo e caricare il modulo nel registro:
Per creare un registro contenitori:
Aprire Azure Cloud Shell e accedere alla sottoscrizione di Azure.
Selezionare la shell Bash .
Eseguire i comandi seguenti per creare un registro Azure Container:
REGISTRY_NAME="{your unique container registry name}" az group create --name ingress-scenario --location eastus az acr create -n $REGISTRY_NAME -g ingress-scenario --sku Standard --admin-enabled true az acr credential show -n $REGISTRY_NAME
Prendere nota dei
username
valori epassword
, che verranno usati in un secondo momento. È necessaria solo una delle password visualizzate nell'output del comando.
Per compilare il modulo personalizzato in Azure Cloud Shell:
In Azure Cloud Shell clonare il repository GitHub che contiene il codice sorgente del modulo:
git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Per compilare il modulo personalizzato, eseguire i comandi seguenti in Azure Cloud Shell:
cd iot-central-transform-with-iot-edge/custommodule/transformmodule az acr build --registry $REGISTRY_NAME --image transformmodule:0.0.1-amd64 -f Dockerfile.amd64 .
L'esecuzione dei comandi precedenti può richiedere alcuni minuti.
Configurare un dispositivo IoT Edge
Questo scenario usa un dispositivo gateway IoT Edge per trasformare i dati da qualsiasi dispositivo downstream. Questa sezione descrive come creare un modello di dispositivo IoT Central per il dispositivo gateway nell'applicazione IoT Central. I dispositivi IoT Edge usano un manifesto di distribuzione per configurare i moduli.
In questo esempio il dispositivo downstream non richiede un modello di dispositivo. Il dispositivo downstream viene registrato in IoT Central in modo da poter generare le credenziali necessarie per connettere il dispositivo IoT Edge. Poiché il modulo IoT Edge trasforma i dati, tutti i dati di telemetria dei dispositivi downstream arrivano in IoT Central come se il dispositivo IoT Edge lo abbia inviato.
Per creare un modello di dispositivo per il dispositivo gateway IoT Edge:
Salvare una copia del manifesto della distribuzione nel computer di sviluppo locale: moduledeployment.json.
Aprire la copia locale del file manifesto moduledeployment.json in un editor di testo.
Trovare la
registryCredentials
sezione e sostituire i segnaposto con i valori annotato quando è stato creato il Registro Azure Container. Iladdress
valore è simile a{your username}.azurecr.io
.Trovare la
settings
sezione per .transformmodule
Sostituire{your username}
con lo stesso valore usato nel passaggio precedente. Salvare le modifiche.Nell'applicazione IoT Central passare alla pagina Manifesti edge.
Selezionare + Nuovo. Immettere un nome, ad esempio Transformer , per il manifesto della distribuzione e quindi caricare il file moduledeployment.json scaricato in precedenza. Il manifesto della distribuzione include un modulo personalizzato denominato transformmodule.
Selezionare Avanti e quindi Crea.
Nell'applicazione IoT Central passare alla pagina Modelli di dispositivo .
Selezionare + Nuovo, selezionare Azure IoT Edge e quindi avanti: Personalizza.
Immettere il dispositivo gateway IoT Edge come nome del modello di dispositivo. Selezionare Si tratta di un dispositivo gateway.
Selezionare Avanti: Rivedi e quindi Crea.
Nella pagina Crea un modello selezionare Modello personalizzato.
Nel modello selezionare Moduli e quindi Importa moduli dal manifesto. Selezionare il manifesto della distribuzione transformer e quindi selezionare Importa.
Il manifesto della distribuzione non specifica i dati di telemetria inviati dal modulo. Per aggiungere le definizioni di telemetria al modello di dispositivo:
Selezionare Module transformmodule (Trasforma modulo) nella sezione Modules (Moduli ) del modello di dispositivo gateway IoT Edge.
Selezionare Aggiungi funzionalità e usare le informazioni nelle tabelle seguenti per aggiungere un nuovo tipo di telemetria:
Impostazione Valore Nome visualizzato Dispositivo Nome dispositivo Tipo di funzionalità Telemetria Tipo semantico None Schema Object Definizione dell'oggetto:
Nome visualizzato Nome Schema ID dispositivo deviceId String Salva le modifiche.
Selezionare Aggiungi funzionalità e usare le informazioni nelle tabelle seguenti per aggiungere un nuovo tipo di telemetria:
Impostazione Valore Nome visualizzato Misure Nome Misure Tipo di funzionalità Telemetria Tipo semantico None Schema Object Definizione dell'oggetto:
Nome visualizzato Nome Schema Temperatura temperatura Double Pressione pressione Double Umidità umidità Double Scalabilità scala String Salva le modifiche.
Nel modello selezionare Relazioni. Non selezionare Relazioni nel modulo transformmodule .
Selezionare Aggiungi relazione.
Immettere Downstream Sensor (Sensore downstream) come nome visualizzato, sensore come nome e selezionare Any (Qualsiasi ) come destinazione. Seleziona Salva.
Selezionare Pubblica per pubblicare il modello di dispositivo.
Per registrare un dispositivo gateway in IoT Central:
Nell'applicazione IoT Central passare alla pagina Dispositivi .
Selezionare Dispositivo gateway IoT Edge e selezionare + Nuovo. Immettere il dispositivo gateway IoT Edge come nome del dispositivo, immettere gateway-01 come ID dispositivo, assicurarsi che il dispositivo gateway IoT Edge sia selezionato come modello di dispositivo e No sia selezionato come Simula questo dispositivo?. Selezionare Transformer come manifesto perimetrale. Seleziona Crea.
Nell'elenco dei dispositivi fare clic sul dispositivo gateway IoT Edge e quindi selezionare Connessione.
Prendere nota dell'ambito ID, dell'ID dispositivo e della chiave primaria per il dispositivo gateway IoT Edge. Verranno usati in un secondo momento.
Per registrare un dispositivo downstream in IoT Central:
Nell'applicazione IoT Central passare alla pagina Dispositivi .
Non selezionare un modello di dispositivo. Selezionare + Nuovo. Immettere Downstream 01 come nome del dispositivo, immettere downstream-01 come ID dispositivo, assicurarsi che il modello di dispositivo non sia assegnato e No sia selezionato come Simula questo dispositivo?. Seleziona Crea.
Nell'elenco dei dispositivi fare clic sul dispositivo Downstream 01 e quindi selezionare Gestisci dispositivo > Collega al gateway.
Nella finestra di dialogo Connetti a un gateway selezionare il modello di dispositivo del dispositivo gateway IoT Edge e l'istanza del dispositivo gateway IoT Edge. Seleziona Allega.
Nel dispositivo Downstream 01 selezionare Connessione.
Prendere nota dell'ambito ID, dell'ID dispositivo e della chiave primaria per il dispositivo Downstream 01. Verranno usati in un secondo momento.
Distribuire il gateway e i dispositivi downstream
Per praticità, questo articolo usa macchine virtuali di Azure per eseguire il gateway e i dispositivi downstream. Per creare le due macchine virtuali di Azure, selezionare il pulsante Distribuisci in Azure visualizzato dopo la tabella seguente. Usare le informazioni nella tabella per completare il modulo Distribuzione personalizzata:
Campo | valore |
---|---|
Gruppo di risorse | ingress-scenario |
Gateway prefisso etichetta DNS | Nome DNS univoco per questo computer, ad esempio <your name>edgegateway |
Prefisso etichetta DNS Downstream | Nome DNS univoco per questo computer, ad esempio <your name>downstream |
ID Ambito | Ambito ID annotato in precedenza |
Gateway IoT Edge CON ID dispositivo | gateway-01 |
Gateway IoT Edge con chiave del dispositivo | Valore della chiave primaria annotato in precedenza |
Tipo di autenticazione | Password |
Chiave o password amministratore | La scelta della password per l'account AzureUser in entrambe le macchine virtuali. |
Selezionare Rivedi e crea e quindi Crea. La creazione delle macchine virtuali nel gruppo di risorse in ingresso-scenario richiede alcuni minuti.
Per verificare che il dispositivo gateway IoT Edge sia in esecuzione correttamente:
Aprire l'applicazione IoT Central. Passare quindi al dispositivo Gateway IoT Edge nell'elenco dei dispositivi nella pagina Dispositivi .
Selezionare la scheda Moduli e controllare lo stato dei tre moduli. L'avvio del runtime di IoT Edge nella macchina virtuale richiede alcuni minuti. Quando la macchina virtuale è in esecuzione, lo stato dei tre moduli è In esecuzione. Se il runtime di IoT Edge non viene avviato, vedere Risolvere i problemi del dispositivo IoT Edge.
Affinché il dispositivo IoT Edge funzioni come gateway, è necessario che alcuni certificati dimostrino la propria identità a qualsiasi dispositivo downstream. Questo articolo usa i certificati demo. In un ambiente di produzione usare i certificati dell'autorità di certificazione.
Per generare i certificati demo e installarli nel dispositivo gateway:
Usare SSH per connettersi e accedere alla macchina virtuale del dispositivo gateway. È possibile trovare il nome DNS per questa macchina virtuale nel portale di Azure. Passare alla macchina virtuale edgegateway nel gruppo di risorse in ingresso-scenario .
Suggerimento
Potrebbe essere necessario aprire la porta 22 per l'accesso SSH in entrambe le macchine virtuali prima di poter usare SSH per connettersi dal computer locale o da Azure Cloud Shell.
Eseguire i comandi seguenti per clonare il repository IoT Edge e generare i certificati demo:
# Clone the repo cd ~ git clone https://github.com/Azure/iotedge.git # Generate the demo certificates mkdir certs cd certs cp ~/iotedge/tools/CACertificates/*.cnf . cp ~/iotedge/tools/CACertificates/certGen.sh . ./certGen.sh create_root_and_intermediate ./certGen.sh create_edge_device_ca_certificate "mycacert"
Dopo aver eseguito i comandi precedenti, i file seguenti sono pronti per l'uso nei passaggi successivi:
- ~/certs/certs/azure-iot-test-only.root.ca.cert.pem - Certificato CA radice usato per creare tutti gli altri certificati demo per testare uno scenario IoT Edge.
- ~/certs/certs/iot-edge-device-mycacert-full-chain.cert.pem - Certificato ca del dispositivo a cui viene fatto riferimento dal file config.yaml . In uno scenario gateway, questo certificato della CA è il modo in cui il dispositivo IoT Edge verifica l'identità dei dispositivi downstream.
- ~/certs/private/iot-edge-device-mycacert.key.pem : chiave privata associata al certificato della CA del dispositivo.
Per altre informazioni su questi certificati demo, vedere Creare certificati demo per testare le funzionalità dei dispositivi IoT Edge.
Aprire il file config.toml in un editor di testo. Ad esempio:
sudo nano /etc/aziot/config.toml
Rimuovere il commento e modificare le impostazioni del certificato come indicato di seguito:
trust_bundle_cert = "file:///home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem" ... [edge_ca] cert = "file:///home/AzureUser/certs/certs/iot-edge-device-ca-mycacert-full-chain.cert.pem" pk = "file:///home/AzureUser/certs/private/iot-edge-device-ca-mycacert.key.pem"
L'esempio precedente presuppone che l'accesso sia stato eseguito come AzureUser e che sia stato creato un certificato della CA del dispositivo denominato "mycacert".
Salvare le modifiche ed eseguire il comando seguente per verificare che il file config.toml sia corretto:
sudo iotedge check
Riavviare il runtime di IoT Edge:
sudo iotedge config apply
Se il runtime di IoT Edge viene avviato correttamente dopo le modifiche, lo stato dei moduli di $edgeAgent e $edgeHub cambia in In esecuzione. È possibile visualizzare questi valori di stato nella pagina Moduli per il dispositivo gateway in IoT Central.
Se il runtime non viene avviato, controllare le modifiche apportate in config.toml e vedere Risolvere i problemi del dispositivo IoT Edge.
Connessione dispositivo downstream al dispositivo IoT Edge
Per connettere un dispositivo downstream al dispositivo gateway IoT Edge:
Usare SSH per connettersi e accedere alla macchina virtuale del dispositivo downstream. È possibile trovare il nome DNS per questa macchina virtuale nel portale di Azure. Passare alla macchina virtuale leafdevice nel gruppo di risorse in ingresso-scenario .
Suggerimento
Potrebbe essere necessario aprire la porta 22 per l'accesso SSH in entrambe le macchine virtuali prima di poter usare SSH per connettersi dal computer locale o da Azure Cloud Shell.
Per clonare il repository GitHub con il codice sorgente per il dispositivo downstream di esempio, eseguire il comando seguente:
cd ~ git clone https://github.com/iot-for-all/iot-central-transform-with-iot-edge
Per copiare il certificato richiesto dal dispositivo gateway, eseguire i comandi seguenti
scp
. Questoscp
comando usa il nomeedgegateway
host per identificare la macchina virtuale del gateway. Viene richiesta la password:cd ~/iot-central-transform-with-iot-edge scp AzureUser@edgegateway:/home/AzureUser/certs/certs/azure-iot-test-only.root.ca.cert.pem leafdevice/certs
Passare alla cartella leafdevice e installare i pacchetti necessari. Eseguire quindi gli script e
start
per effettuare ilbuild
provisioning e connettere il dispositivo al gateway:cd ~/iot-central-transform-with-iot-edge/leafdevice sudo apt update curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt-get install nodejs npm install npm run-script build npm run-script start
Durante
sudo apt-get install nodejs
i comandi, potrebbe essere richiesto di consentire le installazioni: premereY
se richiesto.Immettere l'ID dispositivo, l'ID ambito e la chiave di firma di accesso condiviso per il dispositivo downstream creato in precedenza. Per il nome host immettere
edgegateway
. L'output del comando è simile al seguente:Registering device downstream-01 with scope 0ne00284FD9 Registered device downstream-01. Connecting device downstream-01 Connected device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01 Sent telemetry for device downstream-01
Per semplicità, il codice per il dispositivo downstream effettua il provisioning del dispositivo in IoT Central. In genere, i dispositivi downstream si connettono tramite un gateway perché non possono connettersi a Internet e quindi non possono connettersi all'endpoint del servizio Device Provisioning. Per altre informazioni, vedere Come connettere i dispositivi tramite un gateway trasparente IoT Edge.
Verificare
Per verificare che lo scenario sia in esecuzione, passare al dispositivo gateway IoT Edge in IoT Central:
Selezionare Moduli. Verificare che i tre moduli IoT Edge $edgeAgent, $edgeHub e transformmodule siano in esecuzione.
Selezionare Dati non elaborati. I dati di telemetria nella colonna Dispositivo sono simili ai seguenti:
{"deviceId":"downstream-01"}
I dati di telemetria nella colonna Misure hanno un aspetto simile al seguente:
{"temperature":85.21208,"pressure":59.97321,"humidity":77.718124,"scale":"farenheit"}
La temperatura viene inviata in Fahrenheit. Poiché il dispositivo IoT Edge sta trasformando i dati dal dispositivo downstream, i dati di telemetria sono associati al dispositivo gateway in IoT Central. Per visualizzare i dati di telemetria trasformati, creare una visualizzazione nel modello di dispositivo gateway IoT Edge e ripubblicarla.
Trasformazione dei dati in uscita
È possibile connettere i dispositivi a IoT Central, esportare i dati del dispositivo in un motore di calcolo per trasformarli e quindi inviare i dati trasformati a IoT Central per la gestione e l'analisi dei dispositivi. Ad esempio:
- I dispositivi inviano dati sulla posizione a IoT Central.
- IoT Central esporta i dati in un motore di calcolo che migliora i dati sulla posizione con le informazioni meteo.
- Il motore di calcolo invia i dati avanzati a IoT Central.
È possibile usare il bridge di dispositivi IoT Central come motore di calcolo per trasformare i dati esportati da IoT Central.
Un vantaggio della trasformazione dei dati in uscita è che i dispositivi si connettono direttamente a IoT Central, semplificando l'invio di comandi ai dispositivi o l'aggiornamento delle proprietà del dispositivo. Tuttavia, con questo metodo, è possibile usare più messaggi rispetto all'allocazione mensile e aumentare il costo dell'uso di Azure IoT Central.
Usare il bridge di dispositivi IoT Central per trasformare i dati dei dispositivi
In questo scenario, un motore di calcolo trasforma i dati dei dispositivi esportati da IoT Central prima di inviarli all'applicazione IoT Central. A livello generale, i passaggi per configurare questo scenario sono:
Configurare il motore di calcolo: creare un bridge di dispositivi IoT Central per fungere da motore di calcolo per la trasformazione dei dati.
Trasformare i dati del dispositivo nel bridge di dispositivi: trasformare i dati nel bridge di dispositivo modificando il codice della funzione bridge del dispositivo per il caso d'uso della trasformazione dei dati.
Abilitare il flusso di dati da IoT Central al bridge di dispositivi: esportare i dati da IoT Central al bridge del dispositivo per la trasformazione. Inoltrare quindi i dati trasformati a IoT Central. Quando si crea l'esportazione dei dati, usare i filtri delle proprietà dei messaggi per esportare solo i dati non tradotti.
Verifica: Connessione il dispositivo nell'app IoT Central e verificare sia i dati non elaborati del dispositivo che i dati trasformati in IoT Central.
Nell'esempio descritto nelle sezioni seguenti il dispositivo invia i dati CSV nel formato seguente al dispositivo gateway IoT Edge:
"<temperature in degrees C>, <humidity>, <latitude>, <longitude>"
Usare il bridge del dispositivo per trasformare i dati del dispositivo in base a:
- Modifica dell'unità di temperatura da centigrade a fahrenheit.
- Arricchire i dati del dispositivo con i dati meteo estratti dal servizio Open Weather per i valori di latitudine e longitudine.
Il bridge del dispositivo invia quindi i dati trasformati a IoT Central nel formato seguente:
{
"temp": <temperature in degrees F>,
"humidity": <humidity>,
"lat": <latitude>,
"lon": <logitude>,
"weather": {
"weather_temp": <temperature at lat/lon>,
"weather_humidity": <humidity at lat/lon>,
"weather_pressure": <pressure at lat/lon>,
"weather_windspeed": <wind speed at lat/lon>,
"weather_clouds": <cloud cover at lat/lon>,
"weather_uvi": <UVI at lat/lon>
}
}
I passaggi seguenti illustrano come configurare e configurare questo scenario:
Recuperare le impostazioni di connessione IoT Central
Prima di configurare questo scenario, è necessario ottenere alcune impostazioni di connessione dall'applicazione IoT Central:
Accedere all'applicazione IoT Central.
Passare a Autorizzazioni Gruppi > di connessioni dispositivo.
Prendere nota dell'ambito ID. Questo valore verrà usato in un secondo momento.
Selezionare il gruppo di registrazione SaS-IoT-Devices . Prendere nota della chiave primaria della firma di accesso condiviso. Questo valore verrà usato in un secondo momento.
Configurare un motore di calcolo
Questo scenario usa la stessa distribuzione Funzioni di Azure del bridge di dispositivi IoT Central. Per distribuire il bridge del dispositivo, selezionare il pulsante Distribuisci in Azure visualizzato dopo la tabella seguente. Usare le informazioni nella tabella per completare il modulo Distribuzione personalizzata:
Campo | valore |
---|---|
Gruppo di risorse | Creare un nuovo gruppo di risorse denominato egress-scenario |
Paese | Selezionare l'area più vicina. |
ID Ambito | Usare l'ambito ID annotato in precedenza. |
Chiave di firma di accesso condiviso di IoT Central | Usare la chiave primaria della firma di accesso condiviso per il gruppo di registrazione SaS-IoT-Devices . Questo valore è stato annotato in precedenza. |
Selezionare Rivedi e crea e quindi Crea. La creazione della funzione di Azure e delle risorse correlate nel gruppo di risorse dello scenario in uscita richiede alcuni minuti.
Trasformare i dati del dispositivo nel bridge del dispositivo
Per configurare il bridge del dispositivo per trasformare i dati del dispositivo esportati:
Ottenere una chiave API dell'applicazione dal servizio Open Weather. Un account è gratuito con un utilizzo limitato del servizio. Per creare una chiave API dell'applicazione, creare un account nel portale del servizio Open Weather e seguire le istruzioni. Usare la chiave API Open Weather in un secondo momento.
Nella portale di Azure passare a App per le funzioni nel gruppo di risorse in uscita.
Nel riquadro di spostamento a sinistra, in Strumenti di sviluppo selezionare servizio app Editor (anteprima).
Selezionare Vai → per aprire la pagina editor servizio app. Apportare le modifiche seguenti:
Aprire il file wwwroot/IoTCIntegration/index.js . Sostituire tutto il codice in questo file con il codice in index.js.
Nella nuova index.js aggiornare il file di
openWeatherAppId
variabile con la chiave API Open Weather ottenuta in precedenza.const openWeatherAppId = '<Your Open Weather API Key>'
Aggiungere una proprietà del messaggio ai dati inviati dalla funzione a IoT Central. IoT Central usa questa proprietà per impedire l'esportazione dei dati trasformati. Per apportare questa modifica, aprire il file wwwroot/IoTCIntegration/lib/engine.js . Individuare il seguente codice:
if (timestamp) { message.properties.add('iothub-creation-time-utc', timestamp); }
Aggiungere il codice seguente subito dopo il codice nel frammento di codice precedente:
// add a message property that we can look for in data export to not re-compute computed telemetry message.properties.add('computed', true);
Per riferimento, è possibile visualizzare un esempio completo del file engine.js .
Nell'editor di servizio app selezionare Console nel riquadro di spostamento a sinistra. Eseguire i comandi seguenti per installare i pacchetti necessari:
cd IoTCIntegration npm install
L'esecuzione del comando può richiedere alcuni minuti.
Tornare alla pagina Panoramica della funzione di Azure e riavviare la funzione:
Selezionare Funzioni nel riquadro di spostamento a sinistra. Selezionare quindi IoTCIntegration (Integrazione IoTC). Selezionare Codice e test.
Prendere nota dell'URL della funzione. Questo valore sarà necessario in un secondo momento:
Abilitare il flusso di dati da IoT Central al bridge del dispositivo
Questa sezione descrive come configurare l'applicazione Azure IoT Central.
Prima di tutto, salvare il file del modello di dispositivo nel computer locale.
Per aggiungere un modello di dispositivo all'applicazione IoT Central, passare all'applicazione IoT Central e quindi:
Accedere all'applicazione IoT Central e passare alla pagina Modelli di dispositivo.
Selezionare + Nuovo, selezionare Dispositivo IoT, selezionare Avanti: Personalizza, immettere Modello di calcolo come nome del modello. Selezionare Successivo: Revisione. Selezionare Crea.
Selezionare Importa un modello e passare al file model.json scaricato in precedenza.
Dopo l'importazione del modello, selezionare Pubblica per pubblicare il modello di dispositivo modello di calcolo.
Configurare l'esportazione dei dati per inviare dati al bridge del dispositivo:
Nell'applicazione IoT Central selezionare Esportazione dati.
Selezionare + Nuova destinazione per creare una destinazione da usare con il bridge del dispositivo. Chiamare la funzione di calcolo di destinazione per Tipo di destinazione selezionare Webhook. Per l'URL di callback selezionare Incolla nell'URL della funzione annotato in precedenza. Lasciare l'autorizzazione senza autenticazione.
Salvare le modifiche.
Selezionare + Nuova esportazione e creare un'esportazione di dati denominata Esportazione calcolo.
Aggiungere un filtro per esportare solo i dati del dispositivo per il modello di dispositivo in uso. Selezionare + Filtro, selezionare Modello di dispositivo, selezionare l'operatore Uguale a e selezionare il modello di dispositivo modello di calcolo creato.
Aggiungere un filtro di messaggio per distinguere i dati trasformati e non trasformati. Questo filtro impedisce l'invio di valori trasformati al bridge del dispositivo. Selezionare + Filtro proprietà messaggio e immettere il valore del nome calcolato, quindi selezionare l'operatore Non esiste. La stringa
computed
viene usata come parola chiave nel codice di esempio del bridge di dispositivo.Per la destinazione, selezionare la destinazione della funzione di calcolo creata in precedenza.
Salvare le modifiche. Dopo un minuto o così via, lo stato esportazione viene visualizzato come Integro.
Verificare
Il dispositivo di esempio usato per testare lo scenario viene scritto in Node.js. Assicurarsi di avere installato Node.js e npm nel computer locale. Se non si vogliono installare questi prerequisiti, usare Azure Cloud Shell in cui sono preinstallati.
Per eseguire un dispositivo di esempio che testa lo scenario:
Clonare il repository GitHub che contiene il codice di esempio, eseguire il comando seguente:
git clone https://github.com/Azure/iot-central-compute
Per connettere il dispositivo di esempio all'applicazione IoT Central, modificare le impostazioni di connessione nel file iot-central-compute/device/device.js . Sostituire l'ID ambito e la chiave di firma di accesso condiviso del gruppo con i valori annotato in precedenza:
// These values need to be filled in from your Azure IoT Central application // const scopeId = "<IoT Central Scope Id value>"; const groupSasKey = "<IoT Central Group SAS key>"; //
Salvare le modifiche.
Usare i comandi seguenti per installare i pacchetti necessari ed eseguire il dispositivo:
cd ~/iot-central-compute/device npm install node device.js
Il risultato di questo comando è simile all'output seguente:
registration succeeded assigned hub=iotc-2bd611b0....azure-devices.net deviceId=computeDevice Client connected send status: MessageEnqueued [{"data":"33.23, 69.09, 30.7213, -61.1192"}] send status: MessageEnqueued [{"data":"2.43, 75.86, -2.6358, 162.935"}] send status: MessageEnqueued [{"data":"6.19, 76.55, -14.3538, -82.314"}] send status: MessageEnqueued [{"data":"33.26, 48.01, 71.9172, 48.6606"}] send status: MessageEnqueued [{"data":"40.5, 36.41, 14.6043, 14.079"}]
Nell'applicazione IoT Central passare al dispositivo denominato computeDevice. Nella visualizzazione Dati non elaborati sono presenti due flussi di telemetria diversi che vengono visualizzati ogni cinque secondi. Il flusso con dati non modellati è la telemetria originale, il flusso con dati modellati è costituito dai dati trasformati dalla funzione:
Pulire le risorse
Se le risorse di Azure create durante la procedura descritta in questa guida non sono più necessarie, eliminare i gruppi di risorse nella portale di Azure.
I due gruppi di risorse usati in questa guida sono scenario in ingresso e in uscita.
Passaggi successivi
In questo articolo sono state illustrate le diverse opzioni per trasformare i dati dei dispositivi per IoT Central, sia in ingresso che in uscita. L'articolo include le procedure dettagliate per due scenari specifici:
- Usare un modulo IoT Edge per trasformare i dati dai dispositivi downstream prima che i dati vengano inviati all'applicazione IoT Central.
- Usare Funzioni di Azure per trasformare i dati all'esterno di IoT Central. In questo scenario, IoT Central usa un'esportazione di dati per inviare dati in ingresso a una funzione di Azure da trasformare. La funzione invia nuovamente i dati trasformati all'applicazione IoT Central.
Dopo aver appreso come trasformare i dati dei dispositivi all'esterno dell'applicazione Azure IoT Central, è possibile imparare a usare Esplora dati per analizzare i dati dei dispositivi in IoT Central.