Strona Główna / Blog

Wszystko Co Musisz Wiedzieć o Komunikatach IoT Hub (…aby zostać ekspertem IoT)

Damian Mazurek

Damian Mazurek

CTO w Chmurowisko. Jestem architektem pracującym z .NET, Node.JS i Microsoft Azure. Specjalizuję się w budowaniu globalnie rozproszonych aplikacji oraz rozwiazań IoT. W Chmurowisku odpowiadam za projekty związane z tworzeniem rozwiązań dla naszych klientów z wykorzystaniem rozwiązań PaaS oraz FaaS. Skontaktuj się z nim pisząc na ten adres.

https://chmurowisko.pl/wp-content/uploads/2018/01/Azure-IoT-Hub.jpg

Jednym z podstawowych elementów wspierających IoT wyprodukowanych przez Microsoft jest element o nazwie Azure IoT Hub. Jest to zaawansowane narzędzie, które pozwala nam na:

  • zarządzanie urządzeniami
  • autoryzację
  • transmisję danych telemetrycznych, plików
  • konfigurację urządzenia za pomocą mechanizmu zwanego Device Twin

Dodatkowo zapewnia funkcjonalność Azure IoT Edge, o której opowiemy w kolejnych wpisach.

Cztery podstawowe formy wymiany danych które udostępnia nam IoT Hub to:

  • Standard messages
  • Device Twin
  • Direct Methods
  • Upload plików

Dane Telemetryczne – Standard Messages

Przesyłanie danych telemetrycznych odbywa się za pomocą standardowych wiadomości. Są one klasycznymi JSON-ami podzielonymi na trzy części: propercje systemowe, propercje użytkownika oraz główną wiadomość – body, w którym znajdują się dane telemetryczne przesyłane do chmury.

Dodatkowo umożliwia przesyłanie komunikatów chmura – urządzenie. Jest to asynchroniczna metoda transportu danych. W momencie gdy urządzenie jest online, następuje synchronizacja wiadomości pomiędzy hubem i devicem.

Device Twin

Metoda pozwalająca na przechowywanie informacji w postaci JSON-a, które są synchronizowane z urządzeniem w trakcie jego cyklu życia. Pozwala ona na wymianę drobnej konfiguracji, ustawień, lub statusów procesów wolnozmiennych.

Struktura JSON-a jest podzielona na dwie części:

  • Tagi – które możemy ustawiać sami.
  • Properties – służą one do wymiany danych pomiędzy urządzeniem a chmurą.

 devicetwins

Direct Methods

Metody bezpośrednie pozwalają zachować nam pozory synchroniczności w komunikacji z urządzeniami. Wywołując daną metodę, backend chmurowy oczekuje na odpowiedź od urządzenia. W momencie braku odpowiedzi urządzenia zostaje zwrócony błąd timeoutu.

Jest to dobra forma komunikacji do obsłużenia krytycznych poleceń dla urządzeń np.

  • przeprowadzenia restartu aplikacji
  • zatrzymania lub włączenia jakiejś funkcjonalności z cyklu praca wentylatora

Komunikacja z backend do IoT Hub realizowana jest po http, natomiast z IoT Hub do urządzenia po AMQP lub MQTT w zależności od ustawień komunikacyjnych urządzenia.

Scenariusze Użycia Poszczególnych Komunikatów

Standardowe zbieranie danych telemetrycznych

Dzięki wykorzystaniu stadard messages, jesteśmy w stanie zbudować systemu zaawansowane monitoringu różnego rodzaju urządzeń, począwszy od klasycznych urządzeń pomiarowych, robotyki aż po zwykłe komputery klasy PC.

Dobrą praktyką mocno rozpowszechnianą przy tworzeniu architektury takich systemów jest podział na dwie ścieżki procesowania danych:

  • hot path
  • cold path.

Pierwsza z nich służy głównie procesowaniu danych w czasie rzeczywistym, co pozwala na różnego rodzaju obliczenia fast data lub konstrukcję systemów zdarzeniowych.

Druga ścieżka – chłodna pozwala na gromadzenie danych do przyszłych analiz typu Big Data, szkolenia modeli ML i tym podobnych rzeczy.

 

standard messages

 

Restart aplikacji na urządzeniach

W procesie życia urządzeń dochodzi do sytuacji, gdzie chcemy wymusić restart działania aplikacji. Dobrym wzorcem, który możemy wykorzystać do tego typu operacji jest poniższy schemat.

Operacja rozpoczyna się od wywołania metody bezpośredniej, która w orkiestratorze (lub aplikacji kontrolerze) wymusza akcję restartu wskazanej aplikacji. Po operacji w Device Twin jest rejestrowany czas, kiedy aplikacja została zrestartowana.

restart app

Update oprogramowania w podejściu klasycznym

W przypadku urządzeń nie wykorzystujących IoT Edga, implementacja procesu update’u oprogramowania może wyglądać w następujący sposób.

Za pomocą direct method wywołujemy metodę pozwalającą na rozpoczęcie procesu aktualizacji poszczególnych aplikacji na urządzeniu. Następnie proces update’u rejestrowany jest w Device Twin.

Po zakończeniu procesu następuje restart urządzenia i reconnect.

software update

Monitoring otoczenia połączony z cognitive services (file upload)

Ciekawym scenariusze z pogranicza IoT i AI jest system monitoringu, który pozwoli nam na kategoryzowanie obiektów za pomocą zdjęć.

W przypadku wystąpienia odpowiedniego eventu (np. czujnik ruchu wykryje aktywność) w monitorowanym środowisku, urządzenie wykonuje zdjęcie, po czym przesyła je do  Azure Storage, po czym zostaje uruchomiona funkcja, który prześle zdjęcie do klasyfikacji i na jej podstawie przeniesie go do innego kontenera, uzupełniając jego metadane.

Po przeniesieniu uruchomi funkcję odpowiedzialną za obsługę danego kontenera i podejmie dalsze działania.

cognitive

Zaawansowane scenariusze

Jeśli chcielibyśmy przyjrzeć się kilku ciekawym predefiniowanym rozwiązaniom end to end z zakresu IoT, to w ramach Azure IoT Suite, Microsoft udostępnia nam trzy przykładowe scenariusze, z kompletną już architekturą oraz gotowymi komponentami, które możemy umieścić w naszej subksrypcji:

Co Dalej?

Jeżeli ciekawią Cię inne usługi dookoła chmury publicznej, nie zapomnij pobrać zestawienia usług Microsoft Azure, Amazon Web Services i Google Cloud Platform.

Zdrówko!

Dołącz do listy mailingowej!

Dołącz do naszego newslettera

Staramy się wysyłać tylko wartościowe informacje, np. co miesiąc dostaniesz spis najważniejszych nowości z chmur Azure, AWS i GCP, z krótkimi opisami i linkami.