Planowanie i emisja zadań (interfejs wiersza polecenia platformy Azure)
Usługa Azure IoT Hub umożliwia planowanie i śledzenie zadań, które aktualizują miliony urządzeń. Użyj zadań, aby:
- Aktualizowanie żądanych właściwości
- Aktualizowanie tagów
- Wywoływanie metod bezpośrednich
Koncepcyjnie zadanie opakowuje jedną z tych akcji i śledzi postęp wykonywania względem zestawu urządzeń. Zestaw urządzeń, z którymi współdziała zadanie, jest definiowany przez zapytanie bliźniaczej reprezentacji urządzenia. Na przykład aplikacja zaplecza może używać zadania do wywoływania metody ponownego uruchamiania na 10 000 urządzeniach określonych przez zapytanie bliźniaczej reprezentacji urządzenia i zaplanowane w przyszłości. Następnie aplikacja może śledzić postęp, gdy każde z tych urządzeń odbiera i wykonuje metodę ponownego rozruchu.
Dowiedz się więcej o każdej z tych możliwości w następujących artykułach:
Bliźniacze reprezentacje urządzenia i właściwości: Wprowadzenie do bliźniaczych reprezentacji urządzeń oraz Omówienie bliźniaczych reprezentacji urządzeń i korzystanie z nich w usłudze IoT Hub
Metody bezpośrednie: Przewodnik dewelopera usługi IoT Hub — metody bezpośrednie
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.
W tym artykule pokazano, jak utworzyć dwie sesje interfejsu wiersza polecenia platformy Azure:
Sesja, która tworzy symulowane urządzenie. Symulowane urządzenie jest skonfigurowane do zwracania kodu stanu i ładunku JSON po wywołaniu dowolnej metody bezpośredniej.
Sesja, która tworzy dwa zaplanowane zadania. Pierwsze zadanie wywołuje metodę bezpośrednią, a drugie zadanie aktualizuje żądaną właściwość bliźniaczej reprezentacji urządzenia na symulowanym urządzeniu utworzonym w innej sesji.
Wymagania wstępne
Interfejs wiersza polecenia platformy Azure. Możesz również uruchomić polecenia w tym artykule przy użyciu usługi Azure Cloud Shell, interaktywnej powłoki interfejsu wiersza polecenia działającej w przeglądarce lub w aplikacji, takiej jak Terminal Windows. Jeśli używasz usługi Cloud Shell, nie musisz instalować żadnych elementów. Jeśli wolisz używać interfejsu wiersza polecenia lokalnie, ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.36 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Aby zainstalować lokalnie lub uaktualnić interfejs wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.Centrum IoT w ramach subskrypcji platformy Azure. Jeśli nie masz jeszcze centrum, możesz wykonać kroki opisane w temacie Tworzenie centrum IoT Hub.
Upewnij się, że port 8883 jest otwarty w zaporze. Przykład urządzenia w tym artykule używa protokołu MQTT, który komunikuje się za pośrednictwem portu 8883. Ten port może zostać zablokowany w niektórych środowiskach sieci firmowych i edukacyjnych. Aby uzyskać więcej informacji i sposobów obejścia tego problemu, zobacz Nawiązywanie połączenia z usługą IoT Hub (MQTT).
Przygotowywanie usługi Cloud Shell
Jeśli chcesz użyć usługi Azure Cloud Shell, musisz go najpierw uruchomić i skonfigurować. Jeśli używasz interfejsu wiersza polecenia lokalnie, przejdź do sekcji Przygotowywanie dwóch sesji interfejsu wiersza polecenia.
Wybierz ikonę usługi Cloud Shell z nagłówka strony w witrynie Azure Portal.
Uwaga
Jeśli po raz pierwszy użyto usługi Cloud Shell, zostanie wyświetlony monit o utworzenie magazynu, który jest wymagany do korzystania z usługi Cloud Shell. Wybierz subskrypcję, aby utworzyć konto magazynu i udział usługi Microsoft Azure Files.
Użyj selektora środowiska na pasku narzędzi usługi Cloud Shell, aby wybrać preferowane środowisko interfejsu wiersza polecenia. W tym artykule jest używane środowisko powłoki Bash . Możesz również użyć środowiska programu PowerShell .
Uwaga
Niektóre polecenia wymagają innej składni lub formatowania w środowiskach powłoki Bash i programu PowerShell . Aby uzyskać więcej informacji, zobacz Porady dotyczące pomyślnego korzystania z interfejsu wiersza polecenia platformy Azure.
Przygotowywanie dwóch sesji interfejsu wiersza polecenia
Następnie należy przygotować dwie sesje interfejsu wiersza polecenia platformy Azure. Jeśli używasz usługi Cloud Shell, uruchamiasz te sesje na oddzielnych kartach usługi Cloud Shell. W przypadku korzystania z lokalnego klienta interfejsu wiersza polecenia należy uruchomić oddzielne wystąpienia interfejsu wiersza polecenia. Użyj oddzielnych sesji interfejsu wiersza polecenia dla następujących zadań:
- Pierwsza sesja symuluje urządzenie IoT komunikujące się z centrum IoT.
- Druga sesja planuje zadania dla symulowanego urządzenia za pomocą centrum IoT Hub.
Uwaga
Interfejs wiersza polecenia platformy Azure wymaga zalogowania się na koncie platformy Azure. Jeśli używasz usługi Cloud Shell, logujesz się automatycznie na swoje konto platformy Azure. Jeśli używasz lokalnego klienta interfejsu wiersza polecenia, musisz zalogować się do każdej sesji interfejsu wiersza polecenia. Cała komunikacja między sesją powłoki interfejsu wiersza polecenia platformy Azure a centrum IoT jest uwierzytelniana i szyfrowana. W związku z tym ten artykuł nie wymaga dodatkowego uwierzytelniania, które będzie używane z rzeczywistym urządzeniem, takim jak parametry połączenia. Aby uzyskać więcej informacji na temat logowania za pomocą interfejsu wiersza polecenia platformy Azure, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.
W pierwszej sesji interfejsu wiersza polecenia uruchom polecenie az extension add . Polecenie dodaje rozszerzenie Microsoft Azure IoT dla interfejsu wiersza polecenia platformy Azure do powłoki interfejsu wiersza polecenia. Rozszerzenie dodaje polecenia specyficzne dla usług IoT Hub, IoT Edge i IoT Device Provisioning Service (DPS) do interfejsu wiersza polecenia platformy Azure. Po zainstalowaniu rozszerzenia nie trzeba jej ponownie instalować w żadnej sesji usługi Cloud Shell.
az extension add --name azure-iot
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ć poleceniaaz 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
.Otwórz drugą sesję interfejsu wiersza polecenia. Jeśli używasz usługi Cloud Shell w przeglądarce, wybierz ikonę Otwórz nową sesję na pasku narzędzi pierwszej sesji interfejsu wiersza polecenia. Jeśli używasz interfejsu wiersza polecenia lokalnie, otwórz drugie wystąpienie interfejsu wiersza polecenia.
Tworzenie i symulowanie urządzenia
W tej sekcji utworzysz tożsamość urządzenia dla centrum IoT w pierwszej sesji interfejsu wiersza polecenia, a następnie zasymulujesz urządzenie przy użyciu tej tożsamości urządzenia. Symulowane urządzenie odpowiada na zadania zaplanowane w drugiej sesji interfejsu wiersza polecenia.
Aby utworzyć i uruchomić symulowane urządzenie:
W pierwszej sesji interfejsu wiersza polecenia uruchom polecenie az iot hub device-identity create , zastępując następujące symbole zastępcze odpowiednimi wartościami. To polecenie tworzy tożsamość urządzenia dla symulowanego urządzenia.
{DeviceName}. Nazwa symulowanego urządzenia.
{HubName}. Nazwa centrum IoT Hub.
az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName}
W pierwszej sesji interfejsu wiersza polecenia uruchom polecenie az iot device simulate , zastępując następujące symbole zastępcze odpowiednimi wartościami. To polecenie symuluje urządzenie utworzone w poprzednim kroku. Symulowane urządzenie jest skonfigurowane do zwracania kodu stanu i ładunku za każdym razem, gdy wywoływana jest metoda bezpośrednia.
{DeviceName}. Nazwa symulowanego urządzenia.
{HubName}. Nazwa centrum IoT Hub.
az iot device simulate --device-id {DeviceName} --hub-name {HubName} \ --method-response-code 201 \ --method-response-payload '{"result":"Direct method successful"}'
Napiwek
Domyślnie polecenie az iot device simulate wysyła 100 komunikatów z urządzenia do chmury z interwałem 3 sekund między komunikatami. Symulacja kończy się po wysłaniu wszystkich komunikatów. Jeśli chcesz, aby symulacja działała dłużej, możesz użyć parametru
--msg-count
, aby określić więcej komunikatów lub parametru--msg-interval
, aby określić dłuższy interwał między komunikatami. Możesz również ponownie uruchomić polecenie, aby ponownie uruchomić symulowane urządzenie.
Planowanie zadania w celu wywołania metody bezpośredniej
W tej sekcji zaplanowano zadanie w drugiej sesji interfejsu wiersza polecenia w celu wywołania metody bezpośredniej na symulowanym urządzeniu uruchomionym w pierwszej sesji interfejsu wiersza polecenia.
Upewnij się, że symulowane urządzenie w pierwszej sesji interfejsu wiersza polecenia jest uruchomione. Jeśli nie, uruchom je ponownie, uruchamiając ponownie polecenie az iot device simulate z obszaru Tworzenie i symulowanie urządzenia.
W drugiej sesji interfejsu wiersza polecenia uruchom polecenie az iot hub job create , zastępując następujące symbole zastępcze odpowiednimi wartościami. W tym przykładzie nie ma wstępnie istniejącej metody dla urządzenia. Polecenie planuje zadanie, które wywołuje przykładową nazwę metody na urządzeniu symulowanym, podając wartość null ładunku metody. Metoda udostępnia kod stanu i ładunek w odpowiedzi.
{HubName}. Nazwa centrum IoT Hub.
{JobName}. Nazwa zaplanowanego zadania. Nazwy zadań są unikatowe, dlatego za każdym razem, gdy uruchomisz to polecenie, wybierz inną nazwę zadania.
{MethodName}. Nazwa metody bezpośredniej. Symulowane urządzenie nie ma wstępnie istniejącej metody, więc możesz wybrać dowolną nazwę dla tego polecenia.
{DeviceName}. Nazwa symulowanego urządzenia.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleDeviceMethod \ --method-name {MethodName} --method-payload 'null' \ --query-condition "deviceId = '{DeviceName}'"
Napiwek
Podczas planowania zadania az iot hub job create polecenie, które wywołuje metodę bezpośrednią, należy określić wartości zarówno dla parametrów, jak
--method-name
i--method-payload
opcjonalnych. W przypadku metod bezpośrednich, które nie akceptują ładunku, określnull
parametr .--method-payload
W pierwszej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe pokazują wywołanie metody. Na poniższym zrzucie ekranu użyliśmy
SampleDevice
odpowiednio symboli zastępczych iSampleMethod
{DeviceName}
i{MethodName}
waz iot hub job create
poleceniu interfejsu wiersza polecenia z poprzedniego kroku.
Planowanie zadania w celu zaktualizowania właściwości bliźniaczej reprezentacji urządzenia
W tej sekcji zaplanowano zadanie w drugiej sesji interfejsu wiersza polecenia w celu zaktualizowania żądanej właściwości bliźniaczej reprezentacji urządzenia na symulowanym urządzeniu uruchomionym w pierwszej sesji interfejsu wiersza polecenia.
Upewnij się, że symulowane urządzenie w pierwszej sesji interfejsu wiersza polecenia jest uruchomione. Jeśli nie, uruchom je ponownie, uruchamiając ponownie polecenie az iot device simulate z obszaru Tworzenie i symulowanie urządzenia.
W drugiej sesji interfejsu wiersza polecenia uruchom polecenie az iot hub job create , zastępując następujące symbole zastępcze odpowiednimi wartościami. W tym przykładzie planujemy zadanie ustawiania wartości żądanej właściwości
BuildingNo
bliźniaczej na 45 dla naszego symulowanego urządzenia.{HubName}. Nazwa centrum IoT Hub.
{JobName}. Nazwa zaplanowanego zadania. Nazwy zadań są unikatowe, dlatego za każdym razem, gdy uruchomisz to polecenie, wybierz inną nazwę zadania.
{DeviceName}. Nazwa symulowanego urządzenia.
az iot hub job create --hub-name {HubName} --job-id {JobName} \ --job-type scheduleUpdateTwin \ --twin-patch '{"properties":{"desired": {"BuildingNo": 45}}}' \ --query-condition "deviceId = '{DeviceName}'"
W pierwszej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe pokazują pomyślną aktualizację właściwości zgłaszanej reprezentacji bliźniaczej urządzenia, wskazując, że żądana właściwość bliźniaczej reprezentacji urządzenia została również zaktualizowana.
Następne kroki
W tym artykule użyto interfejsu wiersza polecenia platformy Azure do symulowania urządzenia i planowania zadań w celu uruchomienia metody bezpośredniej i zaktualizowania właściwości bliźniaczej reprezentacji urządzenia dla tego symulowanego urządzenia.
Aby kontynuować eksplorowanie wzorców zarządzania centrum IoT i urządzeń, zaktualizuj obraz w samouczku Dotyczącym aktualizacji urządzenia dla usługi Azure IoT Hub przy użyciu obrazu referencyjnego urządzenia Raspberry Pi 3 B+ .