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

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.

  1. Nella portale di Azure cercare gli account di archiviazione.

  2. Selezionare l'account creato in precedenza.

  3. Nel menu account di archiviazione selezionare Contenitori nella sezione Archiviazione dati .

  4. Selezionare Contenitore per creare il nuovo contenitore.

    Screenshot della creazione di un contenitore di archiviazione.

  5. Assegnare un nome al contenitore enrichede selezionare Crea.

Instradare i messaggi a un secondo endpoint

Creare un secondo endpoint e indirizzare i messaggi arricchiti.

  1. Nel portale di Azure passare all'hub IoT.

  2. Nel menu della risorsa in Impostazioni hub selezionare Routing messaggi e quindi Aggiungi.

    Screenshot che mostra la posizione del pulsante Aggiungi per aggiungere una nuova route nell'hub IoT.

  3. 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.

    Screenshot che mostra la selezione di un contenitore per un endpoint.

  4. Accettare i valori predefiniti per il resto dei parametri e selezionare Crea + avanti.

  5. 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.

    Screenshot che mostra il salvataggio delle informazioni sulla query di routing.

  6. 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 .

  1. 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:

    Screenshot della tabella con tutti gli arricchimenti aggiunti.

  2. 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.locationverrà stampato come stringa per la chiave DeviceLocation negli arricchimenti dei messaggi.

Seguire questa procedura per aggiungere un tag di posizione al gemello del dispositivo:

  1. Passare all'hub IoT nel portale di Azure.

  2. Selezionare Dispositivi nel menu di spostamento dell'hub IoT e quindi selezionare il dispositivo.

  3. 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"}
    

    Screenshot dell'aggiunta del tag di posizione al dispositivo gemello in portale di Azure.

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.

  1. Nella cartella di esempio passare alla /iot-hub/Tutorials/Routing/SimulatedDevice/ cartella.

  2. Le definizioni delle variabili aggiornate prima devono comunque essere valide, ma, se non, modificarle nel Program.cs file:

    1. 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.
    2. Salvare e chiudere il file.

  3. Eseguire il codice di esempio:

    dotnet run
    

Dopo aver lasciato l'applicazione console da eseguire per alcuni minuti, visualizzare i dati:

  1. Nel portale di Azure passare all'account di archiviazione.

  2. Selezionare Browser di archiviazione dal menu di spostamento. Selezionare Contenitori BLOB per visualizzare i due contenitori creati nel corso di queste esercitazioni.

    Screenshot che mostra i contenitori BLOB nell'account di archiviazione.

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.

  1. Nella portale di Azure passare al gruppo di risorse che contiene l'hub IoT e l'account di archiviazione per questa esercitazione.
  2. 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.