자습서: Azure IoT Central 애플리케이션에서 새 IoT 게이트웨이 디바이스 유형 정의

이 자습서에서는 스마트 빌딩 게이트웨이 디바이스 템플릿을 만듭니다. 스마트 빌딩 게이트웨이 디바이스는 다른 다운스트림 디바이스와 관계가 있습니다.

게이트웨이 디바이스와 해당 다운스트림 디바이스 간의 관계를 보여 주는 다이어그램.

게이트웨이 디바이스는 다음을 수행할 수도 있습니다.

  • 온도 같은 자체 원격 분석 데이터를 보냅니다.
  • 운영자가 수행한 쓰기 가능한 속성 업데이트에 응답합니다. 예를 들어 운영자가 원격 분석 데이터 송신 간격을 변경할 수 있습니다.
  • 디바이스 재부팅 같은 명령에 응답합니다.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • 다운스트림 디바이스 템플릿
  • 게이트웨이 디바이스 템플릿 만들기
  • 디바이스 템플릿 게시
  • 시뮬레이션된 디바이스 만들기

필수 조건

이 자습서를 완료하려면 다음이 필요합니다.

다운스트림 디바이스 템플릿

이 자습서에서는 Onset Hobo MX-100 Temp Sensor 디바이스 및 RS40 Occupancy Sensor 디바이스용 디바이스 템플릿을 사용하여 시뮬레이션된 다운스트림 디바이스를 생성합니다.

Onset Hobo MX-100 온도 센서 디바이스용 디바이스 템플릿을 만들려면 다음 단계를 따릅니다.

  1. 왼쪽 창에서 디바이스 템플릿을 선택합니다. 그런 다음, + 새로 만들기를 선택하여 템플릿 추가를 시작합니다.

  2. Onset Hobo MX-100 Temp Sensor 디바이스 타일이 보일 때까지 아래로 스크롤합니다. 이 타일을 선택하고, 다음: 검토를 선택합니다.

  3. 검토 페이지에서 만들기를 선택하여 애플리케이션에 디바이스 템플릿을 추가합니다.

RS40 선점 센서 디바이스에 대한 디바이스 템플릿을 만들려면 다음을 수행합니다.

  1. 왼쪽 창에서 디바이스 템플릿을 선택합니다. 그런 다음, + 새로 만들기를 선택하여 템플릿 추가를 시작합니다.

  2. RS40 선점 센서 디바이스의 타일이 보일 때까지 아래로 스크롤합니다. 이 타일을 선택하고, 다음: 검토를 선택합니다.

  3. 검토 페이지에서 만들기를 선택하여 애플리케이션에 디바이스 템플릿을 추가합니다.

이제 두 다운스트림 디바이스 유형에 대한 다음과 같은 디바이스 템플릿이 생겼습니다.

다운스트림 디바이스 템플릿을 보여 주는 스크린샷.

게이트웨이 디바이스 템플릿 만들기

이 자습서에서는 게이트웨이 디바이스에 대한 디바이스 템플릿을 처음부터 새로 만듭니다. 나중에 애플리케이션에서 이 템플릿을 사용하여 시뮬레이션된 게이트웨이 디바이스를 만듭니다.

애플리케이션에 새 게이트웨이 디바이스 템플릿을 추가하는 방법은 다음과 같습니다.

  1. 왼쪽 창에서 디바이스 템플릿을 선택합니다. 그런 다음, + 새로 만들기를 선택하여 템플릿 추가를 시작합니다.

  2. 템플릿 유형 선택 페이지에서 IoT 디바이스 타일을 선택한 다음, 다음: 사용자 지정을 선택합니다.

  3. 디바이스 사용자 지정 페이지에서 게이트웨이 디바이스입니다 확인란을 선택합니다.

  4. 스마트 빌딩 게이트웨이 디바이스를 템플릿 이름으로 입력한 후, 다음: 검토를 선택합니다.

  5. 검토 페이지에서 만들기를 선택합니다.

  6. 모델 만들기 페이지에서 사용자 지정 모델 타일을 선택합니다.

  7. + 기능 추가를 선택하여 기능을 추가합니다.

  8. 표시 이름으로 데이터 보내기를 입력한 다음, 기능 유형으로 속성을 선택합니다.

  9. 스키마 유형으로 부울 을 선택하고 쓰기 가능 을 설정한 다음 저장을 선택합니다.

관계 추가

다음으로 다운스트림 디바이스에 대한 템플릿에 관계를 추가합니다.

  1. 스마트 빌딩 게이트웨이 디바이스 템플릿에서 관계를 선택합니다.

  2. + 관계 추가를 선택합니다. 표시 이름으로 환경 센서를 입력하고 대상으로 Hobo MX-100을 선택합니다.

  3. + 관계 추가를 다시 선택합니다. 표시 이름으로 선점 센서를 입력하고, 대상으로 RS40 선점 센서를 선택합니다.

  4. 저장을 선택합니다.

게이트웨이 관계를 보여 주는 스크린샷.

클라우드 속성 추가

게이트웨이 디바이스 템플릿에는 클라우드 속성이 포함될 수 있습니다. 클라우드 속성은 IoT Central 애플리케이션에만 있으며, 디바이스에서 보내거나 받지 않습니다.

스마트 빌딩 게이트웨이 디바이스 템플릿에 클라우드 속성을 추가하는 방법은 다음과 같습니다.

  1. 스마트 빌딩 게이트웨이 디바이스 템플릿에서 스마트 빌딩 게이트웨이 디바이스 모델을 선택합니다.

  2. 다음 표의 정보를 사용하여 게이트웨이 디바이스 템플릿에 두 가지 클라우드 속성을 추가합니다.

    표시 이름 기능 유형 의미 체계 유형 스키마
    마지막 서비스 날짜 클라우드 속성 없음 날짜
    고객 이름 클라우드 속성 없음 문자열
  3. 저장을 선택합니다.

뷰 만들기

작성기처럼 환경 센서 디바이스와 관련된 정보를 운영자에게 표시하도록 애플리케이션을 사용자 지정할 수 있습니다. 사용자 지정을 사용하면 운영자가 애플리케이션에 연결된 환경 센서 디바이스를 관리할 수 있습니다. 운영자가 디바이스와 상호 작용하는 데 사용할 다음 두 가지 유형의 보기를 만들 수 있습니다.

  • 디바이스 및 클라우드 속성을 보고 편집하는 양식
  • 디바이스를 시각화하는 보기입니다.

스마트 빌딩 게이트웨이 디바이스 템플릿에 대한 기본 보기 만드는 방법은 다음과 같습니다.

  1. 스마트 빌딩 게이트웨이 디바이스 템플릿에서 보기를 선택합니다.

  2. 기본 보기 생성 타일을 선택하고, 모든 옵션을 선택합니다.

  3. 기본 대시보드 보기 생성을 선택합니다.

디바이스 템플릿 게시

시뮬레이션된 게이트웨이 디바이스를 만들거나 실제 게이트웨이 디바이스를 연결하려면 먼저 디바이스 템플릿을 게시해야 합니다.

게이트웨이 디바이스 템플릿을 게시하는 방법은 다음과 같습니다.

  1. 디바이스 템플릿 페이지에서 스마트 빌딩 게이트웨이 디바이스 템플릿을 선택합니다.

  2. 게시를 선택합니다.

  3. 디바이스 템플릿 게시 대화 상자에서 게시를 선택합니다.

디바이스 템플릿이 게시되면 해당 템플릿이 디바이스 페이지 및 운영자에게 표시됩니다. 운영자는 템플릿을 사용하여 디바이스 인스턴스를 만들거나 규칙 및 모니터링을 설정할 수 있습니다. 게시된 템플릿을 편집하면 애플리케이션의 동작에 영향을 줄 수 있습니다.

디바이스 템플릿을 게시한 후 편집하는 방법에 대해 자세히 알아보려면 기존 디바이스 템플릿 편집을 참조하세요.

시뮬레이션된 디바이스 만들기

이 자습서에서는 시뮬레이션된 다운스트림 디바이스 및 시뮬레이션된 게이트웨이 디바이스를 사용합니다.

시뮬레이션된 게이트웨이 디바이스를 만드는 방법은 다음과 같습니다.

  1. 디바이스 페이지의 디바이스 템플릿 목록에서 스마트 빌딩 게이트웨이 디바이스를 선택합니다.

  2. + 새로 만들기를 선택하여 새 디바이스 추가를 시작합니다.

  3. 생성된 디바이스 ID디바이스 이름을 그대로 유지합니다. 시뮬레이션됨 스위치가 인지 확인합니다. 만들기를 실행합니다.

시뮬레이션된 다운스트림 디바이스를 만드는 방법은 다음과 같습니다.

  1. 디바이스 페이지의 디바이스 템플릿 목록에서 RS40 선점 센서를 선택합니다.

  2. + 새로 만들기를 선택하여 새 디바이스 추가를 시작합니다.

  3. 생성된 디바이스 ID디바이스 이름을 그대로 유지합니다. 시뮬레이션됨 스위치가 인지 확인합니다. 만들기를 실행합니다.

  4. 디바이스 페이지의 디바이스 템플릿 목록에서 Hobo MX-100을 선택합니다.

  5. + 새로 만들기를 선택하여 새 디바이스 추가를 시작합니다.

  6. 생성된 디바이스 ID디바이스 이름을 그대로 유지합니다. 시뮬레이션됨 스위치가 인지 확인합니다. 만들기를 실행합니다.

시뮬레이션된 디바이스를 보여 주는 스크린샷.

게이트웨이 디바이스에 다운스트림 디바이스 관계 추가

애플리케이션에 시뮬레이션된 디바이스가 생겼으므로, 다운스트림 디바이스와 게이트웨이 디바이스 간의 관계를 만들 수 있습니다.

  1. 디바이스 페이지의 디바이스 템플릿 목록에서 Hobo MX-100을 선택한 다음 시뮬레이션된 Hobo MX-100 디바이스를 선택합니다.

  2. 게이트웨이에 연결을 선택합니다.

  3. 게이트웨이에 연결 대화 상자에서 스마트 빌딩 게이트웨이 디바이스 템플릿을 선택한 다음, 이전에 만든 시뮬레이션된 인스턴스를 선택합니다.

  4. 첨부를 선택합니다.

  5. 디바이스 페이지의 디바이스 템플릿 목록에서 RS40 선점 센서를 선택한 다음, 시뮬레이션된 RS40 선점 센서 디바이스를 선택합니다.

  6. 게이트웨이에 연결을 선택합니다.

  7. 게이트웨이에 연결 대화 상자에서 스마트 빌딩 게이트웨이 디바이스 템플릿을 선택한 다음, 이전에 만든 시뮬레이션된 인스턴스를 선택합니다.

  8. 첨부를 선택합니다.

시뮬레이션된 다운스트림 디바이스가 이제 시뮬레이션된 게이트웨이 디바이스에 연결되었습니다. 게이트웨이 디바이스의 다운스트림 디바이스 보기로 이동하면 관련 다운스트림 디바이스를 볼 수 있습니다.

게이트웨이에 연결된 디바이스를 보여 주는 스크린샷.

실제 다운스트림 디바이스 연결

Azure IoT Central 애플리케이션에 클라이언트 애플리케이션 만들기 및 연결 자습서에서 샘플 코드는 디바이스가 보내는 프로비저닝 페이로드에 디바이스 템플릿의 모델 ID를 포함하는 방법을 보여줍니다.

다운스트림 디바이스를 연결할 때 게이트웨이 디바이스의 ID를 포함하도록 프로비저닝 페이로드를 수정할 수 있습니다. 모델 ID를 통해 IoT Central에서 디바이스를 올바른 다운스트림 디바이스 템플릿과 연결할 수 있습니다. 게이트웨이 ID를 통해 IoT Central에서 다운스트림 디바이스와 해당 게이트웨이 간의 관계를 설정할 수 있습니다. 이 경우 디바이스에서 보내는 프로비저닝 페이로드는 다음 JSON과 같습니다.

{
  "modelId": "dtmi:rigado:HoboMX100;2",
  "iotcGateway":{
    "iotcGatewayId": "gateway-device-001"
  }
}

게이트웨이는 다운스트림 디바이스를 등록 및 프로비전하고 다음과 같이 다운스트림 디바이스를 게이트웨이와 연결할 수 있습니다.

var crypto = require('crypto');


var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
var SymmetricKeySecurityClient = require('azure-iot-security-symmetric-key').SymmetricKeySecurityClient;
var ProvisioningDeviceClient = require('azure-iot-provisioning-device').ProvisioningDeviceClient;

var provisioningHost = "global.azure-devices-provisioning.net";
var idScope = "<The ID scope from your SAS group enrollment in IoT Central>";
var groupSymmetricKey = "<The primary key from the SAS group enrollment>";
var registrationId = "<The device ID for the downstream device you're creating>";
var modelId = "<The model you're downstream device should use>";
var gatewayId = "<The device ID of your gateway device>";

// Calculate the device key from the group enrollment key
function computeDerivedSymmetricKey(deviceId, masterKey) {
    return crypto.createHmac('SHA256', Buffer.from(masterKey, 'base64'))
        .update(deviceId, 'utf8')
        .digest('base64');
}

var symmetricKey = computeDerivedSymmetricKey(registrationId, groupSymmetricKey);

var provisioningSecurityClient = new SymmetricKeySecurityClient(registrationId, symmetricKey);

var provisioningClient = ProvisioningDeviceClient.create(provisioningHost, idScope, new ProvisioningTransport(), provisioningSecurityClient);

// Use the DPS payload to:
// - specify the device capability model to use.
// - associate the device with a gateway.
var provisioningPayload = {modelId: modelId, iotcGateway: { iotcGatewayId: gatewayId}}

provisioningClient.setProvisioningPayload(provisioningPayload);

provisioningClient.register(function(err, result) {
  if (err) {
    console.log("Error registering device: " + err);
  } else {
    console.log('The registration status is: ' + result.status)
   }
});

리소스 정리

더 이상 IoT Central 빠른 시작 또는 자습서를 완료할 계획이 없는 경우 IoT Central 애플리케이션을 삭제할 수 있습니다.

  1. IoT Central 애플리케이션에서 애플리케이션 > 관리로 이동합니다.
  2. 삭제를 클릭한 다음, 작업을 확인합니다.

다음 단계

이제 다음 방법을 알아볼 수 있습니다.