자습서 - Linux 또는 Windows에서 실행되는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 IoT Hub에 연결

이 자습서에서는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 빌드하고, IoT 허브에 연결하고, Azure IoT 탐색기 도구를 사용하여 전송되는 원격 분석을 확인하는 방법을 보여 줍니다. 샘플 애플리케이션은 C로 작성되었으며 C용 Azure IoT 디바이스 SDK에 포함되어 있습니다. 솔루션 빌더는 디바이스 코드를 볼 필요 없이 Azure IoT 탐색기 도구를 사용하여 IoT 플러그 앤 플레이 디바이스의 기능을 이해할 수 있습니다.

코드 찾아보기

필수 조건

계속하기 전에 IoT 허브를 포함하여 환경을 설정했는지 확인합니다.

Linux 또는 Windows에서 이 자습서를 실행할 수 있습니다. 이 자습서의 셸 명령은 '/' 경로 구분 기호에 대한 Linux 규칙을 따릅니다. Windows에서 계속 실행 중인 경우 '\'에 대해 이러한 구분 기호를 교환해야 합니다.

필수 구성 요소는 운영 체제에 따라 다릅니다.

Linux

이 자습서에서는 Ubuntu Linux를 사용하고 있다고 가정합니다. 이 자습서의 단계는 Ubuntu 18.04를 사용하여 테스트했습니다.

Linux에서 이 자습서를 완료하려면 로컬 Linux 환경에 다음 소프트웨어를 설치해야 합니다.

apt-get 명령을 사용하여 GCC, Git, cmake 및 필요한 모든 종속성을 설치합니다.

sudo apt-get update
sudo apt-get install -y git cmake build-essential curl libcurl4-openssl-dev libssl-dev uuid-dev

cmake 버전이 2.8.12보다 크고, GCC 버전이 4.4.7보다 큰지 확인합니다.

cmake --version
gcc --version

Windows

Windows에서 이 자습서를 완료하려면 로컬 Windows 환경에 다음 소프트웨어를 설치합니다.

코드 다운로드

이 자습서에서는 Azure IoT Hub Device C SDK를 복제하고 빌드하는 데 사용할 수 있는 개발 환경을 준비합니다.

선택한 디렉터리에서 명령 프롬프트를 엽니다. 다음 명령을 실행하여 Azure IoT C SDK 및 라이브러리 GitHub 리포지토리를 이 위치에 복제합니다.

git clone https://github.com/Azure/azure-iot-sdk-c.git
cd azure-iot-sdk-c
git submodule update --init

이 작업을 완료하는 데 몇 분 정도가 걸립니다.

코드 빌드

Visual Studio를 사용하거나 명령줄에서 cmake를 사용하여 코드를 빌드하고 실행할 수 있습니다.

Visual Studio 사용

  1. 복제된 리포지토리의 루트 폴더를 엽니다. 몇 초 후에 Visual Studio에서 CMake 지원은 프로젝트를 실행하고 디버그하는 데 필요한 모든 작업을 만듭니다.

  2. Visual Studio가 준비되면 솔루션 탐색기에서 iothub_client/samples/pnp/pnp_simple_thermostat/ 샘플로 이동합니다.

  3. pnp_simple_thermostat.c 파일을 마우스 오른쪽 단추로 클릭하고 디버그 구성 추가를 선택합니다. 기본값을 선택합니다.

  4. Visual Studio에서 launch.vs.json 파일을 엽니다. 필요한 환경 변수를 설정하려면 다음 코드 조각에 나와 있는 것처럼 이 파일을 편집합니다. IoT 플러그 앤 플레이 빠른 시작 및 자습서에 대한 환경 설정을 완료할 때 범위 ID 및 등록 기본 키를 적어 두었습니다.

    {
      "version": "0.2.1",
      "defaults": {},
      "configurations": [
        {
          "type": "default",
          "project": "iothub_client\\samples\\pnp\\pnp_simple_thermostat\\pnp_pnp_simple_thermostat.c",
          "projectTarget": "",
          "name": "pnp_simple_thermostat.c",
          "env": {
            "IOTHUB_DEVICE_SECURITY_TYPE": "DPS",
            "IOTHUB_DEVICE_DPS_ID_SCOPE": "<Your ID scope>",
            "IOTHUB_DEVICE_DPS_DEVICE_ID": "my-pnp-device",
            "IOTHUB_DEVICE_DPS_DEVICE_KEY": "<Your enrollment primary key>"
          }
        }
      ]
    }
    
  5. pnp_simple_thermostat.c 파일을 마우스 오른쪽 단추로 클릭하고 시작 항목으로 설정을 선택합니다.

  6. Visual Studio에서 코드 실행을 추적하려면 pnp_simple_thermostat.c 파일의 main 함수에 중단점을 추가합니다.

  7. 이제 디버그 메뉴에서 샘플을 실행하고 디버그할 수 있습니다.

이제 디바이스가 명령 및 속성 업데이트를 받을 준비가 되었으며, 허브로 원격 분석 데이터를 보내기 시작했습니다. 다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

cmake를 사용하여 코드 빌드

cmake 명령줄 유틸리티를 사용하여 코드를 빌드합니다.

  1. 디바이스 SDK의 루트 폴더에 cmake 하위 디렉터리를 만들고 해당 폴더로 이동합니다.

    cd azure-iot-sdk-c
    mkdir cmake
    cd cmake
    
  2. 다음 명령을 실행하여 SDK 및 샘플을 빌드합니다.

    cmake -Duse_prov_client=ON -Dhsm_type_symm_key=ON -Drun_e2e_tests=OFF ..
    cmake --build .
    

