Udostępnij za pośrednictwem


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

Aplikacje zaplecza mogą używać elementów pierwotnych usługi Azure IoT Hub, 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 usługi IoT Hub.

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.

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 wysłanego z usługi 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 usługi IoT Hub.

Interfejs wiersza polecenia platformy Azure umożliwia uruchamianie zapytań bliźniaczych reprezentacji urządzenia w celu raportowania postępu akcji zarządzania urządzeniami. Aby uzyskać więcej informacji na temat używania 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 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.

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

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

    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.

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

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

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.

  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ł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ć 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 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.

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

Wywoływanie metody bezpośredniej

W tej sekcji użyjesz 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 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 urządzeniu symulowanym. Metoda udostępnia kod stanu i ładunek w odpowiedzi.

    {DeviceName}. Nazwa symulowanego urządzenia.

    {HubName}. Nazwa centrum IoT Hub.

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

    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żyliśmy SampleDevice odpowiednio symboli zastępczych i SampleMethod {DeviceName} i {MethodName} 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 wywoływanej metody.

    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 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 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 urządzeniu symulowanym i udostępnia ładunek dla tej metody. Metoda udostępnia kod stanu i ładunek w odpowiedzi.

    {DeviceName}. Nazwa symulowanego urządzenia.

    {HubName}. Nazwa centrum IoT Hub.

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

    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żyliśmy SampleDevice odpowiednio symboli zastępczych i SampleMethod {DeviceName} i {MethodName} 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 wywoływanej metody.

    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 harmonogram na urządzeniach, zobacz Planowanie i emisja zadań.

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