다음을 통해 공유


빠른 시작: IoT Hub에 연결된 디바이스 제어

이 빠른 시작에서는 직접 메서드를 사용하여 IoT Hub에 연결된 시뮬레이션된 디바이스를 제어합니다. IoT Hub는 클라우드에서 IoT 디바이스를 관리하고 스토리지 또는 처리를 위해 대량의 디바이스 원격 분석을 클라우드로 수집할 수 있는 Azure 서비스입니다. 직접 메서드를 사용하여 IoT Hub에 연결된 디바이스의 동작을 원격으로 변경할 수 있습니다.

빠른 시작에서는 두 개의 미리 작성된 .NET 애플리케이션을 사용합니다.

  • 서비스 애플리케이션에서 호출된 직접 메서드에 응답하는 시뮬레이션된 디바이스 애플리케이션입니다. 직접 메서드 호출을 수신하기 위해 이 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결합니다.

  • 시뮬레이션된 디바이스에서 직접 메서드를 호출하는 서비스 애플리케이션입니다. 디바이스에서 직접 메서드를 호출하기 위해 이 애플리케이션은 IoT Hub의 서비스 쪽 엔드포인트에 연결합니다.

필수 조건

  • 활성 구독이 있는 Azure 계정. 체험 계정 만들기

  • 이 빠른 시작에서 실행하는 두 샘플 애플리케이션은 C#을 사용하여 작성됩니다. 개발 머신에 .NET SDK 6.0 이상이 필요합니다.

    .NET에서 여러 플랫폼에 대한 .NET Core SDK를 다운로드할 수 있습니다.

    다음 명령을 사용하여 개발 컴퓨터에서 현재 버전의 C#을 확인할 수 있습니다.

    dotnet --version
    
  • GitHub에서 .NET용 Microsoft Azure IoT SDK 를 복제하거나 다운로드합니다. 이 빠른 시작에서 사용하는 샘플 애플리케이션은 SDK에 포함됩니다.

  • 방화벽에서 포트 8883이 열려 있는지 확인합니다. 이 빠른 시작의 디바이스 샘플은 포트 8883을 통해 통신하는 MQTT 프로토콜을 사용합니다. 이 포트는 일부 회사 및 교육용 네트워크 환경에서 차단될 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 IoT Hub에 연결하기 섹션의 MQTT 프로토콜을 사용하여 IoT Hub와 통신을 참조하세요.

비고

이 문서에서는 azure-iot라는 최신 버전의 Azure IoT 확장이 사용됩니다. 레거시 버전을 호출 azure-cli-iot-ext합니다. 한 번에 하나의 버전만 설치해야 합니다. az extension list 명령을 사용하여 현재 설치된 확장의 유효성을 검사할 수 있습니다.

az extension remove --name azure-cli-iot-ext를 사용하여 레거시 버전의 확장을 제거합니다.

az extension add --name azure-iot를 사용하여 새 버전의 확장을 추가합니다.

현재 설치된 확장을 확인하려면 .를 사용합니다 az extension list.

이 섹션에서는 Azure CLI를 사용하여 IoT 허브 및 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. IoT 허브는 IoT 애플리케이션과 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 합니다.

Azure 구독에 IoT Hub가 이미 있는 경우 이 섹션을 건너뛸 수 있습니다.

IoT 허브 및 리소스 그룹을 만들려면 다음을 수행합니다.

  1. CLI 앱을 시작합니다. 이 문서의 나머지 부분에서 CLI 명령을 실행하려면 명령 구문을 복사하여 CLI 앱에 붙여넣고 변수 값을 편집한 다음, Enter를 누릅니다.

    • Cloud Shell을 사용하려면 CLI 명령에서 사용해 보기 단추를 선택하여 분할 브라우저 창에서 Cloud Shell을 시작합니다. 또는 별도의 브라우저 탭에서 Cloud Shell을 열 수 있습니다.
    • Azure CLI를 로컬에서 사용하고 있는 경우 CLI 콘솔 앱을 시작하고 Azure CLI에 로그인합니다.
  2. az extension add를 실행하여 azure-iot 확장을 현재 버전으로 설치하거나 업그레이드합니다.

    az extension add --upgrade --name azure-iot
    
  3. CLI 앱에서 az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령은 eastus 위치에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    비고

    필요에 따라 다른 위치를 설정할 수 있습니다. 사용 가능한 위치를 보려면 az account list-locations를 실행합니다. 이 빠른 시작에서는 예제 명령에 표시된 대로 eastus를 사용합니다.

    az group create --name MyResourceGroup --location eastus
    
  4. az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 자리 표시자가 표시될 때마다 이 빠른 시작의 나머지 부분에서 IoT 허브 이름을 사용합니다.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