디바이스 샘플 실행

환경 설정에서 DPS(Device Provisioning Service)를 사용하여 IoT 허브에 연결하도록 샘플을 구성하는 네 가지 환경 변수를 만들었습니다.

  • 값이 DPSIOTHUB_DEVICE_SECURITY_TYPE
  • IOTHUB_DEVICE_DPS_ID_SCOPE(DPS ID 범위 포함).
  • 값이 my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY(등록 기본 키 포함).
  • 값이 global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

샘플 구성에 대해 자세히 알아보려면 샘플 추가 정보를 참조하세요.

IoT 허브에 원격 분석을 전송하는 IoT 플러그 앤 플레이 디바이스를 시뮬레이트하는 SDK에서 샘플 애플리케이션을 실행하려면 다음을 수행합니다.

cmake 폴더에서 실행 파일이 있는 폴더로 이동하여 실행합니다.

# Bash
cd iothub_client/samples/pnp/pnp_simple_thermostat/
./pnp_simple_thermostat
REM Windows
cd iothub_client\samples\pnp\pnp_simple_thermostat\Debug
.\pnp_simple_thermostat.exe

Windows의 Visual Studio에서 코드 실행을 추적하려면 pnp_simple_thermostat.c 파일의 main 함수에 중단점을 추가합니다.

이제 디바이스가 명령 및 속성 업데이트를 받을 준비가 되었으며, 허브로 원격 분석 데이터를 보내기 시작했습니다. 다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

Azure IoT 탐색기를 사용하여 코드 유효성 검사

디바이스 클라이언트 샘플이 시작되면 Azure IoT 탐색기 도구를 사용하여 작동하는지 확인합니다.

  1. Azure IoT 탐색기를 엽니다.

  2. IoT 허브에 대한 연결을 아직 추가하지 않은 경우 IoT 허브 페이지에서 + 연결 추가를 선택합니다. 이전에 만든 IoT 허브에 대한 연결 문자열을 입력하고 저장을 선택합니다.

  3. IoT 플러그 앤 플레이 설정 페이지에서 + 추가 > 로컬 폴더를 선택하고 모델 파일을 저장한 로컬 models 폴더를 선택합니다.

  4. IoT 허브 페이지에서 작업하려는 허브의 이름을 클릭합니다. IoT 허브에 등록된 디바이스 목록이 표시됩니다.

  5. 이전에 만든 디바이스의 디바이스 ID를 클릭합니다.

  6. 왼쪽의 메뉴에는 디바이스에 사용할 수 있는 다양한 유형의 정보가 표시됩니다.

  7. IoT 플러그 앤 플레이 구성 요소를 선택하여 디바이스에 대한 모델 정보를 확인합니다.

  8. 디바이스의 다양한 구성 요소를 볼 수 있습니다. 기본 구성 요소 및 추가 구성 요소입니다. 작업할 구성 요소를 선택합니다.

  9. 원격 분석 페이지를 선택한 다음, 시작을 선택하여 이 구성 요소에 대해 디바이스에서 보내는 원격 분석 데이터를 살펴봅니다.

  10. 속성(읽기 전용) 페이지를 선택하여 이 구성 요소에 대해 보고된 읽기 전용 속성을 살펴봅니다.

  11. 속성(쓰기 가능) 페이지를 선택하여 이 구성 요소에 대해 업데이트할 수 있는 쓰기 가능 속성을 살펴봅니다.

  12. 해당 이름으로 속성을 선택하고, 새 값을 입력하고, 원하는 값 업데이트를 선택합니다.

  13. 새 값 표시를 보려면 새로 고침 단추를 선택합니다.

  14. 명령 페이지를 선택하여 이 구성 요소에 대한 모든 명령을 살펴봅니다.

  15. 테스트하려는 명령을 선택하여 매개 변수를 설정합니다. 명령 보내기를 선택하여 디바이스에서 명령을 호출합니다. 샘플 코드가 실행되고 있는 명령 프롬프트 창에서 디바이스가 명령에 응답하는 것을 볼 수 있습니다.

코드 검토

이 샘플은 간단한 IoT 플러그 앤 플레이 온도 조절 디바이스를 구현합니다. 자동 온도 조절기 모델은 IoT 플러그 앤 플레이 구성 요소를 사용하지 않습니다. 온도 조절 디바이스용 DTDL 모델 파일은 디바이스에서 구현하는 원격 분석, 속성 및 명령을 정의합니다.

디바이스 코드는 표준 함수를 사용하여 IoT 허브에 연결합니다.

deviceHandle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, MQTT_Protocol)

디바이스는 연결 요청에서 구현하는 DTDL 모델의 모델 ID를 보냅니다. 모델 ID를 보내는 디바이스는 IoT 플러그 앤 플레이 디바이스입니다.

static const char g_ModelId[] = "dtmi:com:example:Thermostat;1";

...

IoTHubDeviceClient_SetOption(deviceHandle, OPTION_MODEL_ID, modelId)

속성을 업데이트하고, 명령을 처리하고, 원격 분석을 보내는 코드는 IoT 플러그 앤 플레이 규칙을 사용하지 않는 디바이스의 코드와 동일합니다.

코드에서는 Parson 라이브러리를 사용하여 IoT 허브에서 전송된 페이로드의 JSON 개체를 구문 분석합니다.

// JSON parser
#include "parson.h"

리소스 정리

빠른 시작 및 자습서를 완료한 경우 리소스 정리를 참조하세요.

