Udostępnij za pośrednictwem


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.modulespolecenia . 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 lub Version, 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' 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ć 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 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ź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