Wprowadzenie do zarządzania urządzeniami (interfejs wiersza polecenia platformy Azure)

Aplikacje zaplecza mogą używać Azure IoT Hub elementów pierwotnych, takich jak bliźniacze reprezentacje urządzeń i metody bezpośrednie, do zdalnego uruchamiania i monitorowania akcji zarządzania urządzeniami na urządzeniach. W tym artykule pokazano, jak interfejs wiersza polecenia platformy Azure i urządzenie mogą współpracować w celu wywołania metody bezpośredniej dla urządzenia przy użyciu IoT Hub.

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.

Użyj metody bezpośredniej, aby zainicjować akcje zarządzania urządzeniami (takie jak ponowny rozruch, resetowanie do ustawień fabrycznych i aktualizacja oprogramowania układowego) z sesji interfejsu wiersza polecenia platformy Azure. Urządzenie jest odpowiedzialne za:

  • Obsługa żądania metody wysyłanego z IoT Hub.

  • Inicjowanie odpowiedniej akcji specyficznej dla urządzenia na urządzeniu.

  • Dostarczanie aktualizacji stanu za pośrednictwem zgłoszonych właściwości do IoT Hub.

Za pomocą interfejsu wiersza polecenia platformy Azure można uruchamiać zapytania bliźniaczej reprezentacji urządzenia w celu raportowania postępu akcji zarządzania urządzeniami. Aby uzyskać więcej informacji na temat korzystania z metod bezpośrednich, zobacz Wskazówki dotyczące komunikacji między chmurami i urządzeniami.

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 wywołuje metodę bezpośrednią na urządzeniu symulowanym 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 Cloud Shell, nie musisz niczego instalować. 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ć lub uaktualnić interfejs wiersza polecenia platformy Azure lokalnie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  • Centrum IoT. Utwórz go przy użyciu 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 być zablokowany w niektórych środowiskach sieci firmowych i edukacyjnych. Aby uzyskać więcej informacji i sposobów obejścia tego problemu, zobacz Connecting to IoT Hub (MQTT) (Nawiązywanie połączenia 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 po raz pierwszy 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 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.

    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, te sesje są uruchamiane na osobnych 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 wywołuje metodę bezpośrednią z urządzenia symulowanego przy użyciu centrum IoT.

Uwaga

Interfejs wiersza polecenia platformy Azure wymaga zalogowania się do konta platformy Azure. Jeśli używasz Cloud Shell, automatycznie logujesz się do swojego konta 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ą 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ę za pomocą interfejsu wiersza polecenia platformy Azure.

  1. W pierwszej sesji interfejsu wiersza polecenia uruchom polecenie az extension add . Polecenie dodaje rozszerzenie usługi 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 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.

  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 reaguje na metody bezpośrednie wywoływane 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 urządzenia symulowanego.

    {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 przy użyciu tożsamości urządzenia utworzonej 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.

Wywoływanie metody bezpośredniej

W tej sekcji użyjesz drugiej sesji interfejsu wiersza polecenia, aby wywołać metodę bezpośrednią 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 polecenie az iot device simulate z polecenia Create and simulate a device (Utwórz i symuluj urządzenie).

  2. W drugiej sesji interfejsu wiersza polecenia uruchom polecenie az iot hub invoke-device-method , 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 wywołuje przykładową nazwę metody na symulowanym urządzeniu. Metoda udostępnia kod stanu i ładunek w odpowiedzi.

    {DeviceName}. Nazwa symulowanego urządzenia.

    {HubName}. Nazwa centrum IoT.

    {MethodName}. Nazwa metody bezpośredniej. Symulowane urządzenie nie ma wstępnie istniejącej metody, dlatego możesz wybrać dowolną nazwę dla tego polecenia.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName}
    
  3. W pierwszej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe pokazują wywołanie metody. Na poniższym zrzucie ekranu użyto SampleDevice odpowiednio symboli zastępczych i {MethodName}SampleMethod{DeviceName} w poleceniu interfejsu az iot hub invoke-device-method wiersza polecenia.

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

  4. W drugiej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe zawierają kod stanu i ładunek odebrany z metody wywoływanej.

    Zrzut ekranu przedstawiający okno usługi Azure Cloud Shell z kodem stanu i ładunkiem wywoływanej metody bezpośredniej.

Wywoływanie metody bezpośredniej z ładunkiem

W tej sekcji użyjesz drugiej sesji interfejsu wiersza polecenia, aby wywołać metodę bezpośrednią i dostarczyć ładunek do symulowanego urządzenia uruchomionego 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 polecenie az iot device simulate z polecenia Create and simulate a device (Utwórz i symuluj urządzenie).

  2. W drugiej sesji interfejsu wiersza polecenia uruchom polecenie az iot hub invoke-device-method , 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 wywołuje przykładową nazwę metody na symulowanym urządzeniu i dostarcza ładunek dla tej metody. Metoda udostępnia kod stanu i ładunek w odpowiedzi.

    {DeviceName}. Nazwa symulowanego urządzenia.

    {HubName}. Nazwa centrum IoT.

    {MethodName}. Nazwa metody bezpośredniej. Symulowane urządzenie nie ma wstępnie istniejącej metody, dlatego możesz wybrać dowolną nazwę dla tego polecenia.

    az iot hub invoke-device-method --device-id {DeviceName} --hub-name {HubName} \
                                    --method-name {MethodName} \
                                    --method-payload '{ "SamplePayload": "PayloadValue" }'
    
  3. W pierwszej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe pokazują wywołanie metody. Na poniższym zrzucie ekranu użyto SampleDevice odpowiednio symboli zastępczych i {MethodName}SampleMethod{DeviceName} w poleceniu interfejsu az iot hub invoke-device-method wiersza polecenia.

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

  4. W drugiej sesji interfejsu wiersza polecenia upewnij się, że dane wyjściowe zawierają kod stanu i ładunek odebrany z metody wywoływanej.

    Zrzut ekranu przedstawiający okno usługi Azure Cloud Shell z kodem stanu i ładunkiem wywoływanej metody bezpośredniej.

Następne kroki

Aby dowiedzieć się, jak za pomocą interfejsu wiersza polecenia platformy Azure rozszerzyć wywołania metody IoT i zaplanować wywołania metod na urządzeniach, zobacz Planowanie i emisja zadań.

Aby kontynuować rozpoczynanie pracy z wzorcami zarządzania IoT Hub i urządzeniami, takimi jak kompleksowa aktualizacja obrazu, zobacz Artykuł Device Update for Azure IoT Hub using the Raspberry Pi 3 B+ Reference Image (Aktualizacja urządzenia dla Azure IoT Hub przy użyciu obrazu referencyjnego urządzenia Raspberry Pi 3 B+).