Ordinare gli eventi di connessione dei dispositivi dall'hub IoT di Azure tramite Azure Cosmos DB

Griglia di eventi di Azure consente di creare applicazioni basate su eventi e integrare facilmente eventi IoT nelle soluzioni aziendali. Questo articolo illustra una configurazione con Cosmos DB, App per la logica, eventi hub IoT e un dispositivo Raspberry Pi simulato per raccogliere e archiviare eventi di connessione e disconnessione di un dispositivo.

Dal momento in cui viene eseguito il dispositivo, viene attivato un ordine di operazioni:

  1. Il dispositivo Pi, usando la chiave del dispositivo dell'hub IoT, viene avviato e quindi arrestato

  2. Un evento hub IoT acquisisce l'attività del dispositivo, quindi invia una richiesta HTTP all'app per la logica

  3. L'app per la logica elabora la richiesta HTTP in base a una condizione impostata

  4. L'app per la logica registra gli eventi di connessione o disconnessione in un nuovo documento in Cosmos DB

    Screenshot della configurazione che verrà creata per questo articolo. Questa configurazione mostra come tutti i servizi e i dispositivi sono connessi.

Prerequisiti

Creare un'app per la logica

Creare un'app per la logica e aggiungere un trigger di Griglia di eventi che monitora il gruppo di risorse per la macchina virtuale.

Creare una risorsa di App per la logica

  1. Nel portale di Azure, selezionare +Crea una risorsa, Integrazione e quindi App per la logica.

    Screenshot di come trovare e selezionare un'app per la logica nel portale di Azure.

  2. Completare il modulo per creare una nuova app per la logica che include:

    • Sottoscrizione in uso

    • Il gruppo di risorse (o crearne uno nuovo)

    • Nome dell'app per la logica univoco nella sottoscrizione

    • Area dell'hub IoT

    • No per l'abilitazione di Log Analytics

    • Tipo di piano a consumo

      Nota

      Il tipo di piano a consumo è l'opzione che abilita la finestra di progettazione dell'app per la logica nell'interfaccia utente. Se si sceglie Standard (impostazione predefinita), è necessario creare un nuovo flusso di lavoro affinché la finestra di progettazione dell'app per la logica diventi disponibile.

    Screenshot di come creare un'app per la logica nel portale di Azure.

  3. Selezionare Rivedi e crea per esaminare la configurazione e quindi selezionare Crea per creare l'app per la logica.

  4. È stata creata ora una risorsa di Azure per l'app per la logica. Dopo che Azure ha distribuito l'app per la logica, selezionare Vai alla risorsa. Progettazione app per la logica mostra i modelli per i modelli comuni in modo da poter iniziare più rapidamente.

  5. Nella finestra di progettazione dell'app per la logica scorrere fino a visualizzare la sezione Modelli , quindi scegliere App per la logica vuota in modo da poter compilare l'app per la logica da zero.

Selezionare un trigger

Un trigger è un evento specifico che avvia l'app per la logica. Per questa esercitazione, il trigger che attiva il flusso di lavoro riceve una richiesta tramite HTTP.

  1. Nella barra di ricerca dei trigger e dei connettori digitare HTTP e premere Invio.

  2. Selezionare la richiesta Quando viene ricevuta una richiesta HTTP come trigger.

    Screenshot di come trovare il trigger di richiesta HTTP selezionato.

  3. Selezionare Usare il payload di esempio per generare lo schema.

    Screenshot di come usare un payload di esempio per generare uno schema.

  4. Incollare il codice JSON di esempio seguente nella casella di testo e quindi selezionare Fine.

    Questo codice JSON viene usato solo come modello, quindi i valori esatti non sono importanti.

    [{
     "id": "fbfd8ee1-cf78-74c6-dbcf-e1c58638ccbd",
     "topic":
       "/SUBSCRIPTIONS/DEMO5CDD-8DAB-4CF4-9B2F-C22E8A755472/RESOURCEGROUPS/EGTESTRG/PROVIDERS/MICROSOFT.DEVICES/IOTHUBS/MYIOTHUB",
     "subject": "devices/Demo-Device-1",
     "eventType": "Microsoft.Devices.DeviceConnected",
     "eventTime": "2018-07-03T23:20:11.6921933+00:00",
     "data": {
       "deviceConnectionStateEventInfo": {
         "sequenceNumber":
           "000000000000000001D4132452F67CE200000002000000000000000000000001"
       },
       "hubName": "MYIOTHUB",
       "deviceId": "48e44e11-1437-4907-83b1-4a8d7e89859e",
       "moduleId": ""
     },
     "dataVersion": "1",
     "metadataVersion": "1"
    }]
    

    Screenshot del payload JSON di esempio incollato nella casella di testo in Azure.

Creare una condizione

