Condividi tramite


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

Griglia di eventi di Azure consente di compilare applicazioni basate su eventi e di integrare con facilità eventi IoT nelle soluzioni aziendali. Questo articolo illustra una configurazione che utilizza Cosmos DB, App per la logica, eventi dell'hub IoT e un dispositivo Raspberry Pi simulato per raccogliere e archiviare gli 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 dell'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 sono connessi tutti i servizi e i dispositivi.

Prerequisiti

  • Un account Azure Cosmos DB for NoSQL attivo. Se non ne è ancora stato creato un', vedere la procedura dettagliata Creare un account di database.

  • Una raccolta nel database. Vedere la procedura dettagliata Aggiungere una raccolta. Quando si crea la raccolta, usare /id per la chiave di partizione.

  • Una sottoscrizione di Azure. Se non si dispone di sottoscrizione di Azure, crearne una gratuitamente prima di iniziare.

  • Un hub IoT nella sottoscrizione di Azure. Se non si ha ancora un hub, è possibile seguire la procedura descritta in Creare un hub IoT.

Creare un'app per la logica

Verrà creata un'app per la logica e aggiungere un trigger di Griglia di eventi che monitori 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

    • Un No per l'abilitazione di Log Analytics

    • Tipo di piano di Consumo

      Nota

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

    Screenshot che mostra 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 la distribuzione dell'app per la logica in Azure, selezionare Vai alla risorsa. Progettazione di app per la logica illustra i modelli comuni disponibili per poter iniziare più rapidamente.

  5. Nella progettazione dell'app per la logicascorrere 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 Alla ricezione di una richiesta HTTP come trigger.

    Screenshot che illustra come trovare il trigger di richiesta HTTP selezionato.

  3. Seleziona Utilizza payload di esempio per generare il collegamento dello schema.

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

  4. Incollare l'esempio di codice JSON 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 il superamento di una determinata condizione. Per questo articolo, la condizione consiste nel controllare se eventType è connesso o disconnesso al dispositivo. L'azione eseguita quando tale eventType è vero è la creazione di un documento in Azure Cosmos DB. Questa condizione viene creata nell’app di progettazione per la logica.

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

  2. Nella condizione modificare E in O, poiché si vogliono acquisire eventi di connessione o eventi di disconnessione in un'unica analisi.

  3. Selezionare all'interno della casella Scegliere un valore e viene visualizzato un popup che mostra il Contenuto dinamico - i campi che è possibile selezionare.

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

    • Mantenere la è uguale al valore.

    • Digitare Microsoft.Devices.DeviceConnected come ultimo valore di tale 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 completa di For Each.

  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 - Crea o aggiorna 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: elementi

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

    Screenshot che mostra un elemento che esegue stored procedure (V3) con l'opzione ”Aggiungi nuovo parametro“ 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 Alla ricezione di una richiesta HTTP selezionando l'opzione.

  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 l'URL per poterlo usare 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. Seleziona 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 di sottoscrizione eventi: specificare un Nome descrittivo e selezionare lo schema della griglia di eventi come schema di eventi.

  5. Creare un nome dell'argomento di sistema per la risorsa dell'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 l'elaborazione dell'evento prima di eseguire il dispositivo. Ogni volta che i servizi di Azure vengono creati o modificati, l'avvio del passaggio successivo nella pipeline potrebbe causare errori non necessari. Ad esempio, se l'hub IoT non è in uno stato attivo, non sarà pronto per ricevere gli eventi. Controllare la pagina Panoramica dell'hub IoT per verificare se l'hub IoT si trova in uno stato attivo o meno. In caso contrario, verrà visualizzato un avviso nella parte superiore della pagina.

    Screenshot di un errore dell'hub IoT che indica che non si trova 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. Nella parte superiore del riquadro selezionare Aggiungi dispositivo.

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

  4. Seleziona 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 è in corso l'attivazione della logica. Verrà visualizzato il messaggioRiuscito o Non riuscito. Se è necessaria la risoluzione dei problemi, controllare qui è possibile conoscere lo stato dell'app per la logica. Aspettatevi un ritardo di 15-30 secondi da quando viene eseguito il trigger. Se è necessario risolvere i problemi dell'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 Dispositivo disconnesso. Questo evento verrà registrato nella pagina Panoramica dell’app per la logica, esattamente come l'evento di connessione registrato.

È stata ora 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 in un documento di Cosmos DB. Il documento viene visualizzato nella raccolta elementi quando la pagina viene aggiornata. Ogni evento di stato della connessione genera un nuovo documento a cui è assegnato un id univoco. 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 una raccolta di Cosmos DB.

Usare 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 di eventi da rimuovere, quindi selezionare Elimina.

Cosmos DB

Per rimuovere un account Azure Cosmos DB dal 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