Udostępnij za pośrednictwem


Monitorowanie stanu połączenia urządzenia

Usługa Azure IoT Hub obsługuje kilka metod monitorowania stanu urządzeń. W tym artykule przedstawiono różne metody monitorowania i przedstawiono wskazówki ułatwiające wybranie najlepszej opcji rozwiązania IoT.

W poniższej tabeli przedstawiono trzy sposoby monitorowania stanu połączenia urządzenia:

Metoda Częstotliwość stanu Koszt Wysiłek w celu skompilowania
Właściwość ConnectionState bliźniaczej reprezentacji urządzenia Sporadycznie Minimum Minimum
Event Grid 60 s Minimum Minimum
Niestandardowy wzorzec pulsu urządzenia Okres niestandardowy Maksimum Maksimum

Ze względu na jego niezawodność, niskie koszty i łatwość użycia zalecamy usługę Event Grid jako preferowane rozwiązanie do monitorowania dla większości klientów.

Istnieją jednak pewne ograniczenia dotyczące monitorowania za pomocą usługi Event Grid, które mogą zdyskwalifikować je w przypadku niektórych rozwiązań IoT. Skorzystaj z tego artykułu, aby zrozumieć korzyści i ograniczenia poszczególnych opcji.

Połączenie bliźniaczej reprezentacji urządzeniaState

Każda tożsamość urządzenia usługi IoT Hub zawiera właściwość o nazwie connectionState, która zgłasza połączenie lubrozłączenie. Ta właściwość reprezentuje informacje o stanie połączenia urządzenia w usłudze IoT Hub.

Właściwość stanu połączenia ma kilka ograniczeń:

  • Stan połączenia jest aktualizowany tylko dla urządzeń korzystających z protokołu MQTT lub AMQP.
  • Aktualizacje do tej właściwości polegają na poleceniach ping na poziomie protokołu i mogą być opóźnione aż pięć minut.

Z tych powodów zalecamy używanie tylko pola connectionState podczas programowania i debugowania. Rozwiązania IoT nie powinny wykonywać zapytań dotyczących pola w czasie wykonywania. Na przykład nie wysyłaj zapytania do pola connectionState , aby sprawdzić, czy urządzenie jest połączone przed wysłaniem komunikatu z chmury do urządzenia lub wiadomości SMS.

Event Grid

Zalecamy usługę Event Grid jako preferowane rozwiązanie do monitorowania dla większości klientów.

Zasubskrybuj urządzenie Połączenie ed i zdarzenia deviceDisconnected w usłudze Event Grid, aby uzyskać alerty i monitorować stan połączenia urządzenia.

Skorzystaj z poniższych artykułów, aby dowiedzieć się, jak zintegrować zdarzenia połączone i rozłączone urządzenia w rozwiązaniu IoT:

Zdarzenia stanu połączenia urządzenia są dostępne dla urządzeń łączących się przy użyciu protokołu MQTT lub AMQP albo przy użyciu jednego z tych protokołów za pośrednictwem protokołu WebSocket. Żądania wysyłane tylko za pomocą protokołu HTTPS nie będą wyzwalać powiadomień o stanie połączenia urządzenia.

  • W przypadku urządzeń łączących się przy użyciu zestawów SDK usługi Azure IoT dla języka Java, Node lub Python:
    • MQTT: zdarzenia stanu połączenia są wysyłane automatycznie.
    • AMQP: należy utworzyć łącze chmura-urządzenie, aby zmniejszyć opóźnienia w stanach połączenia raportowania.
  • W przypadku urządzeń łączących się przy użyciu zestawów SDK usługi Azure IoT dla platformy .NET lub C zdarzenia stanu połączenia nie będą zgłaszane do momentu wysłania początkowego komunikatu urządzenie-chmura lub odebrania komunikatu z chmury do urządzenia.

Poza zestawami SDK usługi Azure IoT w MQTT te operacje są równoznaczne z subskrybowaniem lub publikowaniem w odpowiednich tematach obsługi komunikatów. Za pośrednictwem protokołu AMQP te operacje są równoznaczne z dołączaniem lub przesyłaniem komunikatu w odpowiednich ścieżkach linków.

