기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
디바이스 섀도우로 디바이스가 오프라인 상태일 때 디바이스 상태 유지
이 자습서에서는 AWS IoT 디바이스 섀도우 서비스를 사용하여 디바이스의 상태 정보를 저장하고 업데이트하는 방법을 보여줍니다. JSON 문서인 섀도우 문서는 디바이스, 로컬 앱 또는 서비스에서 게시한 메시지를 기반으로 디바이스 상태의 변화를 보여줍니다. 이 자습서에서 섀도우 문서는 전구의 색상 변화를 보여줍니다. 이 자습서에서는 디바이스가 인터넷에서 연결이 끊어진 경우에도 섀도우가 이 정보를 저장하는 방법과 디바이스가 다시 온라인 상태가 되어 이 정보를 요청할 때 디바이스에 최신 상태 정보를 다시 전달하는 방법도 보여줍니다.
생성하는 데 필요한 AWS IoT 리소스 및 필요한 하드웨어 설정부터 시작하여 여기에 표시된 순서대로 이 자습서를 시도하는 것이 좋습니다. 그러면 개념을 점진적으로 배우는 데도 도움이 됩니다. 이 자습서에서는 AWS IoT와 함께 사용할 Raspberry Pi 디바이스를 구성하고 연결하는 방법을 보여줍니다. 필요한 하드웨어가 없는 경우 자습서를 사용자의 디바이스에 맞게 적용하거나 Amazon EC2로 가상 디바이스를 생성하여 자습서를 따라할 수 있습니다.
자습서 시나리오 개요
이 자습서의 시나리오는 전구의 색상을 변경하고 해당 데이터를 예약된 섀도우 주제에 게시하는 로컬 앱 또는 서비스입니다. 이 자습서는 대화형 시작하기 자습서에 설명된 디바이스 섀도우 기능과 유사하며 Raspberry Pi 디바이스에서 구현됩니다. 이 섹션의 자습서에서는 단일 클래식 섀도우에 초점을 맞추면서 명명된 섀도우 또는 여러 디바이스를 수용할 수 있는 방법을 보여줍니다.
다음 자습서는 AWS IoT 디바이스 섀도우 서비스를 사용하는 방법을 배우는 데 도움이 됩니다.
-
튜토리얼: 섀도우 애플리케이션 실행을 위해 Raspberry Pi 준비
이 자습서에서는 AWS IoT와 연결하기 위해 Raspberry Pi 디바이스를 설정하는 방법을 보여줍니다. 또한 AWS IoT 정책 문서와 사물 리소스를 만들고 인증서를 다운로드한 다음 정책을 해당 사물 리소스에 연결합니다. 이 자습서는 완료하는 데 약 30분 소요됩니다.
-
자습서: 디바이스 SDK 설치 및 디바이스 섀도우용 샘플 애플리케이션 실행
이 자습서에서는 필요한 도구, 소프트웨어 및 AWS IoT Device SDK for Python을 설치한 다음 샘플 섀도우 애플리케이션을 실행하는 방법을 보여줍니다. 이 자습서는 Raspberry Pi 또는 다른 디바이스 연결에 제시된 개념을 기반으로 하며 완료하는 데 20분이 소요됩니다.
-
자습서: 샘플 앱 및 MQTT 테스트 클라이언트를 사용하여 디바이스 섀도우와 상호 작용
이 자습서에서는
shadow.py
샘플 앱 및 AWS IoT 콘솔을 사용하여 AWS IoT 디바이스 섀도우와 전구 간의 상호 작용을 관찰하는 방법을 보여줍니다. 이 자습서에서는 디바이스 섀도우의 예약된 주제에 MQTT 메시지를 전송하는 방법도 보여줍니다. 이 자습서는 완료하는 데 약 45분이 소요됩니다.
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
, UPDATE
및 DELETE
작업을 지원하는 디바이스 섀도우 REST API 및 AWS 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에 대한 자세한 내용은 Device Shadow MQTT 주제 및 디바이스 섀도우 REST API 단원을 참조하세요.