Le condizioni consentono di eseguire azioni specifiche dopo aver superato tale condizione specifica. Per questo articolo, la condizione consiste nel verificare se eventType è connesso al dispositivo o al dispositivo disconnesso. L'azione eseguita quando eventType è true è la creazione di un documento in Azure Cosmos DB. Questa condizione viene creata nella finestra di progettazione dell'app per la logica.

  1. Selezionare + Nuovo passaggio, quindi la scheda Predefinita , quindi trovare e selezionare il controllo denominato Condizione.

  2. Nella condizione modificare And in Or, perché si vogliono acquisire eventi di connessione o eventi di disconnessione in un'unica analisi.

  3. Selezionare all'interno della casella Scegli un valore e viene visualizzato un popup, che mostra il contenuto dinamico , ovvero i campi che è possibile selezionare.

    • Scegliere eventType. Il popup si chiude e viene visualizzato Corpo viene inserito automaticamente in Selezionare un output dei passaggi precedenti. Selezionare Condizione per riaprire l'istruzione condizionale.

    • Mantenere l'oggetto è uguale al valore.

    • Digitare Microsoft.Devices.DeviceConnected come ultimo valore della riga.

    • Selezionare + Aggiungi per aggiungere un'altra riga.

    • Questa seconda riga è simile alla prima riga, ad eccezione degli eventi di disconnessione.

      Usare eventType, è uguale a e Microsoft.Devices.DeviceDisconnected per i valori di riga.

      Screenshot della condizione For Each completa.

  4. Nella finestra di dialogo se true fare clic su Aggiungi un'azione.

    Screenshot della casella

  5. Cercare Cosmos DB e selezionare Azure Cosmos DB - Creare o aggiornare il documento (V3)

    Screenshot della ricerca di Azure Cosmos DB.

  6. Viene visualizzato il pannello Crea o aggiorna documento (V3). Immettere questi valori per i campi:

    Nome dell'account Azure Cosmos DB: {Aggiungere il nome dell'account}

    ID database: ToDoList

    ID raccolta: Items

    Documento: scegliere Current item dall'elenco dei parametri di contenuto dinamico

    Screenshot che mostra un elemento Execute stored procedure (V3) con l'opzione 'Add new parameter' selezionata.

  7. Salvare l'app per la logica.

Copiare l'URL HTTP

Prima di uscire da Progettazione app per la logica, copiare l'URL su cui è in ascolto l'app per la logica per un trigger. Questo URL viene usato per configurare Griglia di eventi.

  1. Espandere la casella Di configurazione del trigger Quando viene ricevuta una richiesta HTTP selezionandola.

  2. Copiare il valore di URL POST HTTP facendo clic sul pulsante di copia che si trova accanto.

    Screenshot della posizione in cui trovare l'URL HTTP da copiare.

  3. Salvare questo URL in modo che sia possibile usarlo nella sezione successiva.

Configurare la sottoscrizione degli eventi dell'hub IoT

In questa sezione viene configurato l'hub IoT per la pubblicazione degli eventi che si verificano.

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

  2. Selezionare Eventi.

    Screenshot della posizione del pulsante Eventi nel menu hub IoT.

  3. Selezionare + Sottoscrizione di eventi.

    Creare una nuova sottoscrizione di eventi

  4. Compilare i dettagli della sottoscrizione di eventi: specificare un nome descrittivo e selezionare Schema griglia di eventi come schema eventi.

  5. Creare un nome di argomento di sistema per la risorsa hub IoT.

  6. Compilare i campi Tipi di evento. Nell'elenco a discesa selezionare solo Dispositivo connesso e Dispositivo disconnesso dal menu. Fare clic in un punto qualsiasi della schermata per chiudere l'elenco e salvare le selezioni.

    Impostare i tipi di evento da cercare

  7. Per Dettagli endpoint: come Tipo di endpoint selezionare Webhook, fare clic su Selezione endpoint, incollare l'URL copiato dall'app per la logica e confermare la selezione.

    URL di Selezione endpoint

  8. Il modulo dovrebbe avere un aspetto simile all'esempio seguente:

    Screenshot del modulo per creare una sottoscrizione di eventi.

    Selezionare Crea per salvare la sottoscrizione di eventi.

    Importante

    Attendere alcuni minuti per il processo dell'evento prima di eseguire il dispositivo. Ogni volta che i servizi di Azure vengono creati o modificati, avviando il passaggio successivo nella pipeline troppo presto potrebbero causare errori non necessari. Ad esempio, se l'hub IoT non è in uno stato attivo, non sarà pronto per ricevere eventi. Controllare la pagina Panoramica dell'hub IoT per verificare se l'hub IoT è in uno stato attivo o meno. In caso contrario, verrà visualizzato un avviso nella parte superiore della pagina.

    Screenshot di un errore hub IoT che indica che non è in uno stato attivo.

Eseguire il dispositivo e osservare gli eventi