서비스 연결 문자열 검색

또한 서비스 애플리케이션이 허브에 연결하고 메시지를 검색할 수 있도록 IoT Hub의 서비스 연결 문자열 이 필요합니다. 서비스 연결 문자열은 IoT Hub 전체에 대한 문자열이며 이전 섹션에서 검색한 디바이스 연결 문자열과 다릅니다.

다음 명령은 IoT Hub에 대한 서비스 연결 문자열을 검색합니다.

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

다음과 같은 서비스 연결 문자열을 기록해 둡다.

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

이 값은 퀵스타트의 뒷부분에서 사용합니다.

디바이스 시뮬레이션

시뮬레이션된 디바이스 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결하고, 시뮬레이션된 원격 분석을 보내고, 허브에서 직접 메서드 호출을 수신 대기합니다. 이 빠른 시작에서 허브의 직접 메서드 호출은 디바이스에 원격 분석을 보내는 간격을 변경하도록 지시합니다. 시뮬레이션된 디바이스는 직접 메서드를 실행한 후 허브로 승인을 다시 보냅니다.

  1. 로컬 터미널 창에서 SDK의 루트 폴더로 이동합니다. 그런 다음 iothub\device\samples\getting started\SimulatedDeviceWithCommand 폴더로 이동합니다.

  2. 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션에 필요한 패키지를 설치합니다.

    dotnet restore
    
  3. 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션을 빌드하고 실행합니다.

    {DeviceConnectionString}: 이 자리 표시자를 앞에서 적어 두었던 디바이스 연결 문자열로 바꿉다.

    dotnet run -- -c "{DeviceConnectionString}"
    

    다음 스크린샷은 시뮬레이션된 디바이스 애플리케이션이 원격 분석을 IoT Hub로 전송할 때의 출력을 보여줍니다.

    시뮬레이션된 디바이스 애플리케이션의 출력을 보여 주는 터미널 창의 스크린샷

직접 메서드 호출

서비스 애플리케이션은 IoT Hub의 서비스 쪽 엔드포인트에 연결합니다. 애플리케이션은 IoT Hub를 통해 디바이스에 직접 메서드를 호출하고 승인을 수신 대기합니다. IoT Hub 서비스 애플리케이션은 일반적으로 클라우드에서 실행됩니다.

  1. 다른 로컬 터미널 창에서 SDK의 루트 폴더로 이동합니다. 그런 다음 iothub\service\samples\getting started\InvokeDeviceMethod 폴더로 이동합니다.

  2. 로컬 터미널 창에서 다음 명령을 실행하여 서비스 애플리케이션에 필요한 라이브러리를 설치합니다.

    dotnet build
    
  3. 로컬 터미널 창에서 다음 명령을 실행하여 서비스 애플리케이션을 빌드하고 실행합니다.

    {ServiceConnectionString}: 이 자리 표시자를 앞에서 적어 두었던 IoT Hub 서비스 연결 문자열로 바꿉니다.

    {DeviceName}: 이 자리 표시자를 등록한 디바이스의 이름으로 바꿉 있습니다.

    dotnet run -- -c "{ServiceConnectionString}" -d {DeviceName}
    

    다음 스크린샷은 애플리케이션이 디바이스에 직접 메서드를 호출하고 승인을 받을 때의 출력을 보여 줍니다.

    서비스 애플리케이션에서 직접 메서드 호출의 결과를 보여 주는 터미널 창의 스크린샷

    서비스 애플리케이션을 실행한 후 시뮬레이트된 디바이스를 실행하는 로컬 터미널 창에 메시지가 표시되고 메시지를 보내는 속도가 변경됩니다.

    직접 메시지 결과와 시뮬레이션된 디바이스 애플리케이션의 업데이트된 출력을 보여 주는 터미널 창의 스크린샷

이 빠른 시작에서는 두 개의 Java 애플리케이션을 사용합니다.

  • 백 엔드 애플리케이션에서 호출된 직접 메서드에 응답하는 시뮬레이션된 디바이스 애플리케이션입니다.
  • 시뮬레이션된 디바이스에서 직접 메서드를 호출하는 서비스 애플리케이션입니다.