이 자습서에서는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 빌드하고, IoT 허브에 연결하고, Azure IoT 탐색기 도구를 사용하여 전송되는 원격 분석을 확인하는 방법을 보여 줍니다. 샘플 애플리케이션은 C#으로 작성되었으며 C#용 Azure IoT SDK에 포함되어 있습니다. 솔루션 빌더는 디바이스 코드를 볼 필요 없이 Azure IoT 탐색기 도구를 사용하여 IoT 플러그 앤 플레이 디바이스의 기능을 이해할 수 있습니다.

코드 찾아보기

필수 조건

계속하기 전에 IoT 허브를 포함하여 환경을 설정했는지 확인합니다.

Linux 또는 Windows에서 이 자습서를 실행할 수 있습니다. 이 자습서의 셸 명령은 '/' 경로 구분 기호에 대한 Linux 규칙을 따릅니다. Windows에서 계속 실행 중인 경우 '\'에 대해 이러한 구분 기호를 교환해야 합니다.

코드 다운로드

이 자습서에서는 C#용 Azure IoT SDK를 복제하고 빌드하는 데 사용할 수 있는 개발 환경을 준비합니다.

선택한 폴더에서 명령 프롬프트를 엽니다. 다음 명령을 실행하여 C#용 Microsoft Azure IoT SDK(.NET) GitHub 리포지토리를 다음 위치에 복제합니다.

git clone  https://github.com/Azure/azure-iot-sdk-csharp

코드 빌드

이제 샘플을 빌드하고 실행할 수 있습니다. 다음 명령을 실행하여 샘플을 빌드합니다.

cd azure-iot-sdk-csharp/iothub/device/samples/solutions/PnpDeviceSamples/Thermostat
dotnet build

디바이스 샘플 실행

샘플을 실행하려면 다음 명령을 실행합니다.

dotnet run

이제 디바이스가 명령 및 속성 업데이트를 받을 준비가 되었으며, 허브로 원격 분석 데이터를 보내기 시작했습니다. 다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

Azure IoT 탐색기를 사용하여 코드 유효성 검사

디바이스 클라이언트 샘플이 시작되면 Azure IoT 탐색기 도구를 사용하여 작동하는지 확인합니다.

  1. Azure IoT 탐색기를 엽니다.

  2. IoT 허브에 대한 연결을 아직 추가하지 않은 경우 IoT 허브 페이지에서 + 연결 추가를 선택합니다. 이전에 만든 IoT 허브에 대한 연결 문자열을 입력하고 저장을 선택합니다.

  3. IoT 플러그 앤 플레이 설정 페이지에서 + 추가 > 로컬 폴더를 선택하고 모델 파일을 저장한 로컬 models 폴더를 선택합니다.

  4. IoT 허브 페이지에서 작업하려는 허브의 이름을 클릭합니다. IoT 허브에 등록된 디바이스 목록이 표시됩니다.

  5. 이전에 만든 디바이스의 디바이스 ID를 클릭합니다.

  6. 왼쪽의 메뉴에는 디바이스에 사용할 수 있는 다양한 유형의 정보가 표시됩니다.

  7. IoT 플러그 앤 플레이 구성 요소를 선택하여 디바이스에 대한 모델 정보를 확인합니다.

  8. 디바이스의 다양한 구성 요소를 볼 수 있습니다. 기본 구성 요소 및 추가 구성 요소입니다. 작업할 구성 요소를 선택합니다.

  9. 원격 분석 페이지를 선택한 다음, 시작을 선택하여 이 구성 요소에 대해 디바이스에서 보내는 원격 분석 데이터를 살펴봅니다.

  10. 속성(읽기 전용) 페이지를 선택하여 이 구성 요소에 대해 보고된 읽기 전용 속성을 살펴봅니다.

  11. 속성(쓰기 가능) 페이지를 선택하여 이 구성 요소에 대해 업데이트할 수 있는 쓰기 가능 속성을 살펴봅니다.

  12. 해당 이름으로 속성을 선택하고, 새 값을 입력하고, 원하는 값 업데이트를 선택합니다.

  13. 새 값 표시를 보려면 새로 고침 단추를 선택합니다.

  14. 명령 페이지를 선택하여 이 구성 요소에 대한 모든 명령을 살펴봅니다.

  15. 테스트하려는 명령을 선택하여 매개 변수를 설정합니다. 명령 보내기를 선택하여 디바이스에서 명령을 호출합니다. 샘플 코드가 실행되고 있는 명령 프롬프트 창에서 디바이스가 명령에 응답하는 것을 볼 수 있습니다.

코드 검토

이 샘플은 간단한 IoT 플러그 앤 플레이 온도 조절 디바이스를 구현합니다. 이 샘플에서 구현하는 모델은 IoT 플러그 앤 플레이 구성 요소를 사용하지 않습니다. 자동 온도 조절기 디바이스용 DTDL(Digital Twins 정의 언어) 모델 파일은 디바이스에서 구현하는 원격 분석, 속성 및 명령을 정의합니다.

디바이스 코드는 표준 CreateFromConnectionString 메서드를 사용하여 IoT 허브에 연결합니다. 디바이스는 연결 요청에서 구현하는 DTDL 모델의 모델 ID를 보냅니다. 모델 ID를 보내는 디바이스는 IoT 플러그 앤 플레이 디바이스입니다.

