기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
클라이언트 디바이스 섀도와 상호 작용 및 동기화
섀도 관리자 구성 요소를 사용하여 클라이언트 디바이스 섀도를 포함한 로컬 섀도를 관리할 수 있습니다. 섀도 관리자를 사용하여 다음을 수행할 수 있습니다.
-
Greengrass 구성 요소의 클라이언트 디바이스 섀도와 상호 작용합니다.
-
클라이언트 디바이스 섀도우를와 동기화합니다 AWS IoT Core.
참고
섀도 관리자 구성 요소는 AWS IoT Core 기본적으로 섀도우를와 동기화하지 않습니다. 동기화할 클라이언트 디바이스 섀도를 지정하려면 섀도 관리자 구성 요소를 구성해야 합니다.
사전 조건
클라이언트 디바이스 섀도와 상호 작용하고 클라이언트 디바이스 섀도와 동기화하려면 코어 디바이스 AWS IoT Core가 다음 요구 사항을 충족해야 합니다.
-
코어 디바이스는 클라이언트 디바이스 지원을 위한 Greengrass 구성 요소 외에도 다음 구성 요소를 실행해야 합니다.
-
Greengrass nucleus v2.6.0 이상
-
섀도 관리자 v2.2.0 이상
-
MQTT 브리지 v2.2.0 이상
-
-
클라이언트 디바이스 인증 구성 요소는 클라이언트 디바이스가 디바이스 섀도 주제에서 통신할 수 있도록 구성해야 합니다.
섀도 관리자가 클라이언트 디바이스와 통신할 수 있도록 설정
기본적으로 섀도 관리자 구성 요소는 클라이언트 디바이스 섀도를 관리하지 않습니다. 이 기능을 활성화하려면 클라이언트 디바이스와 섀도 관리자 구성 요소 간에 MQTT 메시지를 전달해야 합니다. 클라이언트 디바이스는 MQTT 메시지를 사용하여 디바이스 섀도 업데이트를 수신하고 전송합니다. 섀도 관리자 구성 요소는 로컬 Greengrass 게시/구독 인터페이스를 구독하므로 디바이스 섀도 주제에 대한 MQTT 메시지를 전달하도록 MQTT 브리지 구성 요소를 구성할 수 있습니다.
MQTT 브리지 구성 요소는 각각 메시지 소스와 메시지 대상을 지정하는 주제 매핑의 목록을 사용합니다. 섀도 관리자 구성 요소가 클라이언트 디바이스 섀도를 관리할 수 있도록 하려면 MQTT 브리지 구성 요소를 배포하고 클라이언트 디바이스 섀도에 대한 섀도 주제를 지정합니다. 로컬 MQTT와 로컬 게시/구독 간에 양방향으로 메시지를 전달하도록 브리지를 구성해야 합니다.
코어 디바이스 또는 코어 디바이스 그룹에 MQTT 브리지 구성 요소를 배포하려면 aws.greengrass.clientdevices.mqtt.Bridge
구성 요소가 포함된 배포를 생성합니다. 배포의 MQTT 브리지 구성 요소 구성에서 주제 매핑(mqttTopicMapping
)을 지정합니다.
다음 예제를 사용하여 클라이언트 디바이스와 섀도 관리자 구성 요소 간의 통신을 활성화하도록 MQTT 브리지 구성 요소를 구성합니다.
참고
AWS IoT Greengrass 콘솔에서 이러한 구성 예제를 사용할 수 있습니다. AWS IoT Greengrass API를 사용하는 경우 merge
구성 업데이트에는 직렬화된 JSON 객체가 필요하므로 다음 JSON 객체를 문자열로 직렬화해야 합니다. 자세한 내용은 구성 요소 구성 업데이트 단원을 참조하십시오.
예: 모든 클라이언트 디바이스 섀도 관리
다음 MQTT 브리지 구성 예제를 사용하면 섀도 관리자가 모든 클라이언트 디바이스에 대한 모든 섀도를 관리할 수 있습니다.
{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/#", "source": "Pubsub", "target": "LocalMqtt" } } }
예: 클라이언트 디바이스에 대한 섀도 관리
다음 MQTT 브리지 구성 예제를 사용하면 섀도 관리자가 MyClientDevice
라는 이름의 클라이언트 디바이스에 대한 모든 섀도를 관리할 수 있습니다.
{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/MyClientDevice/shadow/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/MyClientDevice/shadow/#", "source": "Pubsub", "target": "LocalMqtt" } } }
예: 모든 클라이언트 디바이스에 대해 이름이 지정된 섀도 관리
다음 MQTT 브리지 구성 예제를 사용하면 섀도 관리자가 모든 클라이언트 디바이스에 대해 DeviceConfiguration
이라는 이름의 섀도를 관리할 수 있습니다.
{ "mqttTopicMapping": { "ShadowsLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#", "source": "LocalMqtt", "target": "Pubsub" }, "ShadowsPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/name/DeviceConfiguration/#", "source": "Pubsub", "target": "LocalMqtt" } } }
예: 모든 클라이언트 디바이스의 이름이 지정되지 않은 섀도 관리
다음 MQTT 브리지 구성 예제를 사용하면 섀도 관리자가 모든 클라이언트 디바이스에 대해 이름이 지정되지 않은 섀도를 관리할 수 있지만 이름이 지정된 섀도는 관리할 수 없습니다.
{ "mqttTopicMapping": { "DeleteShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/delete", "source": "LocalMqtt", "target": "Pubsub" }, "DeleteShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/delete/#", "source": "Pubsub", "target": "LocalMqtt" }, "GetShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/get", "source": "LocalMqtt", "target": "Pubsub" }, "GetShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/get/#", "source": "Pubsub", "target": "LocalMqtt" }, "UpdateShadowLocalMqttToPubsub": { "topic": "$aws/things/+/shadow/update", "source": "LocalMqtt", "target": "Pubsub" }, "UpdateShadowPubsubToLocalMqtt": { "topic": "$aws/things/+/shadow/update/#", "source": "Pubsub", "target": "LocalMqtt" } } }
구성 요소의 클라이언트 디바이스 섀도와 상호 작용
로컬 섀도 서비스를 사용하여 클라이언트 디바이스의 로컬 섀도 문서를 읽고 수정하는 사용자 지정 구성 요소를 개발할 수 있습니다. 자세한 내용은 구성 요소에서 섀도와 연동 단원을 참조하십시오.
클라이언트 디바이스 섀도를 AWS IoT Core와 동기화
로컬 클라이언트 디바이스 섀도우 상태를 동기화하도록 섀도 관리자 구성 요소를 구성할 수 있습니다 AWS IoT Core. 자세한 내용은 로컬 디바이스 섀도우를와 동기화 AWS IoT Core 단원을 참조하십시오.