필수 조건

  • 활성 구독이 있는 Azure 계정. 체험 계정 만들기

  • Java SE 개발 키트 8. Azure 및 Azure Stack에 대한 Java 장기 지원에서 장기 지원에서 Java 8을 선택합니다.

    다음 명령을 사용하여 개발 컴퓨터에서 현재 버전의 Java를 확인할 수 있습니다.

    java -version
    
  • Apache Maven 3.

    다음 명령을 사용하여 개발 컴퓨터에서 Maven의 현재 버전을 확인할 수 있습니다.

    mvn --version
    
  • GitHub에서 Java용 Azure IoT 샘플을 복제하거나 다운로드합니다.

  • 방화벽에서 포트 8883이 열려 있는지 확인합니다. 이 빠른 시작의 디바이스 샘플은 포트 8883을 통해 통신하는 MQTT 프로토콜을 사용합니다. 이 포트는 일부 회사 및 교육용 네트워크 환경에서 차단될 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 IoT Hub에 연결하기 섹션의 MQTT 프로토콜을 사용하여 IoT Hub와 통신을 참조하세요.

비고

이 문서에서는 azure-iot라는 최신 버전의 Azure IoT 확장이 사용됩니다. 레거시 버전을 호출 azure-cli-iot-ext합니다. 한 번에 하나의 버전만 설치해야 합니다. az extension list 명령을 사용하여 현재 설치된 확장의 유효성을 검사할 수 있습니다.

az extension remove --name azure-cli-iot-ext를 사용하여 레거시 버전의 확장을 제거합니다.

az extension add --name azure-iot를 사용하여 새 버전의 확장을 추가합니다.

현재 설치된 확장을 확인하려면 .를 사용합니다 az extension list.

IoT Hub 만들기

이 섹션에서는 Azure CLI를 사용하여 IoT 허브 및 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. IoT 허브는 IoT 애플리케이션과 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 합니다.

Azure 구독에 IoT Hub가 이미 있는 경우 이 섹션을 건너뛸 수 있습니다.

IoT 허브 및 리소스 그룹을 만들려면 다음을 수행합니다.

  1. CLI 앱을 시작합니다. 이 문서의 나머지 부분에서 CLI 명령을 실행하려면 명령 구문을 복사하여 CLI 앱에 붙여넣고 변수 값을 편집한 다음, Enter를 누릅니다.

    • Cloud Shell을 사용하려면 CLI 명령에서 사용해 보기 단추를 선택하여 분할 브라우저 창에서 Cloud Shell을 시작합니다. 또는 별도의 브라우저 탭에서 Cloud Shell을 열 수 있습니다.
    • Azure CLI를 로컬에서 사용하고 있는 경우 CLI 콘솔 앱을 시작하고 Azure CLI에 로그인합니다.
  2. az extension add를 실행하여 azure-iot 확장을 현재 버전으로 설치하거나 업그레이드합니다.

    az extension add --upgrade --name azure-iot
    
  3. CLI 앱에서 az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령은 eastus 위치에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    비고

    필요에 따라 다른 위치를 설정할 수 있습니다. 사용 가능한 위치를 보려면 az account list-locations를 실행합니다. 이 빠른 시작에서는 예제 명령에 표시된 대로 eastus를 사용합니다.

    az group create --name MyResourceGroup --location eastus
    
  4. az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 자리 표시자가 표시될 때마다 이 빠른 시작의 나머지 부분에서 IoT 허브 이름을 사용합니다.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

디바이스 등록

연결하기 전에 디바이스를 IoT Hub에 등록해야 합니다. 이 섹션에서는 Azure CLI를 사용하여 디바이스 ID를 만듭니다.

IoT Hub에 디바이스가 이미 등록된 경우 이 섹션을 건너뛸 수 있습니다.

디바이스 ID를 만들려면 다음을 수행합니다.

  1. CLI 셸에서 az iot hub device-identity create 명령을 실행합니다. 이 명령은 디바이스 ID를 만듭니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다.

    myDevice. 이 문서 전체에서 디바이스 ID에 이 이름을 사용하거나 다른 디바이스 이름을 제공할 수 있습니다.

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}
    
  2. az iot hub device-identity connection-string show 명령을 실행합니다.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}
    

    연결 문자열 출력은 다음과 같은 형식입니다.

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. 연결 문자열을 안전한 위치에 저장합니다.

비고

CLI 앱을 열어 두세요. 이후 단계에서 사용합니다.

서비스 연결 문자열 검색

백 엔드 애플리케이션이 IoT Hub에 연결하고 메시지를 검색할 수 있도록 하려면 서비스 연결 문자열 도 필요합니다. 다음 명령은 IoT Hub에 대한 서비스 연결 문자열을 검색합니다.

