Implementacja urządzeń i najlepsze rozwiązania dotyczące usługi IoT Central

Ten artykuł zawiera informacje o sposobie implementowania urządzeń łączących się z aplikacją usługi IoT Central. Zawiera również niektóre najlepsze rozwiązania. Aby dowiedzieć się więcej na temat ogólnego procesu połączenia, zobacz Połączenie urządzeniu.

Aby uzyskać przykładowy kod implementacji urządzenia, zobacz Samouczek: tworzenie i łączenie aplikacji klienckiej z aplikacją usługi Azure IoT Central.

Implementowanie urządzenia

Urządzenia, które łączą się z usługą IoT Central, powinny przestrzegać konwencji IoT Plug and Play. Jedną z tych konwencji jest to, że urządzenie powinno wysłać identyfikator modelu modelu, który implementuje podczas nawiązywania połączenia. Identyfikator modelu umożliwia aplikacji usługi IoT Central przypisanie urządzenia do odpowiedniego szablonu urządzenia.

Szablon urządzenia usługi IoT Central zawiera model określający zachowanie urządzenia tego typu, które powinno zostać zaimplementowane. Zachowania obejmują dane telemetryczne, właściwości i polecenia.

Każdy model ma unikatowy identyfikator modelu cyfrowej reprezentacji bliźniaczej (DTMI), taki jak dtmi:com:example:Thermostat;1. Gdy urządzenie łączy się z usługą IoT Central, wysyła jednostki DTMI modelu, który implementuje. Usługa IoT Central może następnie przypisać prawidłowy szablon urządzenia do urządzenia.

Usługa IoT Plug and Play definiuje zestaw konwencji , które urządzenie powinno przestrzegać podczas implementowania modelu języka DTDL (Digital Twin Definition Language).

Zestawy SDK urządzeń Azure IoT obejmują obsługę konwencji IoT Plug and Play.

Model urządzenia

Model urządzenia jest definiowany przy użyciu języka modelowania DTDL w wersji 2 . Ten język umożliwia zdefiniowanie:

  • Dane telemetryczne wysyłane przez urządzenie. Definicja zawiera nazwę i typ danych telemetrii. Na przykład urządzenie wysyła dane telemetryczne temperatury jako podwójne.
  • Właściwości raportów urządzenia do usługi IoT Central. Definicja właściwości zawiera jej nazwę i typ danych. Na przykład urządzenie zgłasza stan zaworu jako wartość logiczną.
  • Właściwości, które urządzenie może odbierać z usługi IoT Central. Opcjonalnie możesz oznaczyć właściwość jako zapisywalną. Na przykład usługa IoT Central wysyła temperaturę docelową jako dwukrotną do urządzenia.
  • Polecenia, na które odpowiada urządzenie. Definicja zawiera nazwę polecenia oraz nazwy i typy danych dowolnego parametru. Na przykład urządzenie odpowiada na polecenie ponownego uruchamiania, które określa, ile sekund oczekiwania przed ponownym uruchomieniem.

Uwaga

Usługa IoT Central definiuje niektóre rozszerzenia języka DTDL w wersji 2. Aby dowiedzieć się więcej, zobacz Rozszerzenie usługi IoT Central.

Model DTDL może być nieskładnikowym lub wieloskładnikowym modelem:

  • Model bez składników: Prosty model nie używa osadzonych ani kaskadowych składników. Wszystkie dane telemetryczne, właściwości i polecenia są definiowane jako pojedynczy składnik główny. Przykład można znaleźć w modelu termostatu.
  • Model wieloskładnikowy. Bardziej złożony model, który zawiera co najmniej dwa składniki. Składniki te obejmują jeden składnik główny i co najmniej jeden zagnieżdżony składnik. Aby zapoznać się z przykładem, zobacz model Kontrolera temperatury.

Napiwek

Pełny model urządzenia lub pojedynczy interfejs można zaimportować i wyeksportować z szablonu urządzenia usługi IoT Central jako plik DTDL w wersji 2.

Aby dowiedzieć się więcej na temat modeli urządzeń, zobacz Przewodnik modelowania technologii IoT Plug and Play

Konwencje

