Esercitazione: Usare hub IoT di Azure arricchimenti dei messaggi
Gli arricchimenti dei messaggi sono la possibilità di hub IoT di Azure di stampare i messaggi con informazioni aggiuntive prima che i messaggi vengano inviati all'endpoint designato. Un motivo per usare gli arricchimenti dei messaggi consiste nell'includere dati che possono essere usati per semplificare l'elaborazione downstream. Ad esempio, l'arricchimento dei messaggi dei dispositivi con un tag di dispositivo gemello può ridurre il carico nei clienti per effettuare chiamate API di dispositivo gemello per queste informazioni. Per altre informazioni, vedere Panoramica degli arricchimenti dei messaggi.
Nella prima parte di questa esercitazione è stato illustrato come creare endpoint personalizzati e instradare messaggi ad altri servizi di Azure. In questa esercitazione viene illustrato come creare e configurare le risorse aggiuntive necessarie per testare gli arricchimenti dei messaggi per un hub IoT. Le risorse includono un secondo contenitore di archiviazione per un account di archiviazione esistente (creato nella prima parte dell'esercitazione) per contenere i messaggi arricchiti e una route di messaggi per inviarli. Al termine delle configurazioni per il routing dei messaggi e gli arricchimenti dei messaggi, si usa un'applicazione per inviare messaggi all'hub IoT. L'hub li instrada quindi a entrambi i contenitori di archiviazione. Vengono arricchiti solo i messaggi inviati all'endpoint per il contenitore di archiviazione arricchita .
In questa esercitazione si eseguono le seguenti attività:
- Creare un secondo contenitore nell'account di archiviazione.
- Creare un altro endpoint personalizzato e indirizzare i messaggi dall'hub IoT.
- Configurare gli arricchimenti dei messaggi indirizzati al nuovo endpoint.
- Eseguire un'app che simula un dispositivo IoT che invia messaggi all'hub.
- Visualizzare i risultati e verificare che gli arricchimenti dei messaggi vengano applicati ai messaggi di destinazione.
Prerequisiti
È necessario disporre di una sottoscrizione di Azure. Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Esercitazione completata: inviare i dati del dispositivo ad Archiviazione di Azure usando hub IoT routing dei messaggi e mantenere le risorse create.
Assicurarsi che la porta 8883 sia aperta nel firewall. L'esempio di dispositivo di questa esercitazione usa il protocollo MQTT, che comunica tramite la porta 8883. Questa porta potrebbe essere bloccata in alcuni ambienti di rete aziendali e didattici. Per altre informazioni e soluzioni alternative per questo problema, vedere Connettersi all'hub IoT (MQTT).
Non esistono altri prerequisiti per il portale di Azure.
Creare un secondo contenitore nell'account di archiviazione
Nella prima parte di questa esercitazione è stato creato un account di archiviazione e un contenitore per i messaggi indirizzati. A questo punto è necessario creare un secondo contenitore per i messaggi arricchiti.
Nella portale di Azure cercare gli account di archiviazione.
Selezionare l'account creato in precedenza.
Nel menu account di archiviazione selezionare Contenitori nella sezione Archiviazione dati .
Selezionare Contenitore per creare il nuovo contenitore.
Assegnare un nome al contenitore
enriched
e selezionare Crea.
Instradare i messaggi a un secondo endpoint
Creare un secondo endpoint e indirizzare i messaggi arricchiti.
Nel portale di Azure passare all'hub IoT.
Nel menu della risorsa in Impostazioni hub selezionare Routing messaggi e quindi Aggiungi.
Nella scheda Endpoint creare un endpoint di archiviazione fornendo le informazioni seguenti:
Parametro Valore Tipo di endpoint Selezionare Archiviazione. Nome endpoint Immettere ContosoStorageEndpointEnriched
.Contenitore di archiviazione di Azure Scegliere Selezionare un contenitore. Seguire le istruzioni per selezionare l'account di archiviazione e il contenitore arricchito creato nella sezione precedente. Encoding Selezionare JSON. Se questo campo è disattivato, l'area dell'account di archiviazione non supporta JSON. In tal caso, continuare con l'AVRO predefinito. Accettare i valori predefiniti per il resto dei parametri e selezionare Crea + avanti.
Continuare a creare la nuova route, ora che è stato aggiunto l'endpoint di archiviazione. Specificare le informazioni seguenti per la nuova route:
Parametro Valore Nome ContosoStorageRouteEnriched Origine dati Verificare che i messaggi di telemetria del dispositivo siano selezionati dall'elenco a discesa. Abilitare la route Verificare che questo campo sia impostato su enabled
.Query di routing immettere level="storage"
come stringa di query.Selezionare Crea + aggiungi arricchimenti.
Aggiungere l'arricchimento dei messaggi al nuovo endpoint
Creare tre arricchimenti dei messaggi che verranno indirizzati al contenitore di archiviazione arricchito .
Nella scheda Arricchimento della procedura guidata Aggiungi una route aggiungere tre arricchimenti dei messaggi per i messaggi che passano all'endpoint per il contenitore di archiviazione denominato arricchito.
Aggiungere questi valori come arricchimenti dei messaggi per l'endpoint ContosoStorageEndpointEnriched:
Nome Valore myIotHub $hubname
DeviceLocation $twin.tags.location
(presuppone che il dispositivo gemello abbia un tag di posizione)Customerid 6ce345b8-1e4a-411e-9398-d34587459a3a
Al termine, gli arricchimenti dovrebbero essere simili a questa immagine:
Selezionare Aggiungi per aggiungere gli arricchimenti dei messaggi.
Sono ora disponibili arricchimenti dei messaggi configurati per tutti i messaggi indirizzati all'endpoint creato per i messaggi arricchiti. Se non si vuole aggiungere un tag di posizione al dispositivo gemello, è possibile passare alla sezione Arricchimenti messaggi di test per continuare l'esercitazione.
Aggiungere il tag di posizione al dispositivo gemello
Uno degli arricchimenti dei messaggi configurati nell'hub IoT specifica una chiave di DeviceLocation con il relativo valore determinato dal percorso del dispositivo gemello seguente: $twin.tags.location
. Se il dispositivo gemello non ha un tag di posizione, il percorso gemello, $twin.tags.location
verrà stampato come stringa per la chiave DeviceLocation negli arricchimenti dei messaggi.
Seguire questa procedura per aggiungere un tag di posizione al gemello del dispositivo:
Passare all'hub IoT nel portale di Azure.
Selezionare Dispositivi nel menu di spostamento dell'hub IoT e quindi selezionare il dispositivo.
Selezionare la scheda Dispositivo gemello nella parte superiore della pagina del dispositivo e aggiungere la riga seguente appena prima della parentesi graffe di chiusura nella parte inferiore del dispositivo gemello. Selezionare quindi Salva.
, "tags": {"location": "Plant 43"}
Suggerimento
Attendere circa cinque minuti prima di continuare alla sezione successiva. Può richiedere fino a quel periodo per gli aggiornamenti al dispositivo gemello da riflettere nei valori di arricchimento dei messaggi.
Per altre informazioni sul modo in cui vengono gestiti i percorsi dei dispositivi gemelli con arricchimenti dei messaggi, vedere Limitazioni degli arricchimenti dei messaggi. Per altre informazioni sui dispositivi gemelli, vedere Comprendere e usare i dispositivi gemelli in hub IoT.
Testare gli arricchimenti dei messaggi
Dopo aver configurato gli arricchimenti dei messaggi per l'endpoint ContosoStorageEndpointEnriched , eseguire l'applicazione del dispositivo simulato per inviare messaggi all'hub IoT. A questo punto, il routing dei messaggi è stato configurato come segue:
I messaggi indirizzati all'endpoint di archiviazione creato nella prima parte dell'esercitazione non verranno arricchiti e verranno archiviati nel contenitore di archiviazione creato.
I messaggi indirizzati all'endpoint di archiviazione ContosoStorageEndpointEnriched verranno arricchiti e archiviati nel contenitore di archiviazione arricchiti.
Se non si esegue ancora l'applicazione console SimulatedDevice dalla prima parte di questa esercitazione, eseguirla di nuovo:
Suggerimento
Se si seguono i passaggi dell'interfaccia della riga di comando di Azure per questa esercitazione, eseguire il codice di esempio in una sessione separata. In questo modo, è possibile consentire al codice di esempio di continuare l'esecuzione mentre si seguono i passaggi rimanenti dell'interfaccia della riga di comando.
Nella cartella di esempio passare alla
/iot-hub/Tutorials/Routing/SimulatedDevice/
cartella.Le definizioni delle variabili aggiornate prima devono comunque essere valide, ma, se non, modificarle nel
Program.cs
file:Trovare le definizioni delle variabili nella parte superiore della classe Program . Aggiornare le variabili seguenti con le proprie informazioni:
- s_myDeviceId: ID dispositivo assegnato durante la registrazione del dispositivo nell'hub IoT.
- s_iotHubUri: nome host dell'hub IoT, che accetta il formato
IOTHUB_NAME.azure-devices.net
. - s_deviceKey: chiave primaria del dispositivo trovata nelle informazioni sull'identità del dispositivo.
Salvare e chiudere il file.
Eseguire il codice di esempio:
dotnet run
Dopo aver lasciato l'applicazione console da eseguire per alcuni minuti, visualizzare i dati:
Nel portale di Azure passare all'account di archiviazione.
Selezionare Browser di archiviazione dal menu di spostamento. Selezionare Contenitori BLOB per visualizzare i due contenitori creati nel corso di queste esercitazioni.
I messaggi nel contenitore denominati arricchiti hanno gli arricchimenti dei messaggi inclusi nei messaggi. I messaggi nel contenitore creati in precedenza hanno i messaggi non elaborati senza arricchimenti. Eseguire il drill-down nel contenitore arricchito fino a quando non si arriva alla fine e quindi aprire il file di messaggio più recente. Fare quindi lo stesso per l'altro contenitore per verificare che uno sia arricchito e non sia.
Quando si esaminano i messaggi arricchiti, si dovrebbe visualizzare "myIotHub"
con il nome dell'hub, la posizione e l'ID cliente, come illustrato di seguito:
{
"EnqueuedTimeUtc":"2019-05-10T06:06:32.7220000Z",
"Properties":
{
"level":"storage",
"myIotHub":"{your hub name}",
"DeviceLocation":"Plant 43",
"customerID":"6ce345b8-1e4a-411e-9398-d34587459a3a"
},
"SystemProperties":
{
"connectionDeviceId":"Contoso-Test-Device",
"connectionAuthMethod":"{\"scope\":\"device\",\"type\":\"sas\",\"issuer\":\"iothub\",\"acceptingIpFilterRule\":null}",
"connectionDeviceGenerationId":"636930642531278483",
"enqueuedTime":"2019-05-10T06:06:32.7220000Z"
},"Body":"eyJkZXZpY2VJZCI6IkNvbnRvc28tVGVzdC1EZXZpY2UiLCJ0ZW1wZXJhdHVyZSI6MjkuMjMyMDE2ODQ4MDQyNjE1LCJodW1pZGl0eSI6NjQuMzA1MzQ5NjkyODQ0NDg3LCJwb2ludEluZm8iOiJUaGlzIGlzIGEgc3RvcmFnZSBtZXNzYWdlLiJ9"
}
Pulire le risorse
Per rimuovere tutte le risorse create in entrambe le parti di questa esercitazione, eliminare il gruppo di risorse. Questa azione elimina tutte le risorse contenute all'interno del gruppo. Se non si vuole eliminare l'intero gruppo di risorse, è possibile selezionare singole risorse all'interno per eliminare.
- Nella portale di Azure passare al gruppo di risorse che contiene l'hub IoT e l'account di archiviazione per questa esercitazione.
- Esaminare tutte le risorse presenti nel gruppo di risorse per determinare quali risorse si desidera pulire.
- Se si vuole eliminare tutte le risorse, selezionare Elimina gruppo di risorse.
- Se si vuole eliminare una determinata risorsa, usare le caselle di controllo accanto a ogni nome di risorsa per selezionare quelle che si desidera eliminare. Selezionare Elimina.
Passaggi successivi
In questa esercitazione sono stati configurati e testati gli arricchimenti dei messaggi per hub IoT messaggi quando vengono indirizzati a un endpoint.
Per altre informazioni sugli arricchimenti dei messaggi, vedere Panoramica degli arricchimenti dei messaggi.
Per altre informazioni su hub IoT, continuare con l'esercitazione successiva.