쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

디바이스 섀도우 서비스 통신 시뮬레이션

포커스 모드
디바이스 섀도우 서비스 통신 시뮬레이션 - AWS IoT Core

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

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

이 주제에서는 디바이스 섀도우 서비스가 중개자 역할을 하는 방법을 보여 주며 디바이스 및 앱에서 섀도우를 사용하여 디바이스 상태를 업데이트, 저장 및 검색할 수 있도록 합니다.

이 주제에 설명된 상호 작용을 시연하고 자세히 살펴보려면 AWS 계정 및를 실행할 수 있는 시스템이 필요합니다 AWS CLI. 이러한 계정과 시스템이 없으면 코드 예제에서 상호 작용을 볼 수 있습니다.

이 예제에서 AWS IoT 콘솔은 디바이스를 나타냅니다. 는 섀도우를 통해 디바이스에 액세스하는 앱 또는 서비스를 AWS CLI 나타냅니다. AWS CLI 인터페이스는 앱이 통신에 사용할 수 API 있는와 매우 유사합니다 AWS IoT. 이 예제의 디바이스는 스마트 전구이며 앱은 전구의 상태를 표시하고 전구의 상태를 변경할 수 있습니다.

시뮬레이션 설정

이 절차에서는 디바이스를 시뮬레이션하는 AWS IoT 콘솔 및 앱을 시뮬레이션하는 명령줄 창을 열어 시뮬레이션을 초기화합니다.

시뮬레이션 환경을 설정하려면
  1. 이 주제의 예제를 직접 실행 AWS 계정 하려면이 필요합니다. 가 없는 경우에 설명된 대로를 AWS 계정생성합니다설정 AWS 계정.

  2. AWS IoT 콘솔을 열고 왼쪽 메뉴에서 테스트를 선택하여 MQTT 클라이언트를 엽니다.

  3. 다른 창을 열고 AWS CLI 가 설치된 시스템에서 터미널 창을 엽니다.

두 개의 창이 열려 있어야 합니다. 하나는 테스트 페이지에 AWS IoT 콘솔이 있고 다른 하나는 명령줄 프롬프트가 있습니다.

디바이스 초기화

이 시뮬레이션에서는 이름이 인 사물 객체mySimulatedThing와 이름이 인 섀도우 simShadow1로 작업합니다.

사물 객체 및 해당 IoT 정책 생성

사물을 생성하려면, AWS IoT 콘솔에서:

  1. 관리(Manage)를 선택한 후 사물(Things)을 선택합니다.

  2. 사물이 나열된 경우 생성 버튼을 클릭합니다. 그렇지 않으면 단일 사물 등록을 클릭하여 단일 AWS IoT 사물을 생성합니다.

  3. 이름 mySimulatedThing을 입력하고 다른 설정은 기본값으로 그대로 둔 채 다음(Next)을 클릭합니다.

  4. 원 클릭 인증서 생성을 사용하여 AWS IoT에 대한 디바이스 연결을 인증할 인증서를 생성합니다. 인증서를 활성화하려면 활성화(Activate)를 클릭합니다.

  5. 디바이스에 MQTT 예약된 주제를 게시하고 구독할 수 My_IoT_Policy 있는 권한을 부여하는 정책을 연결할 수 있습니다. AWS IoT 사물을 생성하는 방법과이 정책을 생성하는 방법에 대한 자세한 단계는 섹션을 참조하세요사물 객체 만들기.

사물 객체에 대한 명명된 섀도우 생성

아래에 설명된 대로 주제 $aws/things/mySimulatedThing/shadow/name/simShadow1/update에 업데이트 요청을 게시하여 사물에 대한 명명된 섀도우를 생성할 수 있습니다.

또는 명명된 섀도를 생성하려면:

  1. AWS IoT 콘솔의 표시된 사물 목록에서 사물 객체를 선택한 다음 섀도우(Shadows)를 선택합니다.

  2. 섀도우 추가(Add a shadow)를 선택하고 이름 simShadow1을 입력한 다음 생성(Create)을 선택하여 명명된 섀도우를 추가합니다.

예약 MQTT 주제 구독 및 게시

콘솔에서 예약된 MQTT 섀도우 주제를 구독합니다. 이러한 주제는 get, updatedelete 작업에 대한 응답으로, 디바이스에서 작업을 게시한 후 응답을 받을 수 있습니다.

