Porządkowanie zdarzeń połączenia urządzenia pochodzących z usługi Azure IoT Hub przy użyciu usługi Azure Cosmos DB

Azure Event Grid ułatwia tworzenie aplikacji opartych na zdarzeniach i łatwe integrowanie zdarzeń IoT w rozwiązaniach biznesowych. W tym artykule opisano konfigurację przy użyciu usługi Cosmos DB, aplikacji logiki, zdarzeń IoT Hub oraz symulowanego urządzenia Raspberry Pi w celu zbierania i przechowywania zdarzeń połączenia i rozłączania urządzenia.

Od momentu uruchomienia urządzenia kolejność operacji jest aktywowana:

  1. Urządzenie Pi korzystające z klucza urządzenia usługi IoT Hub jest uruchamiane, a następnie zatrzymywane

  2. Zdarzenie IoT Hub przechwytuje działanie urządzenia, a następnie wysyła żądanie HTTP do aplikacji logiki

  3. Aplikacja logiki przetwarza żądanie HTTP na podstawie ustawionego warunku

  4. Aplikacja logiki rejestruje zdarzenia połączenia lub rozłączenia do nowego dokumentu w usłudze Cosmos DB

    Zrzut ekranu przedstawiający konfigurację, która zostanie utworzona dla tego artykułu. Ta konfiguracja pokazuje, jak wszystkie usługi i urządzenia są połączone.

Wymagania wstępne

  • Aktywne konto usługi Azure Cosmos DB for NoSQL. Jeśli jeszcze go nie utworzono, zobacz Tworzenie konta bazy danych , aby zapoznać się z przewodnikiem.

  • Kolekcja w bazie danych. Zobacz Dodawanie kolekcji, aby zapoznać się z przewodnikiem. Podczas tworzenia kolekcji użyj dla /id klucza partycji.

  • Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatnie subskrypcję.

  • Centrum IoT Hub w ramach subskrypcji platformy Azure. Utwórz go przy użyciu interfejsu wiersza polecenia lub Azure Portal.

Tworzenie aplikacji logiki

Utwórzmy aplikację logiki i dodamy wyzwalacz usługi Event Grid, który monitoruje grupę zasobów dla maszyny wirtualnej.

Tworzenie zasobu aplikacji logiki

  1. W Azure Portal wybierz pozycję +Utwórz zasób, wybierz pozycję Integracja, a następnie pozycję Aplikacja logiki.

    Zrzut ekranu przedstawiający znajdowanie i wybieranie aplikacji logiki w Azure Portal.

  2. Wypełnij formularz, aby utworzyć nową aplikację logiki obejmującą następujące elementy:

    • Twoja subskrypcja

    • Grupa zasobów (lub utwórz nową)

    • Nazwa aplikacji logiki unikatowa w subskrypcji

    • Region centrum IoT

    • Nie do włączania analizy dzienników

    • Typ planu Zużycie

      Uwaga

      Typ planu Zużycie to opcja umożliwiająca projektanta aplikacji logiki w interfejsie użytkownika. Jeśli wybierzesz opcję Standardowa (wartość domyślna), musisz utworzyć nowy przepływ pracy, aby projektant aplikacji logiki stał się dostępny.

    Zrzut ekranu przedstawiający sposób tworzenia aplikacji logiki w Azure Portal.

  3. Wybierz pozycję Przejrzyj i utwórz , aby przejrzeć konfigurację, a następnie wybierz pozycję Utwórz , aby utworzyć aplikację logiki.

  4. Teraz został utworzony zasób platformy Azure dla Twojej aplikacji logiki. Po wdrożeniu aplikacji logiki przez platformę Azure wybierz pozycję Przejdź do zasobu. Projektant aplikacji logiki wyświetla szablony dla typowych wzorców, dzięki czemu możesz rozpocząć pracę szybciej.

  5. W projektancie aplikacji logiki przewiń do sekcji Szablony , a następnie wybierz pozycję Pusta aplikacja logiki , aby utworzyć aplikację logiki od podstaw.

Wybieranie wyzwalacza

