Planowanie i emisja zadań (interfejs wiersza polecenia platformy Azure)

Użyj Azure IoT Hub, aby zaplanować i śledzić zadania aktualizujące 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żyć zadania do wywołania metody ponownego rozruchu na 10 000 urządzeniach określonych przez zapytanie bliźniaczej reprezentacji urządzenia i zaplanowane w przyszłości. Ta aplikacja może następnie ś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 funkcji w następujących artykułach:

Uwaga

Funkcje opisane w tym artykule są dostępne tylko w warstwie Standardowa IoT Hub. Aby uzyskać więcej informacji na temat warstw podstawowych i standardowych/bezpłatnych IoT Hub, zobacz Wybieranie odpowiedniej warstwy 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 drugiej 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 uruchamianego w przeglądarce lub w aplikacji, takiej jak Terminal Windows. Jeśli używasz Cloud Shell, nie musisz niczego instalować. Jeśli wolisz korzystać z 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 lokalnie zainstalować lub uaktualnić interfejs wiersza polecenia platformy Azure, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  • Centrum IoT w subskrypcji platformy Azure. Utwórz go za pomocą interfejsu wiersza polecenia lub Azure Portal.

  • 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 Łączenie się z IoT Hub (MQTT).

Przygotowywanie Cloud Shell

Jeśli chcesz użyć usługi Azure Cloud Shell, musisz najpierw uruchomić ją i skonfigurować. Jeśli używasz interfejsu wiersza polecenia lokalnie, przejdź do sekcji Przygotowywanie dwóch sesji interfejsu wiersza polecenia .

  1. Wybierz ikonę Cloud Shell z nagłówka strony w Azure Portal.

    Zrzut ekranu przedstawiający kontrolki globalne z nagłówka strony Azure Portal z wyróżnioną ikoną Cloud Shell.

    Uwaga

    Jeśli jest to pierwszy raz, gdy użyto Cloud Shell, zostanie wyświetlony monit o utworzenie magazynu, który jest wymagany do korzystania z Cloud Shell. Wybierz subskrypcję, aby utworzyć konto magazynu i udział usługi Microsoft Azure Files.

  2. Użyj selektora środowiska na pasku narzędzi Cloud Shell, aby wybrać preferowane środowisko interfejsu wiersza polecenia. W tym artykule użyto środowiska 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 używania interfejsu wiersza polecenia platformy Azure.

    Zrzut ekranu przedstawiający okno usługi Azure Cloud Shell z wyróżnionym selektorem środowiska na pasku narzędzi.

Przygotowywanie dwóch sesji interfejsu wiersza polecenia

Następnie należy przygotować dwie sesje interfejsu wiersza polecenia platformy Azure. Jeśli używasz Cloud Shell, uruchamiasz te sesje na oddzielnych kartach Cloud Shell. Jeśli używasz lokalnego klienta interfejsu wiersza polecenia, uruchamiasz 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ę do konta platformy Azure. Jeśli używasz Cloud Shell, automatycznie logujesz się 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órego będziesz używać 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.

  1. 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ługi IoT Hub, IoT Edge i IoT Device Provisioning Service (DPS) do interfejsu wiersza polecenia platformy Azure. Po zainstalowaniu rozszerzenia nie trzeba go ponownie instalować w żadnej sesji Cloud Shell.

    az extension add --name azure-iot
    

    Uwaga

    W tym artykule użyto najnowszej wersji rozszerzenia Usługi Azure IoT o nazwie azure-iot. Starsza wersja nosi nazwę azure-cli-iot-ext. Naraz 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.

  2. Otwórz drugą sesję interfejsu wiersza polecenia. Jeśli używasz 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.

    Zrzut ekranu przedstawiający okno usługi Azure Cloud Shell z wyróżnioną ikoną Otwórz nową sesję na pasku narzędzi.

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:

  1. 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.

    az iot hub device-identity create --device-id {DeviceName} --hub-name {HubName} 
    
  2. 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.

    az iot device simulate --device-id {DeviceName} --hub-name {HubName} \
                           --method-response-code 201 \
                           --method-response-payload '{"result":"Direct method successful"}'
    

    Porada

    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 zaplanujesz zadanie w drugiej sesji interfejsu wiersza polecenia, aby wywołać metodę bezpośrednią na urządzeniu symulowanym uruchomionym w pierwszej sesji interfejsu wiersza polecenia.

  1. 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.

  2. 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 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 dla ładunku metody. Metoda udostępnia kod stanu i ładunek w odpowiedzi.

    {HubName}. Nazwa centrum IoT.

    {JobName}. Nazwa zaplanowanego zadania. Nazwy zadań są unikatowe, dlatego za każdym razem, gdy uruchamiasz 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}'"
    

    Porada

    Podczas planowania zadania az iot hub job create polecenie, które wywołuje metodę bezpośrednią, należy określić wartości parametrów --method-name i --method-payload opcjonalnych. W przypadku metod bezpośrednich, które nie akceptują ładunku--method-payload, określ null parametr .

  3. 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 i {MethodName}SampleMethod{DeviceName} i w az iot hub job create poleceniu interfejsu wiersza polecenia z poprzedniego kroku.

    Zrzut ekranu przedstawiający symulowane urządzenie wyświetlające dane wyjściowe po wywołaniu metody.

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.

  1. 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.

  2. 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.

    {JobName}. Nazwa zaplanowanego zadania. Nazwy zadań są unikatowe, dlatego za każdym razem, gdy uruchamiasz 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}'"
    
  3. W pierwszej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe zawierają pomyślną aktualizację zgłaszanej właściwości bliźniaczej reprezentacji urządzenia, co wskazuje, że zaktualizowano również żądaną właściwość bliźniaczej reprezentacji urządzenia.

    Zrzut ekranu przedstawiający symulowane urządzenie wyświetlające dane wyjściowe po zaktualizowaniu właściwości bliźniaczej reprezentacji urządzenia.

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ądzeniami, zaktualizuj obraz w usłudze Device Update na potrzeby Azure IoT Hub samouczka przy użyciu obrazu referencyjnego urządzenia Raspberry Pi 3 B+.