MQTT 클라이언트에서 MQTT 주제를 구독하려면
  1. MQTT 클라이언트에서 주제 구독을 선택합니다.

  2. 구독할 get, updatedelete 주제를 입력합니다. 다음 목록에서 한 번에 하나의 주제를 복사하여 주제 필터(Topic filter) 필드에 붙여넣고 구독(Subscribe)을 클릭합니다. 구독(Subscriptions) 아래에 주제가 표시되어야 합니다.

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/delete/accepted

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/delete/rejected

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/get/accepted

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/get/rejected

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/accepted

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/rejected

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/delta

    • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/documents

    이 시점에서 시뮬레이션된 디바이스는 AWS IoT에서 게시하는 주제를 수신할 준비가 되었습니다.

MQTT 클라이언트의 MQTT 주제에 게시하려면

디바이스가 자체적으로 초기화되고 응답 주제를 구독한 후에는 지원하는 섀도우를 쿼리해야 합니다. 이 시뮬레이션은 하나의 섀도우, 즉 , , mySimulatedThing, simShadow1이라는 사물 객체를 지원하는 섀도우만 지원합니다.

MQTT 클라이언트에서 현재 섀도우 상태를 가져오려면
  1. MQTT 클라이언트에서 주제에 게시를 선택합니다.

  2. 게시(Publish) 아래에서, 다음 주제를 입력하고 메시지 본문 창에서 가져올 주제의 입력 위치 아래에 있는 내용을 모두 삭제합니다. 그런 다음 주제에 게시(Publish to topic)를 선택하여 요청을 게시합니다. $aws/things/mySimulatedThing/shadow/name/simShadow1/get.

    명명된 섀도우 simShadow1을 생성하지 않은 경우, 섀도우가 생성되지 않았으므로 이 예제와 같이 $aws/things/mySimulatedThing/shadow/name/simShadow1/get/rejected 주제에 메시지가 수신되고 code404입니다. 이것을 다음에 생성하겠습니다.

    { "code": 404, "message": "No shadow exists with name: 'simShadow1'" }
디바이스의 현재 상태로 섀도우를 생성하려면
  1. MQTT 클라이언트에서 주제에 게시를 선택하고이 주제를 입력합니다.

    $aws/things/mySimulatedThing/shadow/name/simShadow1/update
  2. 주제를 입력한 아래의 메시지 본문 창에서이 섀도우 문서를 입력하여 디바이스가 ID와 현재 색상을 RGB 값으로 보고하고 있음을 표시합니다. 게시(Publish)를 선택하여 요청을 게시합니다.

    { "state": { "reported": { "ID": "SmartLamp21", "ColorRGB": [ 128, 128, 128 ] } }, "clientToken": "426bfd96-e720-46d3-95cd-014e3ef12bb6" }

다음 주제에서 메시지를 수신한 경우:

  • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/accepted: 섀도우가 생성되고 메시지 본문에 현재 섀도우 문서가 포함되어 있음을 의미합니다.

  • $aws/things/mySimulatedThing/shadow/name/simShadow1/update/rejected: 메시지 본문의 오류를 검토합니다.

  • $aws/things/mySimulatedThing/shadow/name/simShadow1/get/accepted: 섀도우가 이미 존재하며 메시지 본문에 다음 예와 같은 현재 섀도우 상태가 포함됩니다. 이를 통해 디바이스를 설정하거나 섀도우 상태와 일치하는지 확인할 수 있습니다.

    { "state": { "reported": { "ID": "SmartLamp21", "ColorRGB": [ 128, 128, 128 ] } }, "metadata": { "reported": { "ID": { "timestamp": 1591140517 }, "ColorRGB": [ { "timestamp": 1591140517 }, { "timestamp": 1591140517 }, { "timestamp": 1591140517 } ] } }, "version": 3, "timestamp": 1591140517, "clientToken": "426bfd96-e720-46d3-95cd-014e3ef12bb6" }

앱에서 업데이트 전송하기

이 섹션에서는 AWS CLI 를 사용하여 앱이 섀도우와 상호 작용하는 방법을 보여줍니다.

를 사용하여 섀도우의 현재 상태를 가져오려면 AWS CLI

명령줄에서 다음 명령을 입력합니다.

aws iot-data get-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 /dev/stdout