YourIoTHubName: 다음 명령에서 이 자리 표시자를 IoT Hub에 대해 선택한 이름으로 바꿉니다.

az iot hub connection-string show --policy-name service --hub-name {YourIoTHubName} --output table

다음과 같은 서비스 연결 문자열을 기록해 둡다.

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

이 값은 퀵스타트의 뒷부분에서 사용합니다. 이 서비스 연결 문자열은 이전 단계에서 기록한 디바이스 연결 문자열과 다릅니다.

디바이스 시뮬레이션

시뮬레이션된 디바이스 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결하고, 시뮬레이션된 원격 분석을 보내고, 허브에서 직접 메서드 호출을 수신 대기합니다. 이 빠른 시작에서 허브의 직접 메서드 호출은 디바이스에 원격 분석을 보내는 간격을 변경하도록 지시합니다. 시뮬레이션된 디바이스는 직접 메서드를 실행한 후 허브로 승인을 다시 보냅니다.

  1. 로컬 터미널 창에서 샘플 Java 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\simulated-device-2 폴더로 이동합니다.

  2. 원하는 텍스트 편집기에서 src/main/java/com/microsoft/docs/iothub/samples/SimulatedDevice.java 파일을 엽니다.

    변수 값을 connString 앞에서 적어 두는 디바이스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 SimulatedDevice.java 저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 시뮬레이션된 디바이스 애플리케이션을 빌드합니다.

    mvn clean package
    
  4. 로컬 터미널 창에서 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션을 실행합니다.

    java -jar target/simulated-device-2-1.0.0-with-deps.jar
    

    다음 스크린샷은 시뮬레이션된 디바이스 애플리케이션이 원격 분석을 IoT Hub로 전송할 때의 출력을 보여줍니다.

    시뮬레이션된 디바이스 애플리케이션의 출력을 보여 주는 터미널 창의 스크린샷

직접 메서드 호출

백 엔드 애플리케이션은 IoT Hub의 서비스 쪽 엔드포인트에 연결합니다. 애플리케이션은 IoT Hub를 통해 디바이스에 직접 메서드를 호출하고 승인을 수신 대기합니다. IoT Hub 백 엔드 애플리케이션은 일반적으로 클라우드에서 실행됩니다.

  1. 다른 로컬 터미널 창에서 샘플 Java 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\back-end-application 폴더로 이동합니다.

  2. 원하는 텍스트 편집기에서 src/main/java/com/microsoft/docs/iothub/samples/BackEndApplication.java 파일을 엽니다.

    변수 값을 iotHubConnectionString 앞에서 적어 두는 서비스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 BackEndApplication.java 저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 백 엔드 애플리케이션을 빌드합니다.

    mvn clean package
    
  4. 로컬 터미널 창에서 다음 명령을 실행하여 백 엔드 애플리케이션을 실행합니다.

    java -jar target/back-end-application-1.0.0-with-deps.jar
    

    다음 스크린샷은 애플리케이션이 디바이스에 직접 메서드를 호출하고 승인을 받을 때의 출력을 보여 줍니다.

    서비스 애플리케이션에서 직접 메서드 호출의 결과를 보여 주는 터미널 창의 스크린샷

    백 엔드 애플리케이션을 실행한 후 시뮬레이트된 디바이스를 실행하는 로컬 터미널 창에 메시지가 표시되고 메시지를 보내는 속도가 변경됩니다.

    직접 메시지 결과와 시뮬레이션된 디바이스 애플리케이션의 업데이트된 출력을 보여 주는 터미널 창의 스크린샷

이 빠른 시작에서는 두 개의 Node.js 애플리케이션을 사용합니다.

  • 백 엔드 애플리케이션에서 호출된 직접 메서드에 응답하는 시뮬레이션된 디바이스 애플리케이션입니다. 직접 메서드 호출을 수신하기 위해 이 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결합니다.
  • 시뮬레이션된 디바이스에서 직접 메서드를 호출하는 백 엔드 애플리케이션입니다. 디바이스에서 직접 메서드를 호출하기 위해 이 애플리케이션은 IoT Hub의 서비스별 엔드포인트에 연결합니다.

필수 조건

  • 활성 구독이 있는 Azure 계정. 체험 계정 만들기

  • Node.js 12 이상.

    다음 명령을 사용하여 개발 컴퓨터에서 현재 버전의 Node.js 확인할 수 있습니다.

    node --version
    
  • GitHub에서 Azure IoT Node.js 샘플을 복제하거나 다운로드합니다.

  • 방화벽에서 포트 8883이 열려 있는지 확인합니다. 이 빠른 시작의 디바이스 샘플은 포트 8883을 통해 통신하는 MQTT 프로토콜을 사용합니다. 이 포트는 일부 회사 및 교육용 네트워크 환경에서 차단될 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 IoT Hub에 연결하기 섹션의 MQTT 프로토콜을 사용하여 IoT Hub와 통신을 참조하세요.