Urządzenie powinno przestrzegać konwencji IoT Plug and Play podczas wymiany danych z usługą IoT Central. Konwencje obejmują:

  • Wyślij dtMI podczas nawiązywania połączenia z usługą IoT Central.
  • Wyślij poprawnie sformatowane ładunki i metadane JSON do usługi IoT Central.
  • Poprawne reagowanie na zapisywalne właściwości i polecenia z usługi IoT Central.
  • Postępuj zgodnie z konwencjami nazewnictwa poleceń składników.

Uwaga

Obecnie usługa IoT Central nie obsługuje w pełni typów danych tablicy DTDL i danych geoprzestrzennych.

Aby dowiedzieć się więcej na temat konwencji IoT Plug and Play, zobacz Konwencje IoT Plug and Play.

Aby dowiedzieć się więcej o formacie komunikatów JSON wymienianych przez urządzenie z usługą IoT Central, zobacz Telemetria, właściwość i ładunki poleceń.

Zestawy SDK urządzeń

Użyj jednego z zestawów SDK urządzeń Azure IoT, aby zaimplementować zachowanie urządzenia. Kod powinien:

  • Zarejestruj urządzenie w usłudze DPS i użyj informacji z usługi DPS, aby nawiązać połączenie z wewnętrznym centrum IoT w aplikacji usługi IoT Central.
  • Ogłaszanie dtMI modelu, który implementuje urządzenie.
  • Wysyłaj dane telemetryczne w formacie, który określa model urządzenia. Usługa IoT Central używa modelu w szablonie urządzenia do określania sposobu używania telemetrii do wizualizacji i analizy.
  • Synchronizuj wartości właściwości między urządzeniem i usługą IoT Central. Model określa nazwy właściwości i typy danych, aby usługa IoT Central mogła wyświetlać informacje.
  • Zaimplementuj programy obsługi poleceń dla poleceń określonych w modelu. Model określa nazwy poleceń i parametry, których urządzenie powinno używać.

Aby uzyskać więcej informacji na temat roli szablonów urządzeń, zobacz Co to są szablony urządzeń?.

Poniższa tabela zawiera podsumowanie sposobu mapowania funkcji urządzeń usługi Azure IoT Central na funkcje usługi IoT Hub:

Azure IoT Central Azure IoT Hub
Telemetria Przesyłanie komunikatów z urządzenia do chmury
Polecenia w trybie offline Obsługa komunikatów z chmury do urządzenia
Właściwości Zgłoszone właściwości bliźniaczej reprezentacji urządzenia
Właściwość (zapisywalna) Żądane i zgłoszone właściwości bliźniaczej reprezentacji urządzenia
Polecenie Metody bezpośrednie

Protokoły komunikacyjne

Protokoły komunikacyjne, których urządzenie może używać do nawiązywania połączenia z usługą IoT Central, obejmują MQTT, AMQP i HTTPS. Wewnętrznie usługa IoT Central używa centrum IoT Hub do włączania łączności urządzeń. Aby uzyskać więcej informacji na temat protokołów komunikacyjnych, które usługa IoT Hub obsługuje na potrzeby łączności urządzeń, zobacz Wybieranie protokołu komunikacyjnego.

Jeśli urządzenie nie może używać żadnego z obsługiwanych protokołów, użyj usługi Azure IoT Edge do przeprowadzenia konwersji protokołu. Usługa IoT Edge obsługuje inne scenariusze analizy na urządzeniach brzegowych w celu odciążania przetwarzania z aplikacji usługi Azure IoT Central.

Znaczniki czasu telemetrii

Domyślnie usługa IoT Central używa komunikatu w kolejce, gdy wyświetla dane telemetryczne na pulpitach nawigacyjnych i wykresach. Czas kolejkowania komunikatów jest ustawiany wewnętrznie, gdy usługa IoT Central odbiera komunikat z urządzenia.

Urządzenie może ustawić właściwość podczas tworzenia komunikatu iothub-creation-time-utc do wysłania do usługi IoT Central. Jeśli ta właściwość jest obecna, usługa IoT Central używa jej podczas wyświetlania danych telemetrycznych na pulpitach nawigacyjnych i wykresach.

