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 Łączenie urządzenia.
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
W przypadku usługi IoT Central 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ń
Aby zaimplementować kod uruchamiany na urządzeniu, należy użyć jednego z zestawów SDK urządzeń usługi Azure IoT. Akcje, które powinien implementować kod, obejmują:
- 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. Aby określić, jak używać danych telemetrycznych do wizualizacji i analizy, usługa IoT Central używa modelu w szablonie urządzenia.
- 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.
Aprowizowanie urządzeń
W miarę zmiany liczby centrów IoT w aplikacji urządzenie może wymagać połączenia z innym centrum.
Zanim urządzenie połączy się z usługą IoT Central, musi być zarejestrowane i aprowidowane w usługach bazowych. Po dodaniu urządzenia do aplikacji usługi IoT Central usługa IoT Central dodaje wpis do grupy rejestracji usługi DPS. Informacje z grupy rejestracji, takie jak zakres identyfikatorów, identyfikator urządzenia i klucze, są udostępniane w interfejsie użytkownika usługi IoT Central.
Gdy urządzenie najpierw łączy się z aplikacją usługi IoT Central, usługa DPS aprowizuje urządzenie w jednej z połączonych centrów IoT grupy rejestracji. Urządzenie jest następnie skojarzone z tym centrum IoT Hub. Usługa DPS używa zasad alokacji do równoważenia obciążenia aprowizowania w centrach IoT w aplikacji. Ten proces zapewnia, że każde centrum IoT ma podobną liczbę aprowizowanych urządzeń.
Aby dowiedzieć się więcej na temat rejestracji i aprowizacji w usłudze IoT Central, zobacz Przewodnik po łączności urządzeń usługi IoT Central.
Obsługa błędów połączeń
Gdy usługa IoT Central automatycznie skaluje lub obsługuje scenariusz odzyskiwania po awarii, 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.
Obecnie urządzenia usługi IoT Edge nie mogą przechodzić między centrami IoT.
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:
- Ukończ samouczek Tworzenie i łączenie aplikacji klienckiej z aplikacją usługi Azure IoT Central
- Przegląd pojęć dotyczących uwierzytelniania urządzeń w usłudze IoT Central
- Dowiedz się, jak monitorować łączność urządzeń przy użyciu interfejsu wiersza polecenia platformy Azure
- Przeczytaj o urządzeniach usługi Azure IoT Edge i usłudze Azure IoT Central