Wyzwalacz to konkretne zdarzenie, które uruchamia aplikację logiki. W tym samouczku wyzwalacz, który uruchamia przepływ pracy, odbiera żądanie za pośrednictwem protokołu HTTP.

  1. Na pasku wyszukiwania łączników i wyzwalaczy wpisz HTTP i naciśnij klawisz Enter.

  2. Wybierz żądanie Po odebraniu żądania HTTP jako wyzwalacza.

    Zrzut ekranu przedstawiający sposób znajdowania wyzwalacza żądania HTTP.

  3. Wybierz pozycję Użyj przykładowego ładunku do wygenerowania schematu.

    Zrzut ekranu przedstawiający sposób użycia przykładowego ładunku do wygenerowania schematu.

  4. Wklej następujący przykładowy kod JSON w polu tekstowym, a następnie wybierz pozycję Gotowe.

    Ten kod JSON jest używany tylko jako szablon, więc dokładne wartości nie są ważne.

    [{
     "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"
    }]
    

    Zrzut ekranu przedstawiający przykładowy ładunek JSON wklejony do pola tekstowego na platformie Azure.

Tworzenie warunku

Warunki ułatwiają uruchamianie określonych akcji po przekazaniu tego określonego warunku. W tym artykule warunek polega na sprawdzeniu, czy parametr eventType jest połączony z urządzeniem lub czy urządzenie zostało odłączone. Akcja wykonywana, gdy wartość eventType ma wartość true, to utworzenie dokumentu w usłudze Azure Cosmos DB. Ten warunek jest tworzony w projektancie aplikacji logiki.

  1. Wybierz pozycję + Nowy krok, a następnie kartę Wbudowane , a następnie znajdź i wybierz kontrolkę o nazwie Warunek.

  2. W twoim warunku zmień wartość And na Or, ponieważ chcemy przechwycić zdarzenia połączenia lub zdarzenia rozłączenia w pojedynczej przeanalizować.

  3. Wybierz wewnątrz pola Wybierz wartość , a pojawi się wyskakujące okienko z wyświetloną zawartością dynamiczną — polami, które można wybrać.

    • Wybierz typ zdarzenia. Okno podręczne zostanie zamknięte i zobaczysz pozycję Treść jest umieszczana w obszarze Wybierz dane wyjściowe z poprzednich kroków, automatycznie. Wybierz pozycję Warunek , aby ponownie otworzyć instrukcję warunkową.

    • Zachowaj wartość jest równa wartości.

    • Wpisz wartość Microsoft.Devices.DeviceConnected jako ostatnią wartość tego wiersza.

    • Wybierz pozycję + Dodaj , aby dodać kolejny wiersz.

    • Ten drugi wiersz jest podobny do pierwszego wiersza, z wyjątkiem szukamy zdarzeń rozłączenia.

      Użyj wartości eventType, is equal to i Microsoft.Devices.DeviceDisconnected dla wartości wierszy.

      Zrzut ekranu przedstawiający pełny warunek dla każdego warunku.

  4. W oknie dialogowym if true kliknij pozycję Dodaj akcję.

    Zrzut ekranu przedstawiający pole

  5. Wyszukaj usługę Cosmos DB i wybierz pozycję Azure Cosmos DB — tworzenie lub aktualizowanie dokumentu (wersja 3)

    Zrzut ekranu przedstawiający wyszukiwanie usługi Azure Cosmos DB.

  6. Zostanie wyświetlony panel Tworzenie lub aktualizowanie dokumentu (wersja 3). Wprowadź następujące wartości dla pól:

    Nazwa konta usługi Azure Cosmos DB: {Dodaj nazwę konta}

    Identyfikator bazy danych: ToDoList

    Identyfikator kolekcji: elementy

    Dokument: wybierz Current item z listy parametrów zawartości dynamicznej

    Zrzut ekranu przedstawia element Wykonaj procedurę składowaną (V3) z wybraną pozycją

  7. Zapisz aplikację logiki.

Kopiowanie adresu URL HTTP

Przed opuszczeniem Projektant usługi Logic Apps skopiuj adres URL, na który aplikacja logiki nasłuchuje wyzwalacza. Ten adres URL zostanie użyty do skonfigurowania usługi Event Grid.

  1. Rozwiń pole Konfiguracji wyzwalacza Po odebraniu żądania HTTP , wybierając je.

  2. Skopiuj wartość pola Adres URL żądania HTTP POST, wybierając przycisk widoczny obok tego pola.

    Zrzut ekranu przedstawiający miejsce znalezienia adresu URL HTTP do skopiowania.

  3. Zapisz ten adres URL, aby można było go użyć w następnej sekcji.