Ograniczenia usługi Event Grid

Monitorowanie stanu urządzenia przy użyciu usługi Event Grid wiąże się z następującymi ograniczeniami:

  • Usługa Event Grid nie zgłasza każdego pojedynczego połączenia i rozłączenia urządzenia. Zamiast tego sonduje stan urządzenia co 60 sekund i publikuje najnowszy stan połączenia, jeśli nastąpiła zmiana stanu. Z tego powodu raporty o zmianach stanu mogą być opóźnione do jednej minuty, a poszczególne zmiany stanu mogą być nieraportowane, jeśli w 60-sekundowym oknie wystąpi wiele zdarzeń.
  • Urządzenia korzystające z protokołu AMQP wymagają linku chmura-urządzenie, zanim będą mogły zgłaszać stan urządzenia.
  • Usługa Event Grid uwidacznia publiczny punkt końcowy, którego nie można ukryć.

Jeśli którekolwiek z tych ograniczeń wpływa na możliwość korzystania z usługi Event Grid na potrzeby monitorowania stanu urządzenia, rozważ utworzenie niestandardowego wzorca pulsu urządzenia.

Wzorzec pulsu urządzenia

Jeśli musisz znać stan połączenia urządzeń, ale ograniczenia usługi Event Grid są zbyt ograniczone dla rozwiązania, możesz zaimplementować wzorzec pulsu. We wzorcu pulsu urządzenie wysyła komunikaty z urządzenia do chmury co najmniej raz na godzinę (na przykład co godzinę). Nawet jeśli urządzenie nie ma żadnych danych do wysłania, nadal wysyła pusty komunikat z urządzenia do chmury, zwykle z właściwością identyfikującą ją jako komunikat pulsu. Po stronie usługi rozwiązanie utrzymuje mapę z ostatnim pulsem odebranym dla każdego urządzenia. Jeśli rozwiązanie nie odbiera komunikatu pulsu w oczekiwanym czasie od urządzenia, zakłada, że występuje problem z urządzeniem.

Ograniczenia pulsu urządzenia

Ponieważ komunikaty pulsu są implementowane jako komunikaty urządzenie-chmura, są one liczone względem limitu przydziału komunikatów usługi IoT Hub i limitów ograniczania przepustowości.

Wzorzec krótkiego czasu wygaśnięcia

Jeśli rozwiązanie IoT używa stanu połączenia wyłącznie do określenia, czy wysyłać komunikaty z chmury do urządzenia, a komunikaty nie są emitowane do dużych zestawów urządzeń, rozważ użycie wzorca czasu krótkiego wygaśnięcia jako prostszej alternatywy dla wzorca pulsu. Wzorzec krótkiego czasu wygaśnięcia to sposób określania, czy wysyłać komunikaty z chmury do urządzenia, wysyłając komunikaty z krótkim czasem wygaśnięcia wiadomości i żądając potwierdzenia wiadomości z urządzeń.

Aby uzyskać więcej informacji, zobacz Wygaśnięcie komunikatu (czas wygaśnięcia).

Inne opcje monitorowania

Bardziej złożona implementacja może obejmować informacje z usług Azure Monitor i Azure Resource Health w celu zidentyfikowania urządzeń, które próbują nawiązać połączenie lub komunikować się, ale kończą się niepowodzeniem. Pulpity nawigacyjne usługi Azure Monitor są przydatne do wyświetlania zagregowanej kondycji urządzeń, podczas gdy usługa Event Grid i wzorce pulsu ułatwiają reagowanie na awarie poszczególnych urządzeń.

Aby dowiedzieć się więcej na temat korzystania z tych usług w usłudze IoT Hub, zobacz Monitorowanie usługi IoT Hub i sprawdzanie kondycji zasobów usługi IoT Hub. Aby uzyskać bardziej szczegółowe informacje na temat monitorowania łączności urządzeń przy użyciu usługi Azure Monitor lub Event Grid, zobacz Monitorowanie, diagnozowanie i rozwiązywanie problemów z łącznością urządzeń.