Udostępnij za pośrednictwem


Przewodnik po wstępnie skonfigurowanym rozwiązaniu monitorowania zdalnego

Wstępnie skonfigurowane rozwiązanie do monitorowania zdalnego Pakietu IoT to implementacja kompleksowego rozwiązania do monitorowania wielu maszyn uruchomionych w lokalizacjach zdalnych. Rozwiązanie to łączy najważniejsze usługi platformy Azure, aby umożliwić ogólną implementację scenariusza biznesowego. Możesz go użyć jako punktu wyjścia dla Twojej własnej implementacji i je dostosować, aby spełniało Twoje własne określone wymagania biznesowe.

Ten artykuł przeprowadzi Cię przez niektóre kluczowe elementy rozwiązania do monitorowania zdalnego, aby umożliwić Ci zrozumienie jego sposobu działania. Ta wiedza ułatwi Ci:

  • Rozwiązywanie problemów w rozwiązaniu.
  • Planowanie sposobu dostosowywania rozwiązania, aby spełniało Twoje wymagania.
  • Projektowanie własnego rozwiązania IoT korzystającego z usług Azure.

Architektura logiczna

Poniższy diagram przedstawia składniki logiczne wstępnie skonfigurowanego rozwiązania:

Architektura logiczna

Mikrousługi i kontenery platformy Docker

Zdalne monitorowanie to pierwsze z naszych wstępnie skonfigurowanych rozwiązań, które korzysta z architektury mikrousług. Rozwiązanie jest dostępne zarówno na platformie .NET, jak i Java. Mikrousługi stały się powszechnie stosowanym rozwiązaniem umożliwiającym osiągnięcie skalowalności i elastyczności (przez zezwolenie na osobne skalowanie kontenerów) bez zmniejszenia szybkość tworzenia aplikacji. Mikrousługi zapewniają podział kodu i udostępniają dobrze zdefiniowane interfejsy, dzięki czemu rozwiązanie jest łatwiejsze do zrozumienia i mniej monolityczne. Zapewniają one również dodatkowe opcje dla partnerów, którzy chcą rozszerzyć nasze bieżące akceleratory rozwiązań w celu utworzenia ukończonych rozwiązań przeznaczonych do sprzedaży.

Dowiedz się więcej na temat kontenerów platformy Docker

Urządzenia symulowane

W tym wstępnie skonfigurowanym rozwiązaniu symulowane urządzenie odpowiada urządzeniu chłodzącemu (np. klimatyzatorowi lub centrali wentylacyjnej w budynku). Podczas wdrażania wstępnie skonfigurowanego rozwiązania przeprowadzisz też automatyczną aprowizację czterech symulowanych urządzeń działających w zadaniu WebJob platformy Azure. Symulowane urządzenia ułatwiają badanie zachowania rozwiązania bez konieczności wdrażania jakichkolwiek urządzeń fizycznych. Aby wdrożyć rzeczywiste urządzenie fizyczne, zobacz samouczek Łączenie urządzenia ze wstępnie skonfigurowanym rozwiązaniem do monitorowania zdalnego.

Komunikaty z urządzenia do chmury

Każde symulowane urządzenie może wysyłać do usługi IoT Hub następujące typy wiadomości:

Komunikat Opis
Uruchamianie Po uruchomieniu urządzenie wysyła do zaplecza komunikat device-info zawierający informacje o tym urządzeniu. Te dane obejmują identyfikator urządzenia oraz listę poleceń i metod obsługiwanych przez urządzenie.
Obecność Urządzenie okresowo wysyła komunikat presence w celu zgłoszenia, czy urządzenie może wykrywać obecność czujnika.
Telemetria Urządzenie okresowo wysyła komunikat telemetry, który zgłasza symulowane wartości temperatury i wilgotności zebrane z symulowanych czujników urządzenia.

Uwaga

Rozwiązanie przechowuje listę poleceń obsługiwanych przez urządzenie w bazie danych Cosmos DB, a nie w bliźniaczej reprezentacji urządzenia.

Właściwości i bliźniacze reprezentacje urządzeń

Symulowane urządzenia wysyłają poniższe właściwości urządzenia do bliźniaczej reprezentacji urządzenia w usłudze IoT Hub jako zgłaszane właściwości. Urządzenie wysyła zgłaszane właściwości podczas uruchamiania i w odpowiedzi na polecenie lub metodę zmiany stanu urządzenia.

Właściwość Przeznaczenie
Config.TelemetryInterval Częstotliwość (w sekundach) wysłania przez urządzenie danych telemetrycznych
Config.TemperatureMeanValue Określa średnią wartość symulowanych danych telemetrycznych dotyczących temperatury
Device.DeviceID Ten identyfikator jest udostępniany lub przypisywany podczas tworzenia urządzenia w rozwiązaniu
Device.DeviceState Stan raportowany przez urządzenie
Device.CreatedTime Czas utworzenia urządzenia w rozwiązaniu
Device.StartupTime Czas uruchomienia urządzenia
Device.LastDesiredPropertyChange Numer wersji ostatniej zmiany żądanej właściwości
Device.Location.Latitude Współrzędna szerokości geograficznej lokalizacji urządzenia
Device.Location.Longitude Współrzędna długości geograficznej lokalizacji urządzenia
System.Manufacturer Producent urządzenia
System.ModelNumber Numer modelu urządzenia
System.SerialNumber Numer seryjny urządzenia
System.FirmwareVersion Bieżąca wersja oprogramowania układowego na urządzeniu
System.Platform Architektura platformy urządzenia
System.Processor Procesor działający w urządzeniu
System.InstalledRAM Ilość pamięci RAM zainstalowanej w urządzeniu

W symulowanych urządzeniach te właściwości są wypełniane przykładowymi wartościami. Za każdym razem, gdy symulator inicjuje symulowane urządzenie, raportuje ono wstępnie zdefiniowane metadane do usługi IoT Hub jako zgłaszane właściwości. Zgłaszane właściwości mogą być aktualizowane tylko przez urządzenie. Aby zmienić zgłoszoną właściwość, należy ustawić żądaną właściwość w portalu rozwiązania. Na urządzeniu są wykonywane następujące czynności:

  1. Okresowe pobieranie żądanych właściwości z usługi IoT Hub.
  2. Aktualizowanie swojej konfiguracji wartością żądanej właściwości.
  3. Wysyłanie nowej wartości z powrotem do usługi IoT Hub jako zgłaszanej właściwości.

Z poziomu pulpitu nawigacyjnego rozwiązania możesz używać żądanych właściwości do ustawiania właściwości na urządzeniu za pomocą bliźniaczej reprezentacji urządzenia. Zwykle urządzenie odczytuje wartość żądanej właściwości z usługi IoT Hub w celu zaktualizowania swojego stanu wewnętrznego i zgłoszenia tej zmiany z powrotem jako zgłaszanej właściwości.

Uwaga

W kodzie na symulowanym urządzeniu są używane wyłącznie żądane właściwości Desired.Config.TemperatureMeanValue i Desired.Config.TelemetryInterval do aktualizowania zgłaszanych właściwości wysyłanych z powrotem do usługi IoT Hub. Wszystkie inne żądania zmiany żądanych właściwości są ignorowane na symulowanym urządzeniu.

Metody

Symulowane urządzenia obsługują następujące metody (metody bezpośrednie) wywoływane z poziomu portalu rozwiązania za pomocą usługi IoT Hub:

Metoda Opis
InitiateFirmwareUpdate Powoduje, że urządzenie przeprowadza aktualizację oprogramowania układowego
Ponowne uruchamianie Powoduje ponowne uruchomienie urządzenia
FactoryReset Powoduje, że na urządzeniu są przywracane ustawienia fabryczne

Niektóre metody używają zgłaszanych właściwości do raportowania postępu. Na przykład metoda InitiateFirmwareUpdate symuluje asynchroniczne uruchomienie aktualizacji na urządzeniu. Efekty tej metody występują bezpośrednio na urządzeniu, natomiast zadanie asynchroniczne nadal wysyła aktualizacje stanu z powrotem na pulpit nawigacyjny rozwiązania za pomocą zgłaszanych właściwości.

Polecenia

Symulowane urządzenia obsługują następujące polecenia (komunikaty z chmury do urządzenia) wysyłane z portalu rozwiązania za pośrednictwem usługi IoT Hub:

Polecenie Opis
PingDevice Sprawdza, czy urządzenie jest aktywne, za pomocą polecenia ping.
StartTelemetry Włącza przesyłanie danych telemetrycznych przez urządzenie.
StopTelemetry Wyłącza przesyłanie danych telemetrycznych przez urządzenie.
ChangeSetPointTemp Zmienia ustaloną wartość, na podstawie której są generowane dane losowe.
DiagnosticTelemetry Włącza wysyłanie dodatkowej wartości telemetrycznej (externalTemp — temperatura zewnętrzna) przez symulator urządzenia.
ChangeDeviceState Zmienia właściwość rozszerzonego stanu urządzenia i wysyła komunikat z informacjami o urządzeniu.

Uwaga

Porównanie tych poleceń (komunikatów wysyłanych z chmury do urządzenia) i metod (metod bezpośrednich) znajduje się w temacie Wskazówki dotyczące komunikacji z chmury do urządzenia.

Usługa IoT Hub

