Automatyczne zarządzanie urządzeniami i modułami IoT przy użyciu interfejsu wiersza polecenia platformy Azure

Automatyczne zarządzanie urządzeniami w 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 pozwolić IoT Hub zaktualizować urządzenia, gdy wchodzą 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 IoT Hub. Aby uzyskać więcej informacji o warstwach podstawowa i Standardowa/Bezpłatna IoT Hub, zobacz Wybieranie odpowiedniej warstwy 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łu z żądanymi właściwościami i raportowanie podsumowania opartego na zgłoszonych właściwościach bliźniaczej reprezentacji. Wprowadza nową klasę i dokument JSON nazywany konfiguracją , 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łaszanych 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łu. Zawartość zawiera ścieżkę do sekcji żądanych właściwości do zmiany.

  • 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 przy każdym uruchomieniu automatycznej konfiguracji. 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

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 polecenia az extension add --name azure-iot , aby dodać nową wersję rozszerzenia.

Aby zobaczyć, jakie rozszerzenia zostały zainstalowane, użyj polecenia az extension list.

Implementowanie reprezentacji bliźniaczych

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 Opis bliźniaczych reprezentacji modułów i korzystanie z nich w 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. 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 twojego 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, które opisują żądane właściwości bliźniaczej reprezentacji urządzenia lub bliźniaczej reprezentacji modułu, aby ustawić i zgłosić właściwości do pomiaru. Aby utworzyć konfigurację automatyczną 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
      }
    }
}

Automatyczne konfiguracje modułów 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 moduleIddevices.moduleslisty . Przykład:

{
  "queries": {
    "Compliant": "select deviceId, moduleId from devices.module where configurations.[[chillermodulesettingswashington]].status = 'Applied' AND properties.reported.chillerWaterSettings.status='current'"
  }
}

Tworzenie konfiguracji

W centrach IoT w warstwie Standardowa można utworzyć maksymalnie 100 automatycznych konfiguracji; 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 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 pary Nazwa, Wartość, które opisują wdrożenie. Na przykład HostPlatform, Linux lub Version, 3.0.1

  • --content — wbudowany kod JSON lub ścieżka pliku do docelowej zawartości, 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. Przejdź 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' lub properties.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' lub from 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ć po zastosowaniu zawartości konfiguracji. Można na przykład utworzyć metrykę dla zmian ustawień oczekujących, metrykę błędów i metrykę dla pomyślnych 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 Hub, 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]

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 systemowa określająca liczbę bliźniaczych reprezentacji urządzeń lub bliźniaczych reprezentacji modułów w IoT Hub, które są zgodne 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 są metrykami użytkowników.

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 Hub, 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 być system lub user. Metryki systemowe to targetedCount i appliedCount. 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źniacze reprezentacja 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 bliźniaca aktualnie uruchomiona ta konfiguracja nie spełnia już warunku docelowego, ustawienia z konfiguracji zostaną usunięte, a bliźniacze reprezentacja zostanie zmodyfikowana przez kolejną konfigurację o najwyższym priorytecie.

  • Jeśli bliźniacze reprezentacja aktualnie uruchomiona tej konfiguracji nie spełnia już warunku docelowego i nie spełnia warunków docelowych innych konfiguracji, ustawienia z konfiguracji zostaną usunięte, a żadne inne zmiany nie zostaną wprowadzone na bliźniaczej reprezentacji.

Aby zaktualizować konfigurację, użyj następującego polecenia:

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 Hub, 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żna 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łów przyjmują kolejną konfigurację najwyższego priorytetu. 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 Hub, 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ń IoT Hub, zobacz Importowanie i eksportowanie tożsamości urządzeń IoT Hub zbiorczo