private static void InitializeDeviceClientAsync()
{
  var options = new ClientOptions
  {
    ModelId = ModelId,
  };
  s_deviceClient = DeviceClient.CreateFromConnectionString(s_deviceConnectionString, TransportType.Mqtt, options);
  s_deviceClient.SetConnectionStatusChangesHandler((status, reason) =>
  {
     s_logger.LogDebug($"Connection status change registered - status={status}, reason={reason}.");
  });
}

모델 ID는 다음 코드 조각과 같이 코드에 저장됩니다.

private const string ModelId = "dtmi:com:example:Thermostat;1";

속성을 업데이트하고, 명령을 처리하고, 원격 분석을 보내는 코드는 IoT 플러그 앤 플레이 규칙을 사용하지 않는 디바이스의 코드와 동일합니다.

이 샘플에서는 JSON 라이브러리를 사용하여 IoT 허브에서 전송된 페이로드의 JSON 개체를 구문 분석합니다.

using Newtonsoft.Json;

...

DateTime since = JsonConvert.DeserializeObject<DateTime>(request.DataAsJson);

리소스 정리

빠른 시작 및 자습서를 완료한 경우 리소스 정리를 참조하세요.

이 자습서에서는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 빌드하고, IoT 허브에 연결하고, Azure IoT 탐색기 도구를 사용하여 전송되는 원격 분석을 확인하는 방법을 보여 줍니다. 샘플 애플리케이션은 Java로 작성되었으며 Java용 Azure IoT 디바이스 SDK에 포함되어 있습니다. 솔루션 빌더는 디바이스 코드를 볼 필요 없이 Azure IoT 탐색기 도구를 사용하여 IoT 플러그 앤 플레이 디바이스의 기능을 이해할 수 있습니다.

코드 찾아보기

필수 조건

계속하기 전에 IoT 허브를 포함하여 환경을 설정했는지 확인합니다.

Linux 또는 Windows에서 이 자습서를 실행할 수 있습니다. 이 자습서의 셸 명령은 '/' 경로 구분 기호에 대한 Linux 규칙을 따릅니다. Windows에서 계속 실행 중인 경우 '\'에 대해 이러한 구분 기호를 교환해야 합니다.

이 자습서를 완료하려면 로컬 개발 환경에 다음 소프트웨어를 설치합니다.

코드 다운로드

이 자습서에서는 Azure IoT Hub Device Java SDK를 복제하고 빌드하는 데 사용할 수 있는 개발 환경을 준비합니다.

선택한 디렉터리에서 명령 프롬프트를 엽니다. 다음 명령을 실행하여 Azure IoT Java SDK 및 라이브러리 GitHub 리포지토리를 이 위치에 복제합니다.

git clone https://github.com/Azure/azure-iot-sdk-java.git

코드 빌드

복제된 Java SDK 리포지토리에서 자동 온도 조절기 샘플의 루트 폴더로 이동하고 샘플을 빌드합니다.

cd azure-iot-sdk-java/device/iot-device-samples/pnp-device-sample/thermostat-device-sample
mvn clean package

디바이스 샘플 실행

환경 설정에서 DPS(Device Provisioning Service)를 사용하여 IoT 허브에 연결하도록 샘플을 구성하는 네 가지 환경 변수를 만들었습니다.

  • 값이 DPSIOTHUB_DEVICE_SECURITY_TYPE
  • IOTHUB_DEVICE_DPS_ID_SCOPE(DPS ID 범위 포함).
  • 값이 my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY(등록 기본 키 포함).
  • 값이 global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

샘플 구성에 대해 자세히 알아보려면 샘플 추가 정보를 참조하세요.

/device/iot-device-samples/pnp-device-sample/thermostat-device-sample 폴더에서 애플리케이션을 실행합니다.

mvn exec:java -Dexec.mainClass="samples.com.microsoft.azure.sdk.iot.device.Thermostat"

이제 디바이스가 명령 및 속성 업데이트를 받을 준비가 되었으며, 허브로 원격 분석 데이터를 보내기 시작했습니다. 다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

Azure IoT 탐색기를 사용하여 코드 유효성 검사

디바이스 클라이언트 샘플이 시작되면 Azure IoT 탐색기 도구를 사용하여 작동하는지 확인합니다.

  1. Azure IoT 탐색기를 엽니다.

  2. IoT 허브에 대한 연결을 아직 추가하지 않은 경우 IoT 허브 페이지에서 + 연결 추가를 선택합니다. 이전에 만든 IoT 허브에 대한 연결 문자열을 입력하고 저장을 선택합니다.

  3. IoT 플러그 앤 플레이 설정 페이지에서 + 추가 > 로컬 폴더를 선택하고 모델 파일을 저장한 로컬 models 폴더를 선택합니다.

  4. IoT 허브 페이지에서 작업하려는 허브의 이름을 클릭합니다. IoT 허브에 등록된 디바이스 목록이 표시됩니다.

  5. 이전에 만든 디바이스의 디바이스 ID를 클릭합니다.

  6. 왼쪽의 메뉴에는 디바이스에 사용할 수 있는 다양한 유형의 정보가 표시됩니다.

  7. IoT 플러그 앤 플레이 구성 요소를 선택하여 디바이스에 대한 모델 정보를 확인합니다.

  8. 디바이스의 다양한 구성 요소를 볼 수 있습니다. 기본 구성 요소 및 추가 구성 요소입니다. 작업할 구성 요소를 선택합니다.

  9. 원격 분석 페이지를 선택한 다음, 시작을 선택하여 이 구성 요소에 대해 디바이스에서 보내는 원격 분석 데이터를 살펴봅니다.

  10. 속성(읽기 전용) 페이지를 선택하여 이 구성 요소에 대해 보고된 읽기 전용 속성을 살펴봅니다.

  11. 속성(쓰기 가능) 페이지를 선택하여 이 구성 요소에 대해 업데이트할 수 있는 쓰기 가능 속성을 살펴봅니다.

  12. 해당 이름으로 속성을 선택하고, 새 값을 입력하고, 원하는 값 업데이트를 선택합니다.

  13. 새 값 표시를 보려면 새로 고침 단추를 선택합니다.

  14. 명령 페이지를 선택하여 이 구성 요소에 대한 모든 명령을 살펴봅니다.

  15. 테스트하려는 명령을 선택하여 매개 변수를 설정합니다. 명령 보내기를 선택하여 디바이스에서 명령을 호출합니다. 샘플 코드가 실행되고 있는 명령 프롬프트 창에서 디바이스가 명령에 응답하는 것을 볼 수 있습니다.