Możesz wyeksportować zarówno czas w kolejce, jak i iothub-creation-time-utc właściwość podczas eksportowania danych telemetrycznych z aplikacji usługi IoT Central.

Aby dowiedzieć się więcej o właściwościach komunikatów, zobacz Właściwości systemu komunikatów usługi IoT Hub z urządzenia do chmury.

Najlepsze rozwiązania

Te zalecenia pokazują, jak zaimplementować urządzenia w celu korzystania z wbudowanej wysokiej dostępności, odzyskiwania po awarii i automatycznego skalowania w usłudze IoT Central.

Obsługa błędów połączeń

W celu skalowania lub odzyskiwania po awarii usługa IoT Central może zaktualizować swoje bazowe centra IoT. Aby zachować łączność, kod urządzenia powinien obsługiwać określone błędy połączenia przez ustanowienie połączenia z nowym punktem końcowym usługi IoT Hub.

Jeśli urządzenie otrzyma dowolny z następujących błędów podczas nawiązywania połączenia, powinien ponownie aprowizacji urządzenia z usługą DPS, aby uzyskać nową parametry połączenia. Te błędy oznaczają, że parametry połączenia nie jest już prawidłowa:

  • Nieosiągalny punkt końcowy usługi IoT Hub.
  • Wygasły token zabezpieczający.
  • Urządzenie wyłączone w usłudze IoT Hub.

Jeśli urządzenie otrzymuje którykolwiek z następujących błędów podczas nawiązywania połączenia, powinien użyć strategii wycofywania w celu ponawiania próby nawiązania połączenia. Te błędy oznaczają, że parametry połączenia jest nadal prawidłowa, ale przejściowe warunki zatrzymują połączenie urządzenia:

  • Urządzenie zablokowane przez operatora.
  • Błąd wewnętrzny 500 z usługi.

Aby dowiedzieć się więcej na temat kodów błędów urządzenia, zobacz Rozwiązywanie problemów z połączeniami urządzeń.

Aby dowiedzieć się więcej na temat implementowania automatycznych ponownych połączeń, zobacz Zarządzanie ponownymi połączeniami urządzeń w celu tworzenia odpornych aplikacji.

Testowanie możliwości trybu failover

Interfejs wiersza polecenia platformy Azure umożliwia testowanie możliwości trybu failover kodu urządzenia. Polecenie interfejsu wiersza polecenia działa przez tymczasowe przełączenie rejestracji urządzenia do innego wewnętrznego centrum IoT. Aby sprawdzić, czy tryb failover urządzenia zadziałał, sprawdź, czy urządzenie nadal wysyła dane telemetryczne i odpowiada na polecenia.

Aby uruchomić test trybu failover dla urządzenia, uruchom następujące polecenie:

az iot central device manual-failover \
    --app-id {Application ID of your IoT Central application} \
    --device-id {Device ID of the device you're testing} \
    --ttl-minutes {How to wait before moving the device back to it's original IoT hub}

Napiwek

Aby znaleźć identyfikator aplikacji, przejdź do pozycji Zarządzanie aplikacjami > w aplikacji usługi IoT Central.

Jeśli polecenie powiedzie się, zobaczysz dane wyjściowe podobne do następującego przykładu:

Command group 'iot central device' is in preview and under development. Reference and support levels: https://aka.ms/CLI_refstatus
{
  "hubIdentifier": "6bd4...bafa",
  "message": "Success! This device is now being failed over. You can check your device'’'s status using 'iot central device registration-info' command. The device will revert to its original hub at Tue, 18 May 2021 11:03:45 GMT. You can choose to failback earlier using device-manual-failback command. Learn more: https://aka.ms/iotc-device-test"
}

Aby dowiedzieć się więcej na temat polecenia interfejsu wiersza polecenia, zobacz az iot central device manual-failover.

Teraz możesz sprawdzić, czy dane telemetryczne z urządzenia nadal docierają do aplikacji usługi IoT Central.

Napiwek

Aby wyświetlić przykładowy kod urządzenia, który obsługuje tryb failover w różnych językach programowania, zobacz Klienci wysokiej dostępności usługi IoT Central.

Następne kroki

Poniżej przedstawiono kilka sugerowanych następnych kroków: