디바이스 섀도우로 디바이스가 오프라인 상태일 때 디바이스 상태 유지 - AWS IoT Core

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

디바이스 섀도우로 디바이스가 오프라인 상태일 때 디바이스 상태 유지

이 자습서에서는 AWS IoT 디바이스 섀도우 서비스를 사용하여 디바이스의 상태 정보를 저장하고 업데이트하는 방법을 보여줍니다. JSON 문서인 섀도우 문서는 디바이스, 로컬 앱 또는 서비스에서 게시한 메시지를 기반으로 디바이스 상태의 변화를 보여줍니다. 이 자습서에서 섀도우 문서는 전구의 색상 변화를 보여줍니다. 이 자습서에서는 디바이스가 인터넷에서 연결이 끊어진 경우에도 섀도우가 이 정보를 저장하는 방법과 디바이스가 다시 온라인 상태가 되어 이 정보를 요청할 때 디바이스에 최신 상태 정보를 다시 전달하는 방법도 보여줍니다.

생성하는 데 필요한 AWS IoT 리소스 및 필요한 하드웨어 설정부터 시작하여 여기에 표시된 순서대로 이 자습서를 시도하는 것이 좋습니다. 그러면 개념을 점진적으로 배우는 데도 도움이 됩니다. 이 자습서에서는 AWS IoT와 함께 사용할 Raspberry Pi 디바이스를 구성하고 연결하는 방법을 보여줍니다. 필요한 하드웨어가 없는 경우 자습서를 사용자의 디바이스에 맞게 적용하거나 Amazon EC2로 가상 디바이스를 생성하여 자습서를 따라할 수 있습니다.

자습서 시나리오 개요

이 자습서의 시나리오는 전구의 색상을 변경하고 해당 데이터를 예약된 섀도우 주제에 게시하는 로컬 앱 또는 서비스입니다. 이 자습서는 대화형 시작하기 자습서에 설명된 디바이스 섀도우 기능과 유사하며 Raspberry Pi 디바이스에서 구현됩니다. 이 섹션의 자습서에서는 단일 클래식 섀도우에 초점을 맞추면서 명명된 섀도우 또는 여러 디바이스를 수용할 수 있는 방법을 보여줍니다.

다음 자습서는 AWS IoT 디바이스 섀도우 서비스를 사용하는 방법을 배우는 데 도움이 됩니다.

AWS IoT 디바이스 섀도우 개요

디바이스 섀도우는 AWS IoT 레지스트리에서 생성한 사물 리소스에 의해 관리되는 디바이스의 영구적인 가상 표현입니다. 섀도우 문서는 디바이스의 현재 상태 정보를 저장하고 검색하는 데 사용되는 JSON 또는 JavaScript 표기법 문서입니다. 디바이스가 인터넷에 연결되어 있는지 여부에 관계없이 섀도우를 사용하여 MQTT 주제 또는 HTTP REST API를 통해 디바이스의 상태를 가져오고 설정할 수 있습니다.

섀도우 문서에는 디바이스 상태의 이러한 측면을 설명하는 state 속성이 포함되어 있습니다.

  • desired: 앱은 desired 객체를 업데이트하여 디바이스 속성에 대해 원하는 상태를 지정합니다.

  • reported: 디바이스는 reported 객체에 현재 상태를 보고합니다.

  • delta: AWS IoT는 delta 객체에서 원하는 상태와 보고된 상태 간의 차이를 보고합니다.

다음은 섀도우 문서의 예입니다.

{ "state": { "desired": { "color": "green" }, "reported": { "color": "blue" }, "delta": { "color": "green" } } }

디바이스의 섀도우 문서를 업데이트하려면 예약된 MQTT 주제, HTTP로 GET, UPDATEDELETE 작업을 지원하는 디바이스 섀도우 REST APIAWS IoT CLI를 사용합니다.

이전 예에서 desired 색상을 yellow로 변경하려 한다고 가정합니다. 이렇게 하려면 UpdateThingShadow API에 요청을 전송하거나 업데이트 주제 $aws/things/THING_NAME/shadow/update에 메시지를 게시하세요.

{ "state": { "desired": { "color": yellow } } }

업데이트는 요청에 지정된 필드에만 영향을 미칩니다. 디바이스 섀도우를 성공적으로 업데이트한 후 AWS IoT는 새로운 desired 상태를 delta 주제($aws/things/THING_NAME/shadow/delta)에 게시합니다. 이 경우 섀도우 문서는 다음과 같습니다.

{ "state": { "desired": { "color": yellow }, "reported": { "color": green }, "delta": { "color": yellow } } }

그런 다음 새 상태는 다음 JSON 메시지와 함께 Update 주제 $aws/things/THING_NAME/shadow/update를 사용하여 AWS IoT 디바이스 섀도우에 보고됩니다.

{ "state": { "reported": { "color": yellow } } }

현재 상태 정보를 얻으려면 GetThingShadow API에 요청을 전송하거나 Get 주제 $aws/things/THING_NAME/shadow/get에 MQTT 메시지를 게시하세요.

디바이스 섀도우 서비스 사용에 대한 자세한 내용은 AWS IoT Device Shadow 서비스 단원을 참조하세요.

디바이스, 앱 및 서비스에서 디바이스 섀도우 사용에 대한 자세한 내용은 디바이스에서 섀도우 사용앱 및 서비스에서 섀도우 사용 단원을 참조하세요.

AWS IoT 섀도우와 상호 작용하는 방법에 대한 자세한 내용은 섀도우와의 상호 작용 단원을 참조하세요.

MQTT 예약 주제 및 HTTP REST API에 대한 자세한 내용은 디바이스 섀도우 MQTT 주제디바이스 섀도우 REST API 단원을 참조하세요.