IoT rejestracja urządzeń w wielu IoT Hubach automatycznie czyli Device Provisioning Service


Dodawanie pojedynczego urządzenia poprzez konfigurację connection stringa na każdym fizycznym urządzeniu jest czasochłonne i potrafi być uciążliwe (restartowanie urządzenia, wchodzenie w tryb konfiguracji, wgrywanie nowego oprogramowania, lub nowej wersji oprogramowania).
Sytuacja pogorsza się jeszcze, gdy mamy wiele IoT Hubów albo gdy któryś przestanie działać lub zmieni adres.
Tym bardziej, że rozmawiamy tutaj o urządzeniach, które powinny działać co najmniej kilka lat, pewnie nawet bliżej kilkanaście lub kilkadziesiąt lat.
Brzmi to nieprawdopodobnie. Planować nie tylko system, ale i sprzęt na kilkanaście lat.
Ale to normalne, zwłaszcza w przemyśle. Choć i w zastosowaniach domowych niektóre sprzęty nie będziemy wymieniać zbyt często np. piec albo może windę albo system rolet w okach.

Device Provisioning Service

Azure proponuje Device Provisioning Service w odpowiedzi. To serwis, który zajmuje się tylko pierwszym podłączeniem urządzenia i przekazaniem informacji co dalej.


DPS konfiguracja

Załóżmy, że mamy kilka IoT Hubów i jeden Device Provisioning Service. DPS ma skonfigurowane IoT Huby i sposób dystrybucji urządzeń do IoT Hubów. Mamy tutaj do wyboru

  • Rozproszenie geograficzne, czyli najmniejsze opóźnienie w komunikacji IoT Hub - urządzenie
  • Równe obciążenie IoT Hubów - przydatne przy większej ilości hubów w bliskiej geolokalizacji
  • Twórczość własna, czyli możliwość podpięcia Azure Function, w której określimy sobie warunki przydziału do poszczególnych hubów. To podejście jest przydatne np. dla rozwiązań multitenancy

Proces

W portalu jest niewiele elementów które można skonfigurować dla DPS. Ważniejsze jest zrozumienie procesu. Przejdźmy więc cały proces.

  1. Fabryka. Urządzenia elektryczne lepiej działają podłączone do prądu, ale i tak najpierw muszą zostać wyprodukowane.

    Mam więc fabrykę, która wytwarza gotowe zielone płytki, lutuje podzespoły, czujniki i chipsety. W fabryce mamy też etap wgrywania firmware i nadawania unikatowego identyfikatora każdego urządzenie. Wgrać firmware możemy też później, ale dla ułatwienia załóżmy, że odbywa się to w procesie produkcji.

    Wraz z firmwarem konfigurujemy na urządzeniu adres DPS.
    Natomiast identyfikator urządzenia dodajemy do enrolement list w DPS.

    To takie podstawowe dane. Urządzenie wie, gdzie ma się podłączyć, jak się obudzi, natomiast serwis wie, że może się spodziewać konkretnego egzemplarza kiedyś w przyszłości.
  2. Teraz urządzenie może sobie czekać na sprzeda, mówimy tutaj już o sprzedaży do użytkownika końcowego, a może raczej docelowego miejsca uruchomienia.

    Gdy urządzenie w końcu zostanie dostarczone na swoje miejsce pracy i podłączone do Internetu, wie, że powinno podłączyć się do swojego DPS i przedstawić swoim identyfikatorem.
  3. DPS stwierdzi: dobrze ja Cię znam, to od teraz będziesz się komunikować z takim IoT Hubem, a zanim sobie pójdziesz, to masz tutaj jeszcze swoją początkową konfigurację.
  4. Teraz urządzenie komunikuje się już tylko ze swoim jednym, nadanym IoT Hubem

Jeśli będzie taka konieczność, możemy wymusić ponowny provisioning konkretnego urządzenia lub całej grupy urządzeń.
W ten sposób urządzenie zawsze może powrócić do stanu „jestem 1234 nie wiem, gdzie mam iść dalej?”
Dzięki DPS możemy rozbudowywać dowolnie nasze rozwiązanie, nie martwiąc się zmianą adresów.

Ograniczenie

Warto pamiętać, że DPS może mieć skonfigurowane tylko 10 IoT Hubów per subskrypcję. Na szczęście DPS może działać na kilku subskrypcjach na raz.

Konfiguracja urządzenia

Aby móc dodawać grupy urządzeń, należy się posługiwać certyfikatem X.509.
W pozostałych typach autentykacji (klucz symetryczny i TPL) musimy dodawać pojedynczo nasze urządzenia.
Ja dodałam swojego DevKita za pomocą self-signed certyficate, który wgrywany jest do security chipset. Tutaj znajduje się tutorial, ale nie był on dla mnie oczywisty. Wygenerowanie certyfikatu wymaga podania adresu mac, a w tutorialu nie ma jasno powiedziane skąd go pobrać. Dlatego nagrałam filmik gdzie, co włączyć, aby uzyskać komplet informacji.




Jeszcze na koniec screen z kodu firmware'u gdzie podajemy adres URI oraz identyfikator naszego DPS. Nie mamy żadnych dodatkowych konfiguracji (poza certyfikatem), dlatego łatwo założyć dłuższe działanie takiego oprogramowania, bez konieczności nadpisywania firmwaru.


Komentarze

Popularne posty