비고

이 문서에서는 azure-iot라는 최신 버전의 Azure IoT 확장이 사용됩니다. 레거시 버전을 호출 azure-cli-iot-ext합니다. 한 번에 하나의 버전만 설치해야 합니다. az extension list 명령을 사용하여 현재 설치된 확장의 유효성을 검사할 수 있습니다.

az extension remove --name azure-cli-iot-ext를 사용하여 레거시 버전의 확장을 제거합니다.

az extension add --name azure-iot를 사용하여 새 버전의 확장을 추가합니다.

현재 설치된 확장을 확인하려면 .를 사용합니다 az extension list.

IoT Hub 만들기

이 섹션에서는 Azure CLI를 사용하여 IoT 허브 및 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. IoT 허브는 IoT 애플리케이션과 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 합니다.

Azure 구독에 IoT Hub가 이미 있는 경우 이 섹션을 건너뛸 수 있습니다.

IoT 허브 및 리소스 그룹을 만들려면 다음을 수행합니다.

  1. CLI 앱을 시작합니다. 이 문서의 나머지 부분에서 CLI 명령을 실행하려면 명령 구문을 복사하여 CLI 앱에 붙여넣고 변수 값을 편집한 다음, Enter를 누릅니다.

    • Cloud Shell을 사용하려면 CLI 명령에서 사용해 보기 단추를 선택하여 분할 브라우저 창에서 Cloud Shell을 시작합니다. 또는 별도의 브라우저 탭에서 Cloud Shell을 열 수 있습니다.
    • Azure CLI를 로컬에서 사용하고 있는 경우 CLI 콘솔 앱을 시작하고 Azure CLI에 로그인합니다.
  2. az extension add를 실행하여 azure-iot 확장을 현재 버전으로 설치하거나 업그레이드합니다.

    az extension add --upgrade --name azure-iot
    
  3. CLI 앱에서 az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령은 eastus 위치에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    비고

    필요에 따라 다른 위치를 설정할 수 있습니다. 사용 가능한 위치를 보려면 az account list-locations를 실행합니다. 이 빠른 시작에서는 예제 명령에 표시된 대로 eastus를 사용합니다.

    az group create --name MyResourceGroup --location eastus
    
  4. az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 자리 표시자가 표시될 때마다 이 빠른 시작의 나머지 부분에서 IoT 허브 이름을 사용합니다.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

디바이스 등록

연결하기 전에 디바이스를 IoT Hub에 등록해야 합니다. 이 섹션에서는 Azure CLI를 사용하여 디바이스 ID를 만듭니다.

IoT Hub에 디바이스가 이미 등록된 경우 이 섹션을 건너뛸 수 있습니다.

디바이스 ID를 만들려면 다음을 수행합니다.

  1. CLI 셸에서 az iot hub device-identity create 명령을 실행합니다. 이 명령은 디바이스 ID를 만듭니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다.

    myDevice. 이 문서 전체에서 디바이스 ID에 이 이름을 사용하거나 다른 디바이스 이름을 제공할 수 있습니다.

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}
    
  2. az iot hub device-identity connection-string show 명령을 실행합니다.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}
    

    연결 문자열 출력은 다음과 같은 형식입니다.

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. 연결 문자열을 안전한 위치에 저장합니다.

비고

CLI 앱을 열어 두세요. 이후 단계에서 사용합니다.

서비스 연결 문자열 검색

백 엔드 애플리케이션이 IoT Hub에 연결하고 메시지를 검색할 수 있도록 하려면 IoT Hub의 서비스 연결 문자열 도 필요합니다. 다음 명령은 IoT Hub에 대한 서비스 연결 문자열을 검색합니다.

YourIoTHubName: 다음 명령에서 이 자리 표시자를 IoT Hub에 대해 선택한 이름으로 바꿉니다.

az iot hub connection-string show \
  --policy-name service --hub-name {YourIoTHubName} --output table

다음과 같은 서비스 연결 문자열을 기록해 둡다.

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

이 값은 퀵스타트의 뒷부분에서 사용합니다. 이 서비스 연결 문자열은 이전 단계에서 기록한 디바이스 연결 문자열과 다릅니다.