Ora che la sottoscrizione dell'evento è configurata, è possibile testare la connessione di un dispositivo.

Registrare un dispositivo nell'hub IoT

  1. Dall'hub IoT selezionare Dispositivi.

  2. Selezionare + Aggiungi dispositivo nella parte superiore del riquadro.

  3. Per ID dispositivo immettere Demo-Device-1.

  4. Selezionare Salva.

    Screenshot del percorso del pulsante Aggiungi dispositivo.

  5. Fare di nuovo clic sul dispositivo. Verranno ora compilate le stringhe di connessione e le chiavi. Copiare e salvare la stringa di connessione primaria per un uso successivo.

    Screenshot della posizione della stringa di connessione primaria per il dispositivo.

Avviare il simulatore Raspberry Pi

È possibile usare il simulatore Web Raspberry Pi per simulare la connessione del dispositivo.

Avviare il simulatore Raspberry Pi

Eseguire un'applicazione di esempio nel simulatore Web Raspberry Pi

Questa app di esempio attiverà un evento connesso al dispositivo.

  1. Nell'area di scrittura del codice sostituire il segnaposto nella riga 15 con la stringa di connessione del dispositivo dell'hub IoT di Azure salvata al termine della sezione precedente.

    Screenshot della posizione in cui aggiungere la stringa di connessione primaria nello script Raspberry Pi.

  2. Eseguire l'applicazione selezionando Esegui.

    Dovrebbe essere visibile un output simile al seguente che mostra i dati del sensore e i messaggi inviati all'hub IoT.

    Screenshot di cosa aspettarsi nella console di output quando si esegue Raspberry Pi.

  3. È possibile controllare la pagina Panoramica dell'app per la logica per verificare se la logica viene attivata. Si supponga di aver avuto esito positivo o non riuscito. Controllare qui si conosce lo stato dell'app per la logica se è necessaria la risoluzione dei problemi. Si prevede un ritardo di 15-30 secondi da quando viene eseguito il trigger. Se è necessario risolvere i problemi relativi all'app per la logica, vedere questo articolo Risolvere gli errori .

    Screenshot degli aggiornamenti dello stato nella pagina Panoramica dell'app per la logica.

  4. Selezionare Arresta per arrestare il simulatore, che attiva un evento Device Disconnesso . Questo evento verrà registrato nella pagina Panoramica dell'app per la logica, proprio come l'evento di connessione registrato.

È ora stata eseguita un'applicazione di esempio per raccogliere gli eventi di connessione e disconnessione del dispositivo, che passano all'hub IoT.

Osservare gli eventi in Azure Cosmos DB

È possibile visualizzare i risultati dell'app per la logica eseguita nel documento Cosmos DB. Il documento viene visualizzato nell'insieme Items quando si aggiorna la pagina. Ogni evento dello stato della connessione genera un nuovo documento assegnato a un oggetto univoco id. L'immagine seguente mostra il documento creato all'avvio del dispositivo (connesso). Il tipo di evento connesso è elencato nell'output JSON.

Screenshot dell'evento di stato della connessione appena generato in un insieme Cosmos DB.

Utilizzare l’interfaccia della riga di comando di Azure

Anziché tramite il portale di Azure, è possibile eseguire le procedure relative all'hub IoT usando l'interfaccia della riga di comando di Azure. Per informazioni dettagliate, vedere le pagine relative all'interfaccia della riga di comando di Azure per la creazione di una sottoscrizione di eventi e la creazione di un dispositivo IoT.

Pulire le risorse

Questa esercitazione ha usato risorse che generano addebiti sulla sottoscrizione di Azure. Al termine dell'esercitazione e dopo aver testato i risultati ottenuti, disabilitare o eliminare le risorse che non si vogliono mantenere.

App per la logica

Per non perdere il lavoro fatto, è possibile disabilitare l'app per la logica anziché eliminarla.

  1. Passare all'app per la logica.

  2. Nel pannello Panoramica selezionare Elimina o Disabilita.

    Ogni sottoscrizione può avere un unico hub IoT gratuito. Se per questa esercitazione è stato creato un hub gratuito, non è necessario eliminarlo per impedire eventuali addebiti.

Hub IoT o Griglia di eventi

  1. Passare all'hub IoT.

  2. Nel pannello Panoramica selezionare Elimina.

  3. Anche se si mantiene l'hub IoT, può essere opportuno eliminare la sottoscrizione di eventi creata. Nell'hub IoT selezionare Griglia di eventi.

  4. Selezionare la sottoscrizione dell'evento da rimuovere, quindi selezionare Elimina.

Cosmos DB

Per rimuovere un account Azure Cosmos DB dalla portale di Azure, passare alla risorsa e selezionare Elimina account dalla barra dei menu in alto. Vedere le istruzioni dettagliate per eliminare un account di Azure Cosmos DB.

Passaggi successivi