코드 검토

이 샘플은 간단한 IoT 플러그 앤 플레이 온도 조절 디바이스를 구현합니다. 이 샘플에서 구현하는 모델은 IoT 플러그 앤 플레이 구성 요소를 사용하지 않습니다. 온도 조절 디바이스용 DTDL 모델 파일은 디바이스에서 구현하는 원격 분석, 속성 및 명령을 정의합니다.

디바이스 코드는 표준 DeviceClient 클래스를 사용하여 IoT 허브에 연결합니다. 디바이스는 연결 요청에서 구현하는 DTDL 모델의 모델 ID를 보냅니다. 모델 ID를 보내는 디바이스는 IoT 플러그 앤 플레이 디바이스입니다.

private static void initializeDeviceClient() throws URISyntaxException, IOException {
    ClientOptions options = new ClientOptions();
    options.setModelId(MODEL_ID);
    deviceClient = new DeviceClient(deviceConnectionString, protocol, options);

    deviceClient.registerConnectionStatusChangeCallback((status, statusChangeReason, throwable, callbackContext) -> {
        log.debug("Connection status change registered: status={}, reason={}", status, statusChangeReason);

        if (throwable != null) {
            log.debug("The connection status change was caused by the following Throwable: {}", throwable.getMessage());
            throwable.printStackTrace();
        }
    }, deviceClient);

    deviceClient.open();
}

모델 ID는 다음 코드 조각과 같이 코드에 저장됩니다.

private static final String MODEL_ID = "dtmi:com:example:Thermostat;1";

속성을 업데이트하고, 명령을 처리하고, 원격 분석을 보내는 코드는 IoT 플러그 앤 플레이 규칙을 사용하지 않는 디바이스의 코드와 동일합니다.

이 샘플에서는 JSON 라이브러리를 사용하여 IoT 허브에서 전송된 페이로드의 JSON 개체를 구문 분석합니다.

import com.google.gson.Gson;

...

Date since = new Gson().fromJson(jsonRequest, Date.class);

리소스 정리

빠른 시작 및 자습서를 완료한 경우 리소스 정리를 참조하세요.

이 자습서에서는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 빌드하고, IoT 허브에 연결하고, Azure IoT 탐색기 도구를 사용하여 전송되는 원격 분석을 확인하는 방법을 보여 줍니다. 샘플 애플리케이션은 Node.js로 작성되었으며 Node.js용 Azure IoT 디바이스 SDK에 포함되어 있습니다. 솔루션 빌더는 디바이스 코드를 볼 필요 없이 Azure IoT 탐색기 도구를 사용하여 IoT 플러그 앤 플레이 디바이스의 기능을 이해할 수 있습니다.

코드 찾아보기

필수 조건

계속하기 전에 IoT 허브를 포함하여 환경을 설정했는지 확인합니다.

Linux 또는 Windows에서 이 자습서를 실행할 수 있습니다. 이 자습서의 셸 명령은 '/' 경로 구분 기호에 대한 Linux 규칙을 따릅니다. Windows에서 계속 실행 중인 경우 '\'에 대해 이러한 구분 기호를 교환해야 합니다.

이 자습서를 완료하려면 개발 머신에 Node.js가 필요합니다. nodejs.org에서 여러 플랫폼에 권장하는 최신 버전을 다운로드할 수 있습니다.

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

node --version

코드 다운로드

이 자습서에서는 Node.js용 Azure IoT Hub 디바이스 SDK를 복제하고 빌드하는 데 사용할 수 있는 개발 환경을 준비합니다.

선택한 디렉터리에서 명령 프롬프트를 엽니다. 다음 명령을 실행하여 Node.js용 Microsoft Azure IoT SDK GitHub 리포지토리를 다음 위치에 복제합니다.

git clone https://github.com/Azure/azure-iot-sdk-node

필수 라이브러리 설치

디바이스 SDK를 사용하여 포함된 샘플 코드를 빌드합니다. 빌드하는 애플리케이션은 IoT Hub에 연결하는 디바이스를 시뮬레이션합니다. 이 애플리케이션은 원격 분석 데이터 및 속성을 보내고 명령을 수신합니다.

  1. 로컬 터미널 창에서, 복제된 리포지토리의 폴더로 이동하여 /azure-iot-sdk-node/device/samples/javascript 폴더를 찾습니다. 그런 다음, 다음 명령을 실행하여 필요한 라이브러리를 설치합니다.

    npm install
    

샘플 디바이스 실행

이 샘플은 간단한 IoT 플러그 앤 플레이 온도 조절 디바이스를 구현합니다. 이 샘플에서 구현하는 모델은 IoT 플러그 앤 플레이 구성 요소를 사용하지 않습니다. 온도 조절 디바이스용 DTDL 모델 파일은 디바이스에서 구현하는 원격 분석, 속성 및 명령을 정의합니다.