디바이스 시뮬레이션

시뮬레이션된 디바이스 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결하고, 시뮬레이션된 원격 분석을 보내고, 허브에서 직접 메서드 호출을 수신 대기합니다. 이 빠른 시작에서 허브의 직접 메서드 호출은 디바이스에 원격 분석을 보내는 간격을 변경하도록 지시합니다. 시뮬레이션된 디바이스는 직접 메서드를 실행한 후 허브로 승인을 다시 보냅니다.

  1. 로컬 터미널 창에서 샘플 Node.js 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\simulated-device-2 폴더로 이동합니다.

  2. 원하는 텍스트 편집기에서 SimulatedDevice.js 파일을 엽니다.

    변수 값을 connectionString 앞에서 적어 두는 디바이스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 SimulatedDevice.js저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 시뮬레이션된 디바이스 애플리케이션을 실행합니다.

    npm install
    node SimulatedDevice.js
    

    다음 스크린샷은 시뮬레이션된 디바이스 애플리케이션이 원격 분석을 IoT Hub로 전송할 때의 출력을 보여줍니다.

    시뮬레이션된 디바이스 애플리케이션의 출력을 보여 주는 터미널 창의 스크린샷

직접 메서드 호출

백 엔드 애플리케이션은 IoT Hub의 서비스 쪽 엔드포인트에 연결합니다. 애플리케이션은 IoT Hub를 통해 디바이스에 직접 메서드를 호출하고 승인을 수신 대기합니다. IoT Hub 백 엔드 애플리케이션은 일반적으로 클라우드에서 실행됩니다.

  1. 다른 로컬 터미널 창에서 샘플 Node.js 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\back-end-application 폴더로 이동합니다.

  2. 원하는 텍스트 편집기에서 BackEndApplication.js 파일을 엽니다.

    변수 값을 connectionString 앞에서 적어 두는 서비스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 BackEndApplication.js저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 필요한 라이브러리를 설치하고 백 엔드 애플리케이션을 실행합니다.

    npm install
    node BackEndApplication.js
    

    다음 스크린샷은 애플리케이션이 디바이스에 직접 메서드를 호출하고 승인을 받을 때의 출력을 보여 줍니다.

    서비스 애플리케이션에서 직접 메서드 호출의 결과를 보여 주는 터미널 창의 스크린샷

    백 엔드 애플리케이션을 실행한 후 시뮬레이트된 디바이스를 실행하는 로컬 터미널 창에 메시지가 표시되고 메시지를 보내는 속도가 변경됩니다.

    직접 메시지 결과와 시뮬레이션된 디바이스 애플리케이션의 업데이트된 출력을 보여 주는 터미널 창의 스크린샷

이 빠른 시작에서는 두 개의 Python 애플리케이션을 사용합니다.

  • 백 엔드 애플리케이션에서 호출된 직접 메서드에 응답하는 시뮬레이션된 디바이스 애플리케이션입니다.
  • 시뮬레이션된 디바이스에서 직접 메서드를 호출하는 백 엔드 애플리케이션입니다.

필수 조건

비고

이 문서에서는 azure-iot라는 최신 버전의 Azure IoT 확장이 사용됩니다. 레거시 버전을 호출 azure-cli-iot-ext합니다. 한 번에 하나의 버전만 설치해야 합니다. az extension list 명령을 사용하여 현재 설치된 확장의 유효성을 검사할 수 있습니다.

az extension remove --name azure-cli-iot-ext를 사용하여 레거시 버전의 확장을 제거합니다.

az extension add --name azure-iot를 사용하여 새 버전의 확장을 추가합니다.

현재 설치된 확장을 확인하려면 .를 사용합니다 az extension list.

IoT Hub 만들기

이 섹션에서는 Azure CLI를 사용하여 IoT 허브 및 리소스 그룹을 만듭니다. Azure 리소스 그룹은 Azure 리소스가 배포 및 관리되는 논리적 컨테이너입니다. IoT 허브는 IoT 애플리케이션과 디바이스 간의 양방향 통신을 위한 중앙 메시지 허브 역할을 합니다.

Azure 구독에 IoT Hub가 이미 있는 경우 이 섹션을 건너뛸 수 있습니다.