Konfigurowanie subskrypcji zdarzeń usługi IoT Hub

W tej sekcji skonfigurujesz usługę IoT Hub pod kątem publikowania zdarzeń na bieżąco.

  1. W witrynie Azure Portal przejdź do centrum IoT Hub.

  2. Wybierz pozycję Zdarzenia.

    Zrzut ekranu przedstawiający lokalizację przycisku Zdarzenia w menu IoT Hub.

  3. Wybierz pozycję + Subskrypcja zdarzeń.

    Tworzenie nowej subskrypcji zdarzeń

  4. Wypełnij pola Szczegóły subskrypcji zdarzeń: podaj opisową nazwę i wybierz pozycję Schemat usługi Event Grid jako schemat zdarzenia.

  5. Utwórz nazwę tematu systemowego dla zasobu usługi IoT Hub.

  6. Wypełnij pola Typy zdarzeń . Z listy rozwijanej wybierz tylko pozycję Połączone urządzenie i Odłączone urządzenie z menu. Kliknij gdziekolwiek indziej na ekranie, aby zamknąć listę i zapisać wybrane opcje.

    Ustaw typy zdarzeń, aby wyszukać

  7. W obszarze Szczegóły punktu końcowego wybierz pozycję Typ punktu końcowego jako element Web Hook , a następnie kliknij pozycję wybierz punkt końcowy i wklej adres URL skopiowany z aplikacji logiki i potwierdź wybór.

    Wybieranie adresu URL punktu końcowego

  8. Formularz powinien teraz wyglądać podobnie do poniższego przykładu:

    Zrzut ekranu przedstawiający formularz umożliwiający utworzenie subskrypcji zdarzeń.

    Wybierz pozycję Utwórz, aby zapisać subskrypcję zdarzeń.

    Ważne

    Poczekaj kilka minut na przetworzenie zdarzenia przed uruchomieniem urządzenia. Za każdym razem, gdy usługi platformy Azure zostaną utworzone lub zmienione, zainicjowanie następnego kroku potoku zbyt szybko może spowodować niepotrzebne błędy. Jeśli na przykład centrum IoT nie jest w stanie aktywnym, nie będzie gotowe do odbierania zdarzeń. Sprawdź stronę Przegląd centrum IoT, aby sprawdzić, czy centrum IoT jest w stanie aktywnym, czy nie. Jeśli tak nie jest, w górnej części strony zostanie wyświetlone ostrzeżenie.

    Zrzut ekranu przedstawiający błąd IoT Hub informujący, że nie jest on w stanie aktywnym.

Uruchamianie urządzenia i obserwowanie zdarzeń

Po skonfigurowaniu subskrypcji zdarzeń przetestujmy je, łącząc urządzenie.

Rejestrowanie urządzenia w IoT Hub

  1. W centrum IoT wybierz pozycję Urządzenia.

  2. Wybierz pozycję + Dodaj urządzenie w górnej części okienka.

  3. W polu Identyfikator urządzenia wpisz Demo-Device-1.

  4. Wybierz pozycję Zapisz.

    Zrzut ekranu przedstawiający lokalizację przycisku Dodaj urządzenie.

  5. Ponownie kliknij urządzenie; teraz zostaną wypełnione parametry połączenia i klucze. Skopiuj i zapisz podstawowe parametry połączenia do późniejszego użycia.

    Zrzut ekranu przedstawiający lokalizację podstawowych parametrów połączenia dla urządzenia.

Uruchamianie symulatora urządzenia Raspberry Pi

Użyjmy symulatora internetowego urządzenia Raspberry Pi do symulowania połączenia urządzenia.

Uruchamianie symulatora urządzenia Raspberry Pi

Uruchamianie przykładowej aplikacji w symulatorze internetowym urządzenia Raspberry Pi