Windows 플랫폼에서는 /dev/stdout 대신 con을 사용할 수 있습니다.

aws iot-data get-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 con

섀도우가 존재하고 현재 상태를 반영하기 위해 디바이스에 의해 초기화되었기 때문에 다음 섀도우 문서를 반환해야 합니다.

{ "state": { "reported": { "ID": "SmartLamp21", "ColorRGB": [ 128, 128, 128 ] } }, "metadata": { "reported": { "ID": { "timestamp": 1591140517 }, "ColorRGB": [ { "timestamp": 1591140517 }, { "timestamp": 1591140517 }, { "timestamp": 1591140517 } ] } }, "version": 3, "timestamp": 1591141111 }

앱은 이 응답을 사용하여 디바이스 상태의 표현을 초기화할 수 있습니다.

앱이 상태를 업데이트하면(예: 최종 사용자가 스마트 전구의 색상을 노란색으로 변경한 경우) 앱에서 update-thing-shadow 명령을 전송합니다. 이 명령은 UpdateThingShadow REST에 해당합니다API.

앱에서 섀도우를 업데이트하려면

명령줄에서 다음 명령을 입력합니다.

AWS CLI v2.x
aws iot-data update-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 \ --cli-binary-format raw-in-base64-out \ --payload '{"state":{"desired":{"ColorRGB":[255,255,0]}},"clientToken":"21b21b21-bfd2-4279-8c65-e2f697ff4fab"}' /dev/stdout
AWS CLI v1.x
aws iot-data update-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 \ --payload '{"state":{"desired":{"ColorRGB":[255,255,0]}},"clientToken":"21b21b21-bfd2-4279-8c65-e2f697ff4fab"}' /dev/stdout
aws iot-data update-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 \ --cli-binary-format raw-in-base64-out \ --payload '{"state":{"desired":{"ColorRGB":[255,255,0]}},"clientToken":"21b21b21-bfd2-4279-8c65-e2f697ff4fab"}' /dev/stdout

성공한 경우 이 명령은 다음 섀도우 문서를 반환해야 합니다.

{ "state": { "desired": { "ColorRGB": [ 255, 255, 0 ] } }, "metadata": { "desired": { "ColorRGB": [ { "timestamp": 1591141596 }, { "timestamp": 1591141596 }, { "timestamp": 1591141596 } ] } }, "version": 4, "timestamp": 1591141596, "clientToken": "21b21b21-bfd2-4279-8c65-e2f697ff4fab" }

디바이스의 업데이트에 응답

AWS 콘솔에서 MQTT 클라이언트로 돌아가면 이전 섹션에서 실행된 업데이트 명령을 반영하도록 AWS IoT 게시된 메시지가 표시됩니다.

MQTT 클라이언트에서 업데이트 메시지를 보려면

MQTT 클라이언트구독 열에서 $aws/things/mySimulatedThing/shadow/name/simShadow1/update/delta를 선택합니다. 주제 이름이 잘리는 경우 커서를 그 위에 잠시 두면 전체 주제 이름이 표시됩니다. 이 주제의 주제 로그에 다음과 유사한 /delta 메시지가 표시되어야 합니다.

{ "version": 4, "timestamp": 1591141596, "state": { "ColorRGB": [ 255, 255, 0 ] }, "metadata": { "ColorRGB": [ { "timestamp": 1591141596 }, { "timestamp": 1591141596 }, { "timestamp": 1591141596 } ] }, "clientToken": "21b21b21-bfd2-4279-8c65-e2f697ff4fab" }

디바이스에서 이 메시지의 콘텐츠를 처리하여 디바이스 상태를 메시지의 desired 상태와 일치하도록 설정합니다.

디바이스가 메시지의 상태와 일치하도록 desired 상태를 업데이트한 후에는 업데이트 메시지를 게시 AWS IoT 하여 새로 보고된 상태를 로 다시 전송해야 합니다. 이 절차는 MQTT 클라이언트에서 이를 시뮬레이션합니다.

디바이스에서 섀도우를 업데이트하려면
  1. MQTT 클라이언트에서 주제에 게시를 선택합니다.

  2. 메시지 본문 창에서 메시지 본문 창 위의 주제 필드에 섀도우의 주제와 /update 작업: $aws/things/mySimulatedThing/shadow/name/simShadow1/update를 입력하고 메시지 본문에 디바이스의 현재 상태를 설명하는 다음과 같은 업데이트된 섀도우 문서를 입력합니다. 게시(Publish)를 클릭하여 업데이트된 디바이스 상태를 게시합니다.

    { "state": { "reported": { "ColorRGB": [255,255,0] } }, "clientToken": "a4dc2227-9213-4c6a-a6a5-053304f60258" }

    메시지가에 의해 성공적으로 수신된 경우이 예제와 같이 섀도우의 현재 상태를 가진 MQTT 클라이언트$aws/things/mySimulatedThing/shadow/name/simShadow1/update/accepted 메시지 로그에 새 응답이 AWS IoT표시됩니다.

    { "state": { "reported": { "ColorRGB": [ 255, 255, 0 ] } }, "metadata": { "reported": { "ColorRGB": [ { "timestamp": 1591142747 }, { "timestamp": 1591142747 }, { "timestamp": 1591142747 } ] } }, "version": 5, "timestamp": 1591142747, "clientToken": "a4dc2227-9213-4c6a-a6a5-053304f60258" }

또한 디바이스의 보고된 상태를 성공적으로 업데이트하면 AWS IoT 가 이전 절차에서 디바이스가 수행한 섀도우 업데이트로 인해 발생한이 메시지 본문과 같은 메시지의 섀도우 상태에 대한 포괄적인 설명을 update/documents 주제에 전송합니다.

{ "previous": { "state": { "desired": { "ColorRGB": [ 255, 255, 0 ] }, "reported": { "ID": "SmartLamp21", "ColorRGB": [ 128, 128, 128 ] } }, "metadata": { "desired": { "ColorRGB": [ { "timestamp": 1591141596 }, { "timestamp": 1591141596 }, { "timestamp": 1591141596 } ] }, "reported": { "ID": { "timestamp": 1591140517 }, "ColorRGB": [ { "timestamp": 1591140517 }, { "timestamp": 1591140517 }, { "timestamp": 1591140517 } ] } }, "version": 4 }, "current": { "state": { "desired": { "ColorRGB": [ 255, 255, 0 ] }, "reported": { "ID": "SmartLamp21", "ColorRGB": [ 255, 255, 0 ] } }, "metadata": { "desired": { "ColorRGB": [ { "timestamp": 1591141596 }, { "timestamp": 1591141596 }, { "timestamp": 1591141596 } ] }, "reported": { "ID": { "timestamp": 1591140517 }, "ColorRGB": [ { "timestamp": 1591142747 }, { "timestamp": 1591142747 }, { "timestamp": 1591142747 } ] } }, "version": 5 }, "timestamp": 1591142747, "clientToken": "a4dc2227-9213-4c6a-a6a5-053304f60258" }

앱에서 업데이트 관찰

이제 앱이 디바이스에서 보고한 대로 섀도우에 현재 상태를 쿼리할 수 있습니다.

를 사용하여 섀도우의 현재 상태를 가져오려면 AWS CLI
  1. 명령줄에서 다음 명령을 입력합니다.

    aws iot-data get-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 /dev/stdout

    Windows 플랫폼에서는 /dev/stdout 대신 con을 사용할 수 있습니다.

    aws iot-data get-thing-shadow --thing-name mySimulatedThing --shadow-name simShadow1 con
  2. 현재 상태를 반영하기 위해 디바이스에 의해 섀도우가 방금 업데이트되었기 때문에 다음 섀도우 문서를 반환해야 합니다.

    { "state": { "desired": { "ColorRGB": [ 255, 255, 0 ] }, "reported": { "ID": "SmartLamp21", "ColorRGB": [ 255, 255, 0 ] } }, "metadata": { "desired": { "ColorRGB": [ { "timestamp": 1591141596 }, { "timestamp": 1591141596 }, { "timestamp": 1591141596 } ] }, "reported": { "ID": { "timestamp": 1591140517 }, "ColorRGB": [ { "timestamp": 1591142747 }, { "timestamp": 1591142747 }, { "timestamp": 1591142747 } ] } }, "version": 5, "timestamp": 1591143269 }

시뮬레이션 이후의 작업

AWS CLI (앱을 나타냄)와 콘솔(디바이스를 나타냄) 사이의 상호 작용을 실험하여 IoT 솔루션을 모델링합니다.

프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.