로컬 장치 섀도우를 다음과 동기화합니다. AWS IoT Core - AWS IoT Greengrass

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

로컬 장치 섀도우를 다음과 동기화합니다. AWS IoT Core

섀도우 관리자 구성 요소를 사용하면 로컬 장치 섀도우 상태를 AWS IoT Greengrass 동기화할 수 AWS IoT Core 있습니다. 구성 매개변수를 포함하도록 섀도우 관리자 구성 요소의 synchronization 구성을 수정하고 장치의 AWS IoT 사물 이름과 동기화할 섀도우를 지정해야 합니다.

섀도우 관리자를 구성하여 섀도우를 동기화하면 로컬 섀도우 문서에서 발생하든 클라우드 섀도우 문서에서 발생하든 관계없이 지정된 섀도우에 대한 모든 상태 변경이 동기화됩니다.

또한 섀도우 관리자 구성 요소가 섀도우를 실시간으로 동기화할지 또는 주기적으로 동기화하는지도 지정할 수 있습니다. 기본적으로 섀도우 관리자 구성 요소는 실시간으로 섀도우를 동기화하므로 코어 디바이스는 업데이트가 AWS IoT Core 발생할 때마다 섀도우 업데이트를 주고 받습니다. 주기적인 간격을 구성하여 대역폭 사용량과 요금을 줄일 수 있습니다.

사전 조건

로컬 섀도우를 동기화하려면 다음 AWS IoT Core 섀도우 AWS IoT 정책 작업을 허용하도록 Greengrass 코어 디바이스의 정책을 구성해야 합니다. AWS IoT Core

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

자세한 내용은 다음 자료를 참조하세요.

섀도우 관리자 구성 요소 구성

섀도우 매니저에는 로컬 섀도우 문서의 섀도우 상태 정보를 클라우드 섀도우 문서에 동기화하기 위한 섀도우 이름 매핑 목록이 필요합니다. AWS IoT Core

섀도우 상태를 동기화하려면 aws.greengrass.ShadowManager 구성 요소가 포함된 배포를 만들고 배포의 섀도우 관리자 구성의 synchronize 구성 매개 변수에 동기화할 섀도우를 지정합니다.

참고

코어 디바이스가 클라이언트 디바이스 섀도우와 상호 작용할 수 있도록 하려면 MQTT 브리지 구성 요소도 구성하고 배포해야 합니다. 자세한 내용은 섀도우 관리자가 클라이언트 장치와 통신하도록 활성화를 참조하십시오.

다음 예제 구성 업데이트는 섀도우 관리자 구성 요소에 다음 섀도우를 다음과 동기화하도록 지시합니다. AWS IoT Core

  • 코어 디바이스의 클래식 섀도우

  • 코어 MyCoreShadow 디바이스의 이름

  • IoT라는 이름의 클래식한 그림자 MyDevice2

  • 이름이 지정된 MyShadowA 섀도우와 MyShadowB IoT 사물의 이름 MyDevice1

이 구성 업데이트는 섀도우를 AWS IoT Core 실시간으로 동기화하도록 지정합니다. 섀도우 관리자 v2.1.0 이상을 사용하는 경우 섀도우를 주기적으로 동기화하도록 섀도우 관리자 구성 요소를 구성할 수 있습니다. 이 기능을 구성하려면 동기화 전략을 로 변경하고 periodic 간격을 초 delay 단위로 지정하십시오. 자세한 내용은 섀도우 관리자 구성 요소의 전략 구성 매개 변수를 참조하십시오.

이 구성 업데이트는 섀도우를 코어 디바이스 간에 AWS IoT Core 양방향으로 동기화하도록 지정합니다. 섀도우 관리자 v2.2.0 이상을 사용하는 경우 섀도우를 한 방향으로만 동기화하도록 섀도우 관리자 구성 요소를 구성할 수 있습니다. 이 기능을 direction 구성하려면 deviceToCloud 동기화를 또는 로 변경하십시오. cloudToDevice 자세한 내용은 섀도우 매니저 컴포넌트의 방향 구성 파라미터를 참조하십시오.

{ "strategy": { "type": "realTime" }, "synchronize": { "coreThing": { "classic": true, "namedShadows": [ "MyCoreShadow" ] }, "shadowDocuments": [ { "thingName": "MyDevice1", "classic": false, "namedShadows": [ "MyShadowA", "MyShadowB" ] }, { "thingName": "MyDevice2", "classic": true, "namedShadows": [ ] } ], "direction": "betweenDeviceAndCloud" } }

로컬 섀도우 동기화

Greengrass 코어 디바이스가 AWS IoT 클라우드에 연결되면 섀도우 관리자는 구성 요소 구성에서 지정한 섀도우에 대해 다음 작업을 수행합니다. 동작은 지정한 섀도우 동기화 방향 구성 옵션에 따라 달라집니다. 기본적으로 섀도우 관리자는 이 betweenDeviceAndCloud 옵션을 사용하여 섀도우를 양방향으로 동기화합니다. Shadow Manager v2.2.0 이상을 사용하는 경우 섀도우를 한 방향 (또는) 으로만 동기화하도록 코어 디바이스를 구성할 수 cloudToDevice 있습니다. deviceToCloud

  • 섀도우 동기화 방향 구성이 betweenDeviceAndCloud 또는 cloudToDevice 인 경우 섀도우 관리자는 의 클라우드 섀도우 문서에서 보고된 상태 정보를 검색합니다. AWS IoT Core 그런 다음 로컬에 저장된 섀도우 문서를 업데이트하여 장치 상태를 동기화합니다.

  • 섀도 동기화 방향 구성이 betweenDeviceAndCloud 또는 deviceToCloud 인 경우 섀도우 관리자는 디바이스의 현재 상태를 클라우드 섀도 문서에 게시합니다.

섀도우 병합 충돌 동작

코어 디바이스의 인터넷 연결이 끊긴 경우와 같이 일부 경우에는 섀도우 관리자가 변경 내용을 동기화하기 전에 로컬 섀도우 서비스와 AWS IoT 클라우드의 섀도우가 변경될 수 있습니다. 따라서 로컬 섀도우 서비스와 클라우드 간에 원하는 상태와 보고되는 상태가 다릅니다. AWS IoT

섀도우 관리자가 섀도우를 동기화할 때 다음 동작에 따라 변경 내용이 병합됩니다.

  • v2.2.0 이전 버전의 섀도우 관리자를 사용하거나 betweenDeviceAndCloud 섀도우 동기화 방향을 지정하는 경우 다음 동작이 적용됩니다.

    • 섀도우가 원하는 상태에서 병합 충돌이 발생하면 섀도우 관리자는 로컬 섀도우 문서의 충돌 부분을 클라우드의 값으로 덮어씁니다. AWS IoT

    • 섀도우가 보고된 상태에서 병합 충돌이 발생하면 섀도우 관리자는 AWS IoT 클라우드에 있는 섀도우의 충돌 부분을 로컬 섀도우 문서의 값으로 덮어씁니다.

  • deviceToCloud섀도우 동기화 방향을 지정하면 섀도우 관리자가 AWS IoT 클라우드에 있는 섀도우의 충돌 부분을 로컬 섀도우 문서의 값으로 덮어씁니다.

  • cloudToDevice섀도우 동기화 방향을 지정하면 섀도우 관리자가 로컬 섀도우 문서의 충돌 부분을 클라우드의 값으로 덮어씁니다. AWS IoT