Ta przykładowa aplikacja wyzwoli zdarzenie połączone z urządzeniem.

  1. W obszarze kodowania zastąp symbol zastępczy w wierszu 15 parametrami połączenia urządzenia Azure IoT Hub zapisanymi na końcu poprzedniej sekcji.

    Zrzut ekranu przedstawiający miejsce dodawania podstawowych parametrów połączenia w skryscie urządzenia Raspberry Pi.

  2. Uruchom aplikację, wybierając pozycję Uruchom.

    Zobaczysz coś podobnego do poniższych danych wyjściowych, które pokazują dane czujnika i komunikaty wysyłane do centrum IoT.

    Zrzut ekranu przedstawiający oczekiwania w konsoli wyjściowej po uruchomieniu urządzenia Raspberry Pi.

  3. Możesz sprawdzić stronę Przegląd aplikacji logiki, aby sprawdzić, czy logika jest wyzwalana. To powiedzie Powodzenie lub Niepowodzenie. Sprawdź tutaj, czy stan aplikacji logiki jest potrzebny, jeśli jest konieczne rozwiązywanie problemów. Spodziewaj się 15–30 sekund opóźnienia po uruchomieniu wyzwalacza. Jeśli musisz rozwiązać problemy z aplikacją logiki, zapoznaj się z artykułem Rozwiązywanie problemów z błędami .

    Zrzut ekranu przedstawiający aktualizacje stanu na stronie Przegląd aplikacji logiki.

  4. Wybierz pozycję Zatrzymaj , aby zatrzymać symulator, który wyzwala zdarzenie Rozłączone urządzenie . To zdarzenie będzie logować się na stronie Przegląd aplikacji logiki, tak samo jak zdarzenie połączenia, które było tam rejestrowane.

Teraz uruchomisz przykładową aplikację, aby zebrać zdarzenia połączenia i rozłączenia urządzenia, które przechodzą do centrum IoT Hub.

Obserwowanie zdarzeń w usłudze Azure Cosmos DB

Wyniki wykonanej aplikacji logiki można zobaczyć w dokumencie usługi Cosmos DB. Po odświeżeniu strony dokument zostanie wyświetlony w kolekcji Elementy . Każde zdarzenie stanu połączenia generuje nowy dokument, który ma przypisany unikatowy idelement . Na poniższej ilustracji przedstawiono dokument utworzony podczas uruchamiania urządzenia (połączone). Typ zdarzenia połączonego znajduje się na liście w danych wyjściowych JSON.

Zrzut ekranu przedstawiający nowo wygenerowane zdarzenie stanu połączenia w kolekcji usługi Cosmos DB.

Używanie interfejsu wiersza polecenia platformy Azure

Zamiast korzystać z Azure Portal, możesz wykonać kroki IoT Hub przy użyciu interfejsu wiersza polecenia platformy Azure. Aby uzyskać szczegółowe informacje, zobacz strony interfejsu wiersza polecenia platformy Azure dotyczące tworzenia subskrypcji zdarzeń i tworzenia urządzenia IoT.

Czyszczenie zasobów

Użycie zasobów w tym samouczku powoduje naliczanie opłat w ramach Twojej subskrypcji platformy Azure. Po zakończeniu testowania samouczka i testowania wyników wyłącz lub usuń zasoby, których nie chcesz zachować.

Aplikacja logiki

Jeśli nie chcesz utracić efektów pracy z aplikacją logiki, nie usuwaj jej, tylko wyłącz.

  1. Przejdź do aplikacji logiki.

  2. W bloku Przegląd wybierz pozycję Usuń lub Wyłącz.

    Każda subskrypcja może zawierać jedno centrum IoT Hub, z którego korzystanie jest bezpłatne. Jeśli w samouczku utworzono bezpłatne centrum, nie musisz go usuwać, ponieważ nie generuje ono kosztów.

Centrum IoT Lub Event Grid

  1. Przejdź do centrum IoT Hub.

  2. W bloku Przegląd wybierz pozycję Usuń.

  3. Być może zdecydujesz się zachować centrum IoT Hub, ale usunąć utworzoną subskrypcję zdarzeń. W centrum IoT Hub wybierz pozycję Event Grid.

  4. Wybierz subskrypcję zdarzeń, którą chcesz usunąć, a następnie wybierz pozycję Usuń.

Cosmos DB

Aby usunąć konto usługi Azure Cosmos DB z Azure Portal, przejdź do zasobu i wybierz pozycję Usuń konto na górnym pasku menu. Zobacz szczegółowe instrukcje dotyczące usuwania konta usługi Azure Cosmos DB.

Następne kroki