pnp_simple_thermostat.js 파일을 엽니다. 이 파일에서 다음을 수행하는 방법을 확인할 수 있습니다.

  1. 필요한 인터페이스를 가져옵니다.
  2. 속성 업데이트 처리기 및 명령 처리기를 작성합니다.
  3. 원하는 속성 패치를 처리하고 원격 분석을 보냅니다.
  4. 필요에 따라 Azure DPS(Device Provisioning Service)를 사용하여 디바이스를 프로비저닝합니다.

주 함수에서 모두 함께 제공되는 방법을 확인할 수 있습니다.

  1. 연결 문자열에서 디바이스를 만들거나 DPS를 사용하여 디바이스를 프로비저닝합니다.)
  2. modelID 옵션을 사용하여 IoT 플러그 앤 플레이 디바이스 모델을 지정합니다.
  3. 명령 처리기를 사용하도록 설정합니다.
  4. 디바이스에서 허브로 원격 분석을 보냅니다.
  5. 디바이스 쌍을 가져오고 보고된 속성을 업데이트합니다.
  6. 원하는 속성 업데이트 처리기를 사용하도록 설정합니다.

환경 설정에서 DPS(Device Provisioning Service)를 사용하여 IoT 허브에 연결하도록 샘플을 구성하는 네 가지 환경 변수를 만들었습니다.

  • 값이 DPSIOTHUB_DEVICE_SECURITY_TYPE
  • IOTHUB_DEVICE_DPS_ID_SCOPE(DPS ID 범위 포함).
  • 값이 my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY(등록 기본 키 포함).
  • 값이 global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

샘플 구성에 대해 자세히 알아보려면 샘플 추가 정보를 참조하세요.

샘플 애플리케이션을 실행하여 IoT 허브에 원격 분석을 전송하는 IoT 플러그 앤 플레이 디바이스를 시뮬레이트합니다. 샘플 애플리케이션을 실행하려면 다음 명령을 사용합니다.

node pnp_simple_thermostat.js

디바이스가 허브로 원격 분석 데이터를 보내기 시작했으며, 이제 명령 및 속성 업데이트를 받을 준비가 되었다는 것을 나타내는 다음 출력이 표시됩니다.

디바이스 확인 메시지

다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

Azure IoT 탐색기를 사용하여 코드 유효성 검사

디바이스 클라이언트 샘플이 시작되면 Azure IoT 탐색기 도구를 사용하여 작동하는지 확인합니다.

  1. Azure IoT 탐색기를 엽니다.

  2. IoT 허브에 대한 연결을 아직 추가하지 않은 경우 IoT 허브 페이지에서 + 연결 추가를 선택합니다. 이전에 만든 IoT 허브에 대한 연결 문자열을 입력하고 저장을 선택합니다.

  3. IoT 플러그 앤 플레이 설정 페이지에서 + 추가 > 로컬 폴더를 선택하고 모델 파일을 저장한 로컬 models 폴더를 선택합니다.

  4. IoT 허브 페이지에서 작업하려는 허브의 이름을 클릭합니다. IoT 허브에 등록된 디바이스 목록이 표시됩니다.

  5. 이전에 만든 디바이스의 디바이스 ID를 클릭합니다.

  6. 왼쪽의 메뉴에는 디바이스에 사용할 수 있는 다양한 유형의 정보가 표시됩니다.

  7. IoT 플러그 앤 플레이 구성 요소를 선택하여 디바이스에 대한 모델 정보를 확인합니다.

  8. 디바이스의 다양한 구성 요소를 볼 수 있습니다. 기본 구성 요소 및 추가 구성 요소입니다. 작업할 구성 요소를 선택합니다.

  9. 원격 분석 페이지를 선택한 다음, 시작을 선택하여 이 구성 요소에 대해 디바이스에서 보내는 원격 분석 데이터를 살펴봅니다.

  10. 속성(읽기 전용) 페이지를 선택하여 이 구성 요소에 대해 보고된 읽기 전용 속성을 살펴봅니다.

  11. 속성(쓰기 가능) 페이지를 선택하여 이 구성 요소에 대해 업데이트할 수 있는 쓰기 가능 속성을 살펴봅니다.

  12. 해당 이름으로 속성을 선택하고, 새 값을 입력하고, 원하는 값 업데이트를 선택합니다.

  13. 새 값 표시를 보려면 새로 고침 단추를 선택합니다.

  14. 명령 페이지를 선택하여 이 구성 요소에 대한 모든 명령을 살펴봅니다.

  15. 테스트하려는 명령을 선택하여 매개 변수를 설정합니다. 명령 보내기를 선택하여 디바이스에서 명령을 호출합니다. 샘플 코드가 실행되고 있는 명령 프롬프트 창에서 디바이스가 명령에 응답하는 것을 볼 수 있습니다.

리소스 정리

빠른 시작 및 자습서를 완료한 경우 리소스 정리를 참조하세요.

이 자습서에서는 샘플 IoT 플러그 앤 플레이 디바이스 애플리케이션을 빌드하고, IoT 허브에 연결하고, Azure IoT 탐색기 도구를 사용하여 전송되는 원격 분석을 확인하는 방법을 보여 줍니다. 샘플 애플리케이션은 Python용으로 작성되었으며 Python용 Azure IoT Hub 디바이스 SDK에 포함되어 있습니다. 솔루션 빌더는 디바이스 코드를 볼 필요 없이 Azure IoT 탐색기 도구를 사용하여 IoT 플러그 앤 플레이 디바이스의 기능을 이해할 수 있습니다.