Usługa IoT Hub pozyskuje dane wysyłane z urządzeń do chmury i udostępnia je zadaniom usługi Azure Stream Analytics (ASA). Każde zadanie strumieniowe ASA odczytuje strumień komunikatów z urządzeń przy użyciu osobnej grupy konsumentów usługi IoT Hub.

Usługa IoT Hub w rozwiązaniu wykonuje ponadto następujące czynności:

  • Obsługuje rejestr tożsamości, w którym są przechowywane identyfikatory i klucze uwierzytelniania wszystkich urządzeń z uprawnieniami do nawiązywania połączeń z portalem. Za pomocą rejestru tożsamości możesz włączać i wyłączać urządzenia.
  • Wysyła polecenia do Twoich urządzeń w imieniu portalu rozwiązania.
  • Wywołuje metody na Twoich urządzeniach w imieniu portalu rozwiązania.
  • Obsługuje bliźniacze reprezentacje wszystkich zarejestrowanych urządzeń. W bliźniaczej reprezentacji urządzenia są przechowywane wartości właściwości zgłaszanych przez urządzenie. W bliźniaczej reprezentacji urządzenia są także przechowywane żądane właściwości ustawione w portalu rozwiązania, które mają zostać pobrane przez urządzanie podczas nawiązywania następnego połączenia.
  • Planuje zadania ustawiania właściwości dla wielu urządzeń lub wywoływania metod na wielu urządzeniach.

Usługa Azure Stream Analytics

W rozwiązaniu do monitorowania zdalnego usługa Azure Stream Analytics (ASA) wysyła komunikaty urządzeń odebrane przez usługę IoT Hub do innych składników zaplecza w celu ich przetwarzania lub magazynowania. Różne zadania ASA pełnią określone funkcje w zależności od zawartości komunikatów.

Zadanie 1: Informacje o urządzeniu odfiltrowuje komunikaty z informacjami o urządzeniu ze strumienia komunikatów przychodzących i wysyła je do punktu końcowego Centrum zdarzeń. Komunikat z informacjami o urządzeniu jest wysyłany podczas uruchamiania urządzenia oraz w odpowiedzi na polecenie SendDeviceInfo. To zadanie identyfikuje komunikaty device-info przy użyciu następującej definicji zapytania:

SELECT * FROM DeviceDataStream Partition By PartitionId WHERE  ObjectType = 'DeviceInfo'

To zadanie wysyła dane wyjściowe do centrum zdarzeń w celu dalszego przetwarzania.

Zadanie 2: Reguły porównuje przychodzące dane telemetryczne dotyczące temperatury i wilgotności z wartościami progowymi określonymi dla urządzenia. Wartości progowe są ustawiane za pomocą edytora reguł dostępnego w portalu rozwiązania. Poszczególne pary urządzenie/wartość są uporządkowane według sygnatur czasowych i przechowywane w obiekcie blob, który jest odczytywany przez usługę Stream Analytics jako dane referencyjne. W ramach zadania wszystkie niepuste wartości są porównywane względem progu ustalonego dla urządzenia. Jeśli przekroczy warunek ">", zadanie generuje zdarzenie alarmu , które wskazuje, że próg został przekroczony i zapewnia urządzenie, wartość i wartości sygnatury czasowej. To zadanie identyfikuje komunikaty telemetryczne, które powinny wyzwolić alarm, przy użyciu następującej definicji zapytania:

WITH AlarmsData AS 
(
SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Temperature' as ReadingType,
     Stream.Temperature as Reading,
     Ref.Temperature as Threshold,
     Ref.TemperatureRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Temperature IS NOT null AND Stream.Temperature > Ref.Temperature

UNION ALL

SELECT
     Stream.IoTHub.ConnectionDeviceId AS DeviceId,
     'Humidity' as ReadingType,
     Stream.Humidity as Reading,
     Ref.Humidity as Threshold,
     Ref.HumidityRuleOutput as RuleOutput,
     Stream.EventEnqueuedUtcTime AS [Time]
FROM IoTTelemetryStream Stream
JOIN DeviceRulesBlob Ref ON Stream.IoTHub.ConnectionDeviceId = Ref.DeviceID
WHERE
     Ref.Humidity IS NOT null AND Stream.Humidity > Ref.Humidity
)

SELECT *
INTO DeviceRulesMonitoring
FROM AlarmsData

SELECT *
INTO DeviceRulesHub
FROM AlarmsData

Zadanie wysyła dane wyjściowe do centrum zdarzeń w celu dalszego przetwarzania i zapisuje szczegóły każdego alertu w magazynie obiektów blob, z którego portal rozwiązania może odczytać informacje o alertach.

