<개요>

- Azure IoT Hub를 사용하면 Device와 Server를 간편하게 연결하여 D2C (Device to Cloud), C2D (Cloud to Device) 메시지를 쉽게 전달할 수 있습니다.

- 디바이스의 메시지는 일반적으로 json string으로 구성되어 다양한 형태의 레이아웃을 특별한 처리없이 송수신할 수 있습니다.

- 이러한 유형의 데이터를 Telemetry 라고 합니다.

<내용>

- 디바이스와 서버가 주고 받는 데이터는 Telemetry외에도 제어정보가 있습니다.

- Azure IoT Hub 에서는 Device 제어를 위해서 크게 두 가지 방법을 제공하고 있습니다.

 

1. Device Twin

SKT ThingPlug나 AWS IoT 의 경우 Shadow 라고 부릅니다. Azure IoT Hub의 경우 Device Twin(장치쌍)이라고 부릅니다.

Device Twin은 크게 tags, desired properties, reported properties로 이루어집니다.

공유변수의 형태로 이해하면 됩니다. 디바이스와 서버가 Read/Write할 수 있는 영역이기 때문에 디바이스가 꺼져있거나 서버와 연결되어 있지 않는 상황에서도 처리가 가능합니다. (비동기) 

디바이스 On/Off, Firmware Update, 데이터 주기 조정등 다양한 목적으로 사용가능합니다.

 A. Tags

 - 일반적으로 Server Side에서 세팅하는 값으로 Device를 구분하기 위한 값으로 많이 사용됩니다. (e.g. 모델코드, 위치정보)

 - 나중에 나오는 Firmware Update시나리오에서도 Tags값을 target Condition 으로 활용합니다.

 B. Properties

 - Desired : 서버에서 Write하고 디바이스에서 Read 하는 용도로 사용됩니다. 주로 서버에서 의도하는 바를 디바이스에 전달하기 위한 목적으로 사용됩니다.

 - Reported : 디바이스에서 Write하고 서버에서 Read 하는 용도로 사용됩니다. 디바이스가 Desired값을 읽고 그에 따른 행위를 마친뒤에 서버에 Notification을 보내는 용도로 사용합니다.

 

2. Method Invoke

Device 가 데이터를 보내는 중 Direct Method요청을 받으면 바로 동작한다

일반적 RPC 사용과 동일합니다. 요청/응답 구조로 즉각적인 확인이 가능하며 연결이 되어 있지 않은 경우 실패합니다.

따라서 timeout 도 존재하며 exception 도 발생할 수 있습니다.

 

<정리>

- 결국 과거에 Remote 와 통신하기 위해서 사용했던 방식과 크게 다르지 않습니다. SDK만 별도로 존재하며 실제 내부를 살펴보면 지원하는 프로토콜에 약간의 차이만 있을 뿐 원격호출 방식은 거의 동일합니다.

- 각 방식을 비교한 자료는 다음과 같습니다.

Direct methodsTwin's desired propertiesCloud-to-device messages

Scenario Commands that require immediate confirmation, such as turning on a fan. Long-running commands intended to put the device into a certain desired state. For example, set the telemetry send interval to 30 minutes. One-way notifications to the device app.
Data flow Two-way. The device app can respond to the method right away. The solution back end receives the outcome contextually to the request. One-way. The device app receives a notification with the property change. One-way. The device app receives the message
Durability Disconnected devices are not contacted. The solution back end is notified that the device is not connected. Property values are preserved in the device twin. Device will read it at next reconnection. Property values are retrievable with the IoT Hub query language. Messages can be retained by IoT Hub for up to 48 hours.
Targets Single device using deviceId, or multiple devices using jobs. Single device using deviceId, or multiple devices using jobs. Single device by deviceId.
Size Maximum direct method payload size is 128 KB. Maximum desired properties size is 8 KB. Up to 64 KB messages.
Frequency High. For more information, see IoT Hub limits. Medium. For more information, see IoT Hub limits. Low. For more information, see IoT Hub limits.
Protocol Available using MQTT or AMQP. Available using MQTT or AMQP. Available on all protocols. Device must poll when using HTTPS.

 

<참고사이트>

https://docs.microsoft.com/ko-kr/azure/iot-hub/iot-hub-devguide-c2d-guidance

https://docs.microsoft.com/ko-kr/azure/iot-hub/tutorial-firmware-update

https://www.xenonstack.com/blog/iot-analytics-platform/

 

 

+ Recent posts