IoT 허브 및 리소스 그룹을 만들려면 다음을 수행합니다.

  1. CLI 앱을 시작합니다. 이 문서의 나머지 부분에서 CLI 명령을 실행하려면 명령 구문을 복사하여 CLI 앱에 붙여넣고 변수 값을 편집한 다음, Enter를 누릅니다.

    • Cloud Shell을 사용하려면 CLI 명령에서 사용해 보기 단추를 선택하여 분할 브라우저 창에서 Cloud Shell을 시작합니다. 또는 별도의 브라우저 탭에서 Cloud Shell을 열 수 있습니다.
    • Azure CLI를 로컬에서 사용하고 있는 경우 CLI 콘솔 앱을 시작하고 Azure CLI에 로그인합니다.
  2. az extension add를 실행하여 azure-iot 확장을 현재 버전으로 설치하거나 업그레이드합니다.

    az extension add --upgrade --name azure-iot
    
  3. CLI 앱에서 az group create를 실행하여 리소스 그룹을 만듭니다. 다음 명령은 eastus 위치에 MyResourceGroup이라는 리소스 그룹을 만듭니다.

    비고

    필요에 따라 다른 위치를 설정할 수 있습니다. 사용 가능한 위치를 보려면 az account list-locations를 실행합니다. 이 빠른 시작에서는 예제 명령에 표시된 대로 eastus를 사용합니다.

    az group create --name MyResourceGroup --location eastus
    
  4. az iot hub create 명령을 사용하여 IoT Hub를 만듭니다. IoT Hub를 만드는 데 몇 분 정도 걸릴 수 있습니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다. 자리 표시자가 표시될 때마다 이 빠른 시작의 나머지 부분에서 IoT 허브 이름을 사용합니다.

    az iot hub create --resource-group MyResourceGroup --name {YourIoTHubName}
    

디바이스 등록

연결하기 전에 디바이스를 IoT Hub에 등록해야 합니다. 이 섹션에서는 Azure CLI를 사용하여 디바이스 ID를 만듭니다.

IoT Hub에 디바이스가 이미 등록된 경우 이 섹션을 건너뛸 수 있습니다.

디바이스 ID를 만들려면 다음을 수행합니다.

  1. CLI 셸에서 az iot hub device-identity create 명령을 실행합니다. 이 명령은 디바이스 ID를 만듭니다.

    YourIoTHubName. IoT 허브에 대해 선택한 이름을 사용하여 다음 명령에서 이 자리 표시자와 주변 중괄호를 바꿉니다. IoT Hub 이름은 Azure에서 전역적으로 고유해야 합니다.

    myDevice. 이 문서 전체에서 디바이스 ID에 이 이름을 사용하거나 다른 디바이스 이름을 제공할 수 있습니다.

    az iot hub device-identity create --device-id myDevice --hub-name {YourIoTHubName}
    
  2. az iot hub device-identity connection-string show 명령을 실행합니다.

    az iot hub device-identity connection-string show --device-id myDevice --hub-name {YourIoTHubName}
    

    연결 문자열 출력은 다음과 같은 형식입니다.

    HostName=<your IoT Hub name>.azure-devices.net;DeviceId=<your device id>;SharedAccessKey=<some value>
    
  3. 연결 문자열을 안전한 위치에 저장합니다.

비고

CLI 앱을 열어 두세요. 이후 단계에서 사용합니다.

서비스 연결 문자열 검색

백 엔드 애플리케이션이 IoT Hub에 연결하고 메시지를 검색할 수 있도록 하려면 서비스 연결 문자열 도 필요합니다. 다음 명령은 IoT Hub에 대한 서비스 연결 문자열을 검색합니다.

YourIoTHubName: 다음 명령에서 이 자리 표시자를 IoT Hub에 대해 선택한 이름으로 바꿉니다.

az iot hub connection-string show \
  --policy-name service \
  --hub-name {YourIoTHubName} \
  --output table

다음과 같은 서비스 연결 문자열을 기록해 둡다.

HostName={YourIoTHubName}.azure-devices.net;SharedAccessKeyName=service;SharedAccessKey={YourSharedAccessKey}

이 값은 퀵스타트의 뒷부분에서 사용합니다. 이 서비스 연결 문자열은 이전 단계에서 기록한 디바이스 연결 문자열과 다릅니다.

디바이스 시뮬레이션