Zadanie 3: Telemetria przetwarza strumień przychodzących z urządzeń danych telemetrycznych przy użyciu dwóch procedur. Pierwsza z nich przesyła wszystkie komunikaty telemetryczne z urządzeń do trwałego magazynu obiektów blob w celu ich długotrwałego przechowywania. Druga procedura wyznacza średnią, minimalną i maksymalną wartość wilgotności w ramach przesuwającego się okna czasowego o wielkości pięciu minut i wysyła te dane do magazynu obiektów blob. Portal rozwiązania odczytuje dane telemetryczne z magazynu obiektów blob w celu wypełnienia wykresów. W tym zadaniu jest używana następująca definicja zapytania:

WITH 
    [StreamData]
AS (
    SELECT
        *
    FROM [IoTHubStream]
    WHERE
        [ObjectType] IS NULL -- Filter out device info and command responses
) 

SELECT
    IoTHub.ConnectionDeviceId AS DeviceId,
    Temperature,
    Humidity,
    ExternalTemperature,
    EventProcessedUtcTime,
    PartitionId,
    EventEnqueuedUtcTime,
    * 
INTO
    [Telemetry]
FROM
    [StreamData]

SELECT
    IoTHub.ConnectionDeviceId AS DeviceId,
    AVG (Humidity) AS [AverageHumidity],
    MIN(Humidity) AS [MinimumHumidity],
    MAX(Humidity) AS [MaxHumidity],
    5.0 AS TimeframeMinutes 
INTO
    [TelemetrySummary]
FROM [StreamData]
WHERE
    [Humidity] IS NOT NULL
GROUP BY
    IoTHub.ConnectionDeviceId,
    SlidingWindow (mi, 5)

Event Hubs

Zadania ASA informacje o urządzeniu i reguły przesyłają dane wyjściowe do centrum zdarzeń w celu ich niezawodnego przekazania do procesora zdarzeń uruchomionego w zadaniu WebJob.

Azure Storage

Rozwiązanie korzysta z magazynu obiektów blob platformy Azure, aby utrwalić wszystkie nieprzetworzone i podsumowane dane telemetryczne z urządzeń w rozwiązaniu. Portal odczytuje dane telemetryczne z magazynu obiektów blob w celu wypełnienia wykresów. Aby wyświetlić alerty, portal rozwiązania odczytuje dane z magazynu obiektów blob, który rejestruje, kiedy wartości telemetryczne przekraczają skonfigurowane wartości progowe. Rozwiązanie używa również magazynu obiektów blob do rejestrowania wartości progowych określonych w portalu rozwiązania.

Zadania WebJob

Oprócz hostowania symulatorów urządzenia zadania WebJob w rozwiązaniu hostują także procesor zdarzeń uruchomiony w zadaniu WebJob platformy Azure, które obsługuje odpowiedzi na polecenia. Używa on komunikatów odpowiedzi na polecenia w celu aktualizacji historii poleceń urządzenia (przechowywanej w bazie danych Cosmos DB).

Cosmos DB

Rozwiązanie przechowuje informacje o połączonych z nim urządzeniach w bazie danych Cosmos DB. Te informacje uwzględniają historię poleceń wysłanych do urządzeń z portalu rozwiązania i metod wywołanych z portalu rozwiązania.

Portal rozwiązania

Portal rozwiązania to aplikacja internetowa wdrożona w ramach wstępnie skonfigurowanego rozwiązania. Najważniejsze strony w portalu rozwiązania to pulpit nawigacyjny i lista urządzeń.

Pulpit nawigacyjny

Na tej stronie aplikacji internetowej są używane kontrolki JavaScript usługi Power BI (zobacz repozytorium PowerBI-visuals), które umożliwiają wizualizację danych telemetrycznych z urządzeń. Rozwiązanie zapisuje dane telemetryczne w magazynie obiektów blob, używając zadań telemetrii usługi ASA.

Lista urządzeń

Na tej stronie w portalu rozwiązania możesz wykonywać następujące czynności:

  • Aprowizacja nowego urządzenia. Ta czynność obejmuje określenie unikatowego identyfikatora urządzenia i wygenerowanie klucza uwierzytelniania. Zapisuje ona informacje o urządzeniu w rejestrze tożsamości usługi IoT Hub oraz w bazie danych Cosmos DB określonego rozwiązania.
  • Zarządzanie właściwościami urządzenia. Ta czynność obejmuje wyświetlanie istniejących właściwości i aktualizowanie ich.
  • Wysyłanie poleceń do urządzenia.
  • Wyświetlanie historii poleceń dla urządzenia.
  • Włączanie i wyłączanie urządzeń.

Następne kroki

Następujące wpisy na blogu w witrynie TechNet zawierają więcej informacji dotyczących wstępnie skonfigurowanego rozwiązania do monitorowania zdalnego:

Możesz kontynuować poznawanie Pakietu IoT, czytając następujące artykuły: