<개요>
- 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(장치쌍)이라고 부릅니다.
공유변수의 형태로 이해하면 됩니다. 디바이스와 서버가 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
일반적 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/
'Azure Architecture' 카테고리의 다른 글
Azure Function App 사용시 주의사항 (0) | 2019.09.26 |
---|---|
Azure Resource Template을 통한 Function App생성시 주의점 (0) | 2019.09.25 |
Azure Cosmos사용시 주의점 (0) | 2019.09.09 |
Azure를 이용한 IoT Device 데이터 수집/분석 (0) | 2019.05.31 |