Automatyczne zarządzanie urządzeniami i modułami IoT przy użyciu interfejsu wiersza polecenia platformy Azure
Automatyczne zarządzanie urządzeniami w usłudze Azure IoT Hub automatyzuje wiele powtarzających się i złożonych zadań zarządzania dużymi flotami urządzeń. Dzięki automatycznemu zarządzaniu urządzeniami można określić zestaw urządzeń na podstawie ich właściwości, zdefiniować żądaną konfigurację, a następnie zezwolić usłudze IoT Hub na aktualizowanie urządzeń w momencie ich wejścia w zakres. Ta aktualizacja jest wykonywana przy użyciu automatycznej konfiguracji urządzenia lub automatycznej konfiguracji modułu, która pozwala podsumować uzupełnianie i zgodność, obsługiwać scalanie i konflikty oraz wdrażać konfiguracje w podejściu etapowym.
Uwaga
Funkcje opisane w tym artykule są dostępne tylko w warstwie Standardowa usługi IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowej i standardowej/bezpłatnej usługi IoT Hub, zobacz Wybieranie odpowiedniej warstwy usługi IoT Hub dla rozwiązania.
Automatyczne zarządzanie urządzeniami działa przez zaktualizowanie zestawu bliźniaczych reprezentacji urządzeń lub bliźniaczych reprezentacji modułów z żądanymi właściwościami i raportowanie podsumowania opartego na zgłoszonych właściwościach bliźniaczych reprezentacji. Wprowadzono nową klasę i dokument JSON o nazwie konfiguracja , która ma trzy części:
Warunek docelowy definiuje zakres bliźniaczych reprezentacji urządzeń lub bliźniaczych reprezentacji modułu do zaktualizowania. Warunek docelowy jest określany jako zapytanie dotyczące tagów bliźniaczych reprezentacji urządzenia i/lub zgłoszonych właściwości.
Zawartość docelowa definiuje żądane właściwości do dodania lub zaktualizowania w docelowych bliźniaczych reprezentacjach urządzeń lub bliźniaczych reprezentacjach modułów. Zawartość zawiera ścieżkę do sekcji żądanych właściwości, które mają zostać zmienione.
Metryki definiują liczbę podsumowań różnych stanów konfiguracji, takich jak Powodzenie, W toku i Błąd. Metryki niestandardowe są określane jako zapytania dotyczące zgłaszanych właściwości bliźniaczych reprezentacji. Metryki systemowe to domyślne metryki, które mierzą stan aktualizacji bliźniaczej reprezentacji, takie jak liczba docelowych reprezentacji bliźniaczych i liczba pomyślnie zaktualizowanych reprezentacji bliźniaczych.
Konfiguracje automatyczne są uruchamiane po raz pierwszy po utworzeniu konfiguracji, a następnie w pięciu minutach. Zapytania metryk są uruchamiane za każdym razem, gdy jest uruchamiana automatyczna konfiguracja. W centrach IoT w warstwie Standardowa jest obsługiwanych maksymalnie 100 automatycznych konfiguracji; dziesięć w centrach IoT w warstwie Bezpłatna. Obowiązują również limity ograniczania przepustowości. Aby dowiedzieć się więcej, zobacz Limity przydziału i ograniczanie przepustowości.
Wymagania wstępne interfejsu wiersza polecenia
Centrum IoT w ramach subskrypcji platformy Azure. Jeśli nie masz jeszcze centrum, możesz wykonać kroki opisane w temacie Tworzenie centrum IoT Hub.
Interfejs wiersza polecenia platformy Azure w środowisku. Co najmniej wersja interfejsu wiersza polecenia platformy Azure musi być w wersji 2.0.70 lub nowszej. Użyj polecenia
az –-version
w celu przeprowadzenia weryfikacji. Ta wersja obsługuje polecenia rozszerzenia az i wprowadza platformę poleceń Knack.Rozszerzenie IoT dla interfejsu wiersza polecenia platformy Azure.
Uwaga
W tym artykule jest używana najnowsza wersja rozszerzenia Usługi Azure IoT o nazwie azure-iot
. Starsza wersja nosi nazwę azure-cli-iot-ext
. Jednocześnie powinna być zainstalowana tylko jedna wersja. Możesz użyć polecenia az extension list
, aby zweryfikować aktualnie zainstalowane rozszerzenia.
Użyj az extension remove --name azure-cli-iot-ext
polecenia , aby usunąć starszą wersję rozszerzenia.
Użyj az extension add --name azure-iot
polecenia , aby dodać nową wersję rozszerzenia.
Aby zobaczyć, jakie rozszerzenia zostały zainstalowane, użyj polecenia az extension list
.
Implementowanie bliźniaczych reprezentacji
Automatyczne konfiguracje urządzeń wymagają używania bliźniaczych reprezentacji urządzeń do synchronizowania stanu między chmurą a urządzeniami. Aby uzyskać więcej informacji, zobacz Opis bliźniaczej reprezentacji urządzenia w usłudze IoT Hub oraz sposoby jej używania.
Automatyczne konfiguracje modułów wymagają używania bliźniaczych reprezentacji modułów do synchronizowania stanu między chmurą a modułami. Aby uzyskać więcej informacji, zobacz Omówienie bliźniaczych reprezentacji modułów i korzystanie z nich w usłudze IoT Hub.
Używanie tagów do określania docelowych reprezentacji bliźniaczych
Przed utworzeniem konfiguracji należy określić, które urządzenia lub moduły mają mieć wpływ. Usługa Azure IoT Hub identyfikuje urządzenia i używa tagów w bliźniaczej reprezentacji urządzenia oraz identyfikuje moduły używające tagów w bliźniaczej reprezentacji modułu. Każde urządzenie lub moduł może mieć wiele tagów i można je zdefiniować w dowolny sposób, który ma sens dla rozwiązania. Jeśli na przykład zarządzasz urządzeniami w różnych lokalizacjach, dodaj następujące tagi do bliźniaczej reprezentacji urządzenia:
"tags": {
"location": {
"state": "Washington",
"city": "Tacoma"
}
},
Definiowanie docelowej zawartości i metryk
Docelowe zapytania dotyczące zawartości i metryk są określane jako dokumenty JSON opisujące żądane właściwości bliźniaczej reprezentacji urządzenia lub bliźniaczej reprezentacji modułu w celu ustawienia i raportowania właściwości do zmierzenia. Aby utworzyć automatyczną konfigurację przy użyciu interfejsu wiersza polecenia platformy Azure, zapisz docelową zawartość i metryki lokalnie jako pliki .txt. Ścieżki plików są używane w późniejszej sekcji po uruchomieniu polecenia w celu zastosowania konfiguracji do urządzenia.
Oto podstawowy przykład zawartości docelowej dla automatycznej konfiguracji urządzenia:
{
"content": {
"deviceContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
Konfiguracje modułów automatycznych zachowują się bardzo podobnie, ale są one przeznaczone moduleContent
zamiast deviceContent
.
{
"content": {
"moduleContent": {
"properties.desired.chillerWaterSettings": {
"temperature": 38,
"pressure": 78
}
}
}
Oto przykłady zapytań dotyczących metryk:
{
"queries": {
"Compliant": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'",
"Error": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='error'",
"Pending": "select deviceId from devices where configurations.[[chillerdevicesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='pending'"
}
}
Zapytania dotyczące metryk dla modułów są również podobne do zapytań dotyczących urządzeń, ale wybierane z moduleId
devices.modules
polecenia . Na przykład:
{
"queries": {
"Compliant": "select deviceId, moduleId from devices.module where configurations.[[chillermodulesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'"
}
}
Tworzenie konfiguracji
Możesz utworzyć maksymalnie 100 automatycznych konfiguracji w centrach IoT w warstwie Standardowa; dziesięć w centrach IoT w warstwie Bezpłatna. Aby dowiedzieć się więcej, zobacz Limity przydziału i ograniczanie przepustowości.
Urządzenia docelowe można skonfigurować, tworząc konfigurację składającą się z docelowej zawartości i metryk. Użyj następującego polecenia, aby utworzyć konfigurację:
az iot hub configuration create --config-id [configuration id] \
--labels [labels] --content [file path] --hub-name [hub name] \
--target-condition [target query] --priority [int] \
--metrics [metric queries]
--config-id — nazwa konfiguracji, która zostanie utworzona w centrum IoT. Nadaj konfiguracji unikatową nazwę, która ma długość maksymalnie 128 znaków. Małe litery i następujące znaki specjalne są dozwolone:
-+%_*!'
. Spacje są niedozwolone.--labels — dodaj etykiety , aby ułatwić śledzenie konfiguracji. Etykiety to Nazwa, Pary Wartości, które opisują wdrożenie. Na przykład
HostPlatform, Linux
lubVersion, 3.0.1
--content — wbudowany kod JSON lub ścieżka pliku do zawartości docelowej, która ma być ustawiana jako żądane właściwości bliźniaczej reprezentacji.
--hub-name — nazwa centrum IoT, w którym zostanie utworzona konfiguracja. Centrum musi znajdować się w bieżącej subskrypcji. Przełącz się do żądanej subskrypcji za pomocą polecenia
az account set -s [subscription name]
--target-condition — wprowadź warunek docelowy, aby określić, które urządzenia lub moduły będą objęte tą konfiguracją. W przypadku automatycznej konfiguracji urządzenia warunek jest oparty na tagach bliźniaczej reprezentacji urządzenia lub żądanych właściwościach bliźniaczej reprezentacji urządzenia i powinien być zgodny z formatem wyrażenia. Na przykład:
tags.environment='test'
lubproperties.desired.devicemodel='4000x'
. W przypadku automatycznej konfiguracji modułu warunek jest oparty na tagach bliźniaczej reprezentacji modułu lub żądanych właściwościach bliźniaczej reprezentacji modułu. Na przykład:from devices.modules where tags.environment='test'
lubfrom devices.modules where properties.reported.chillerProperties.model='4000x'
.--priority — dodatnia liczba całkowita. W przypadku, gdy co najmniej dwie konfiguracje są przeznaczone dla tego samego urządzenia lub modułu, zostanie zastosowana konfiguracja o najwyższej wartości liczbowej priorytetu.
--metrics — ścieżka pliku do zapytań dotyczących metryk. Metryki zawierają liczby podsumowań różnych stanów, które urządzenie lub moduł może zgłaszać z powrotem po zastosowaniu zawartości konfiguracji. Można na przykład utworzyć metrykę dla oczekujących zmian ustawień, metrykę błędów i metrykę dla udanych zmian ustawień.
Monitorowanie konfiguracji
Użyj następującego polecenia, aby wyświetlić zawartość konfiguracji:
az iot hub configuration show --config-id [configuration id] \
--hub-name [hub name]
--config-id — nazwa konfiguracji, która istnieje w centrum IoT.
--hub-name — nazwa centrum IoT, w którym istnieje konfiguracja. Centrum musi znajdować się w bieżącej subskrypcji. Przełącz się do żądanej subskrypcji za pomocą polecenia
az account set -s [subscription name]
Sprawdź konfigurację w oknie polecenia. Właściwość metrics wyświetla liczbę dla każdej metryki , która jest oceniana przez każde centrum:
targetedCount — metryka systemu określająca liczbę bliźniaczych reprezentacji urządzeń lub bliźniaczych reprezentacji modułów w usłudze IoT Hub, która jest zgodna z warunkiem określania wartości docelowej.
appliedCount — metryka systemowa określa liczbę urządzeń lub modułów, które miały zastosowaną zawartość docelową.
Metryka niestandardowa — wszystkie zdefiniowane metryki to metryki użytkownika.
Listę identyfikatorów urządzeń, identyfikatorów modułów lub obiektów dla każdej z metryk można wyświetlić przy użyciu następującego polecenia:
az iot hub configuration show-metric --config-id [configuration id] \
--metric-id [metric id] --hub-name [hub name] --metric-type [type]
--config-id — nazwa wdrożenia, które istnieje w centrum IoT.
--metric-id — nazwa metryki, dla której chcesz wyświetlić listę identyfikatorów urządzeń lub identyfikatorów modułów, na przykład
appliedCount
.--hub-name — nazwa centrum IoT, w którym istnieje wdrożenie. Centrum musi znajdować się w bieżącej subskrypcji. Przejdź do żądanej subskrypcji za pomocą polecenia
az account set -s [subscription name]
.--typ metryki — typ metryki może mieć wartość
system
lubuser
. Metryki systemowe totargetedCount
iappliedCount
. Wszystkie inne metryki to metryki użytkowników.
Modyfikowanie konfiguracji
Podczas modyfikowania konfiguracji zmiany są natychmiast replikowane do wszystkich urządzeń docelowych.
Jeśli zaktualizujesz warunek docelowy, wystąpią następujące aktualizacje:
Jeśli bliźniaka nie spełnia starego warunku docelowego, ale spełnia nowy warunek docelowy, a ta konfiguracja jest najwyższym priorytetem dla tej reprezentacji bliźniaczej, zostanie zastosowana ta konfiguracja.
Jeśli obecnie uruchomiona ta konfiguracja bliźniaczej reprezentacji nie spełnia już warunku docelowego, ustawienia z konfiguracji zostaną usunięte, a bliźniacy zostaną zmodyfikowane przez kolejną konfigurację o najwyższym priorytecie.
Jeśli obecnie uruchomiona ta konfiguracja bliźniaczej reprezentacji nie spełnia już warunku docelowego i nie spełnia warunków docelowych innych konfiguracji, ustawienia z konfiguracji zostaną usunięte i żadne inne zmiany nie zostaną wprowadzone w bliźniaczej reprezentacji.
Użyj następującego polecenia, aby zaktualizować konfigurację:
az iot hub configuration update --config-id [configuration id] \
--hub-name [hub name] --set [property1.property2='value']
--config-id — nazwa konfiguracji, która istnieje w centrum IoT.
--hub-name — nazwa centrum IoT, w którym istnieje konfiguracja. Centrum musi znajdować się w bieżącej subskrypcji. Przejdź do żądanej subskrypcji za pomocą polecenia
az account set -s [subscription name]
.--set — zaktualizuj właściwość w konfiguracji. Możesz zaktualizować następujące właściwości:
targetCondition — na przykład
targetCondition=tags.location.state='Oregon'
Etykiety
priority
Usuwanie konfiguracji
Po usunięciu konfiguracji wszystkie bliźniacze reprezentacje urządzenia lub bliźniacze reprezentacje modułu będą miały kolejną konfigurację o najwyższym priorytcie. Jeśli bliźniacze reprezentacje nie spełniają warunku docelowego żadnej innej konfiguracji, nie zostaną zastosowane żadne inne ustawienia.
Użyj następującego polecenia, aby usunąć konfigurację:
az iot hub configuration delete --config-id [configuration id] \
--hub-name [hub name]
--config-id — nazwa konfiguracji, która istnieje w centrum IoT.
--hub-name — nazwa centrum IoT, w którym istnieje konfiguracja. Centrum musi znajdować się w bieżącej subskrypcji. Przejdź do żądanej subskrypcji za pomocą polecenia
az account set -s [subscription name]
.
Następne kroki
W tym artykule przedstawiono sposób konfigurowania i monitorowania urządzeń IoT na dużą skalę.
Aby dowiedzieć się, jak zbiorczo zarządzać tożsamościami urządzeń usługi IoT Hub, zobacz Importowanie i eksportowanie tożsamości urządzeń usługi IoT Hub zbiorczo