시뮬레이션된 디바이스 애플리케이션은 IoT Hub의 디바이스별 엔드포인트에 연결하고, 시뮬레이션된 원격 분석을 보내고, 허브에서 직접 메서드 호출을 수신 대기합니다. 이 빠른 시작에서 허브의 직접 메서드 호출은 디바이스에 원격 분석을 보내는 간격을 변경하도록 지시합니다. 시뮬레이션된 디바이스는 직접 메서드를 실행한 후 허브로 승인을 다시 보냅니다.

  1. 로컬 터미널 창에서 샘플 Python 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\simulated-device-2 폴더로 이동합니다.

  2. 원하는 텍스트 편집기에서 SimulatedDeviceSync.py 파일을 엽니다.

    변수 값을 CONNECTION_STRING 앞에서 적어 두는 디바이스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 SimulatedDeviceSync.py 저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션에 필요한 라이브러리를 설치합니다.

    pip install azure-iot-device
    
  4. 로컬 터미널 창에서 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션을 실행합니다.

    python SimulatedDeviceSync.py
    

    다음 스크린샷은 시뮬레이션된 디바이스 애플리케이션이 원격 분석을 IoT Hub로 전송할 때의 출력을 보여줍니다.

    시뮬레이션된 디바이스 애플리케이션의 출력을 보여 주는 터미널 창의 스크린샷

직접 메서드 호출

백 엔드 애플리케이션은 IoT Hub의 서비스 쪽 엔드포인트에 연결합니다. 애플리케이션은 IoT Hub를 통해 디바이스에 직접 메서드를 호출하고 승인을 수신 대기합니다. IoT Hub 백 엔드 애플리케이션은 일반적으로 클라우드에서 실행됩니다.

  1. 다른 로컬 터미널 창에서 샘플 Python 프로젝트의 루트 폴더로 이동합니다. 그런 다음 , iot-hub\Quickstarts\back-end-application 폴더로 이동합니다.

  2. 선택한 텍스트 편집기에서 BackEndApplication.py 파일을 엽니다.

    변수 값을 CONNECTION_STRING 앞에서 적어 두는 서비스 연결 문자열로 바꿉다. 그런 다음 변경 내용을 BackEndApplication.py 저장합니다.

  3. 로컬 터미널 창에서 다음 명령을 실행하여 시뮬레이션된 디바이스 애플리케이션에 필요한 라이브러리를 설치합니다.

    pip install azure-iot-hub
    
  4. 로컬 터미널 창에서 다음 명령을 실행하여 백 엔드 애플리케이션을 실행합니다.

    python BackEndApplication.py
    

    다음 스크린샷은 애플리케이션이 디바이스에 직접 메서드를 호출하고 승인을 받을 때의 출력을 보여 줍니다.

    서비스 애플리케이션에서 직접 메서드 호출의 결과를 보여 주는 터미널 창의 스크린샷

    백 엔드 애플리케이션을 실행한 후 콘솔 창에 시뮬레이션된 디바이스를 실행하는 메시지와 메시지를 보내는 속도가 변경됩니다.

    직접 메시지 결과와 시뮬레이션된 디바이스 애플리케이션의 업데이트된 출력을 보여 주는 터미널 창의 스크린샷

자원을 정리하세요

다음 권장 문서를 계속 진행하는 경우 이미 만든 리소스를 유지하고 다시 사용할 수 있습니다.

그렇지 않으면 요금이 부과되지 않도록 이 문서에서 만든 Azure 리소스를 삭제할 수 있습니다.

중요합니다

리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹 및 그 안에 포함된 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다. 유지하려는 리소스가 포함된 기존 리소스 그룹 내에 IoT Hub를 만든 경우 리소스 그룹을 삭제하는 대신 IoT Hub 리소스 자체만 삭제합니다.

이름으로 리소스 그룹을 삭제하려면 다음을 수행합니다.

  1. Azure Portal에 로그인하고 리소스 그룹을 선택합니다.

  2. 필터용 필드 텍스트 상자에 IoT Hub를 포함하는 리소스 그룹의 이름을 입력합니다.

  3. 결과 목록에서 IoT Hub가 포함된 리소스 그룹을 선택합니다.

  4. 리소스 그룹의 작업 창에서 명령 모음에서 리소스 그룹 삭제 를 선택합니다.

    명령 모음에서 리소스 그룹 삭제 명령이 강조 표시된 Azure Portal의 리소스 그룹 작업 창을 보여 주는 스크린샷

  5. 리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 다시 입력하여 확인한 다음, 삭제를 선택합니다. 잠시 후, 리소스 그룹 및 해당 그룹에 포함된 모든 리소스가 삭제됩니다.

다음 단계

이 빠른 시작에서는 서비스 애플리케이션에서 디바이스에서 직접 메서드를 호출하고 시뮬레이션된 디바이스 애플리케이션에서 직접 메서드 호출에 응답했습니다.

디바이스-클라우드 메시지를 클라우드의 다른 대상으로 라우팅하는 방법을 알아보려면 다음 자습서를 계속 진행하세요.