코드 찾아보기

필수 조건

계속하기 전에 IoT 허브를 포함하여 환경을 설정했는지 확인합니다.

이 자습서를 완료하려면 개발 컴퓨터에 Python이 설치되어 있어야 합니다. 현재 Python 버전 요구 사항에 대해서는 Azure IoT Python SDK를 확인합니다. 다음 명령을 사용하여 현재 Python 버전을 확인할 수 있습니다.

python --version

python.org에서 여러 플랫폼에 권장되는 최신 버전을 다운로드할 수 있습니다.

로컬 Python 환경에서 다음과 같이 패키지를 설치합니다.

pip install azure-iot-device

Python SDK IoT 리포지토리를 복제합니다.

git clone --branch v2 https://github.com/Azure/azure-iot-sdk-python

샘플 디바이스 실행

azure-iot-sdk-python/samples/pnp 폴더에는 IoT 플러그 앤 플레이 디바이스에 대한 샘플 코드가 포함되어 있습니다. 이 자습서에서는 simple_thermostat.py 파일을 사용합니다. 이 샘플 코드는 IoT 플러그 앤 플레이 호환 디바이스를 구현하고 Azure IoT Python 디바이스 클라이언트 라이브러리를 사용합니다.

텍스트 편집기에서 simple_thermostat.py 파일을 엽니다. 다음과 같은 방법을 살펴보세요.

  1. 자동 온도 조절기를 고유하게 나타내는 단일 DTMI(Device Twin 모델 식별자)를 정의하는 방법. DTMI는 사용자에게 알려져야 하며 디바이스 구현 시나리오에 따라 달라집니다. 현재 샘플의 경우 모델은 온도 모니터링과 관련된 원격 분석, 속성, 명령이 있는 자동 온도 조절기를 나타냅니다.

  2. 함수를 통해 명령 처리기 구현을 정의하는 방법. 이러한 처리기를 작성하여 디바이스가 명령 요청에 응답하는 방식을 정의합니다.

  3. 함수를 통해 명령 응답을 정의하는 방법. IoT 허브로 응답을 보내는 명령 응답 함수를 만듭니다.

  4. 애플리케이션을 종료할 수 있는 입력 키보드 수신기 함수를 정의합니다.

  5. main 함수를 사용하는 방법. main 함수는 다음을 수행합니다.

    1. 디바이스 SDK를 사용하여 디바이스 클라이언트를 만들고 IoT 허브에 연결합니다.

    2. 속성을 업데이트합니다. 자동 온도 조절기 모델은 자동 온도 조절기의 두 속성으로 targetTemperaturemaxTempSinceLastReboot를 정의합니다. 속성은 device_client에 정의된 patch_twin_reported_properties 메서드를 사용하여 업데이트됩니다.

    3. execute_command_listener 함수를 사용하여 명령 요청 수신 대기를 시작합니다. 이 함수는 서비스가 보내는 명령을 수신 대기하는 '수신기'를 설정합니다. 수신기를 설정할 때 method_name, user_command_handlercreate_user_response_handler를 제공합니다.

      • user_command_handler 함수는 디바이스가 명령을 수신할 때 수행할 작업을 정의합니다.
      • create_user_response_handler 함수는 명령이 성공적으로 실행될 때 IoT 허브로 전송할 응답을 만듭니다. 포털에서 이 응답을 볼 수 있습니다.
    4. 원격 분석 보내기를 시작합니다. pnp_send_telemetry는 pnp_methods.py 파일에 정의되어 있습니다. 샘플 코드는 루프를 사용하여 8초마다 이 함수를 호출합니다.

    5. Q 또는 q를 누르면 모든 수신기 및 작업을 사용하지 않도록 설정하고 루프를 종료합니다.

환경 설정에서 DPS(Device Provisioning Service)를 사용하여 IoT 허브에 연결하도록 샘플을 구성하는 네 가지 환경 변수를 만들었습니다.

  • 값이 DPSIOTHUB_DEVICE_SECURITY_TYPE
  • IOTHUB_DEVICE_DPS_ID_SCOPE(DPS ID 범위 포함).
  • 값이 my-pnp-deviceIOTHUB_DEVICE_DPS_DEVICE_ID.
  • IOTHUB_DEVICE_DPS_DEVICE_KEY(등록 기본 키 포함).
  • 값이 global.azure-devices-provisioning.netIOTHUB_DEVICE_DPS_ENDPOINT.

샘플 구성에 대해 자세히 알아보려면 샘플 추가 정보를 참조하세요.

코드를 살펴보았으면 다음 명령을 사용하여 샘플을 실행합니다.

python simple_thermostat.py

디바이스가 허브로 원격 분석 데이터를 보내고 있으며, 이제 명령 및 속성 업데이트를 받을 준비가 되었다는 것을 나타내는 다음 출력이 표시됩니다.

Listening for command requests and property updates
Press Q to quit
Sending telemetry for temperature
Sent message

다음 단계를 완료하는 동안 샘플을 계속 실행하세요.

Azure IoT 탐색기를 사용하여 코드 유효성 검사

디바이스 클라이언트 샘플이 시작되면 Azure IoT 탐색기 도구를 사용하여 작동하는지 확인합니다.

  1. Azure IoT 탐색기를 엽니다.

  2. IoT 허브에 대한 연결을 아직 추가하지 않은 경우 IoT 허브 페이지에서 + 연결 추가를 선택합니다. 이전에 만든 IoT 허브에 대한 연결 문자열을 입력하고 저장을 선택합니다.

  3. IoT 플러그 앤 플레이 설정 페이지에서 + 추가 > 로컬 폴더를 선택하고 모델 파일을 저장한 로컬 models 폴더를 선택합니다.

  4. IoT 허브 페이지에서 작업하려는 허브의 이름을 클릭합니다. IoT 허브에 등록된 디바이스 목록이 표시됩니다.

  5. 이전에 만든 디바이스의 디바이스 ID를 클릭합니다.

  6. 왼쪽의 메뉴에는 디바이스에 사용할 수 있는 다양한 유형의 정보가 표시됩니다.

  7. IoT 플러그 앤 플레이 구성 요소를 선택하여 디바이스에 대한 모델 정보를 확인합니다.

  8. 디바이스의 다양한 구성 요소를 볼 수 있습니다. 기본 구성 요소 및 추가 구성 요소입니다. 작업할 구성 요소를 선택합니다.

  9. 원격 분석 페이지를 선택한 다음, 시작을 선택하여 이 구성 요소에 대해 디바이스에서 보내는 원격 분석 데이터를 살펴봅니다.

  10. 속성(읽기 전용) 페이지를 선택하여 이 구성 요소에 대해 보고된 읽기 전용 속성을 살펴봅니다.

  11. 속성(쓰기 가능) 페이지를 선택하여 이 구성 요소에 대해 업데이트할 수 있는 쓰기 가능 속성을 살펴봅니다.

  12. 해당 이름으로 속성을 선택하고, 새 값을 입력하고, 원하는 값 업데이트를 선택합니다.

  13. 새 값 표시를 보려면 새로 고침 단추를 선택합니다.

  14. 명령 페이지를 선택하여 이 구성 요소에 대한 모든 명령을 살펴봅니다.

  15. 테스트하려는 명령을 선택하여 매개 변수를 설정합니다. 명령 보내기를 선택하여 디바이스에서 명령을 호출합니다. 샘플 코드가 실행되고 있는 명령 프롬프트 창에서 디바이스가 명령에 응답하는 것을 볼 수 있습니다.

리소스 정리

빠른 시작 및 자습서를 완료한 경우 리소스 정리를 참조하세요.

제한된 디바이스용으로 개발 중인 경우 다음을 통해 IoT 플러그 앤 플레이를 사용할 수 있습니다.

이 문서에는 이러한 제한된 시나리오에 대한 링크와 리소스가 포함되어 있습니다.

필수 조건

아래 샘플은 대부분은 특정 하드웨어 디바이스를 필요로 하며 각 샘플 마다 필수 구성 요소가 다릅니다. 자세한 필수 구성 요소, 구성 및 빌드 지침은 관련 샘플에 대한 링크를 따르세요.

Embedded C용 SDK 사용

Embedded C용 SDK는 IoT 플러그 앤 플레이 규칙을 사용하여 제한된 디바이스를 Azure IoT 서비스에 연결하는 간단한 솔루션을 제공합니다. 다음 링크에는 MCU 기반 디바이스, 교육, 디버깅을 위한 샘플이 포함되어 있습니다.

MCU 기반 디바이스 사용

MCU에서 Embedded C용 SDK, Device Provisioning Service, IoT 플러그 앤 플레이를 사용하는 전체 엔드투엔드 자습서는 IoT Hub Device Provisioning Service를 통해 Azure에 연결할 PIC-IoT Wx 개발 보드 용도 변경을 참조하세요.

소개 샘플

Embedded C용 SDK 리포지토리에는 IoT 플러그 앤 플레이를 사용하는 방법을 보여주는 몇 가지 샘플이 포함되어 있습니다.

참고 항목

이러한 샘플은 교육 및 디버깅을 목적으로 Windows 및 Linux에서 실행되는 것으로 표시됩니다. 프로덕션 시나리오에서 샘플은 제한된 디바이스에서만 사용됩니다.

Eclipse ThreadX 사용

Eclipse ThreadX에는 Azure IoT 클라우드 서비스에 네이티브 연결을 추가하는 경량 계층이 포함되어 있습니다. 이 계층은 Eclipse ThreadX의 유용한 기능을 사용하면서 제한된 디바이스를 Azure IoT에 연결하는 간단한 메커니즘을 제공합니다. 자세한 내용은 Eclipse ThreadX 개요를 참조하세요.

도구 체인

Eclipse ThreadX 샘플은 다음과 같은 다양한 종류의 IDE 및 툴체인 조합과 함께 제공됩니다.

샘플

다음 표에는 Eclipse ThreadX 및 IoT 플러그 앤 플레이를 사용하여 다양한 디바이스에서 시작하는 방법을 보여 주는 샘플이 나열되어 있습니다.

제조업체 디바이스 샘플
Microchip ATSAME54-XPRO GCC/CMakeIARMPLAB
MXCHIP AZ3166 GCC/CMake
NXP MIMXRT1060-EVK GCC/CMakeIARMCUXpresso
STMicroelectronics 32F746GDISCOVERY IARSTM32Cube
STMicroelectronics B-L475E-IOT01 GCC/CMakeIARSTM32Cube
STMicroelectronics B-L4S5I-IOT01 GCC/CMakeIARSTM32Cube

다음 단계

이 자습서에서는 IoT 플러그 앤 플레이 디바이스를 IoT 허브에 연결하는 방법을 알아보았습니다. IoT 플러그 앤 플레이 디바이스와 상호 작용하는 솔루션을 빌드하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.