Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Uso de sombras en aplicaciones y servicios
En esta sección se describe cómo interactúa una aplicación o un servicio con el servicio AWS IoT Device Shadow. En este ejemplo se supone que la aplicación o el servicio solo interactúan con la sombra y, a través de la sombra, con el dispositivo. Este ejemplo no incluye ninguna acción de administración, como la creación o eliminación de sombras.
En este ejemplo, se utiliza el servicio AWS IoT Device Shadow REST API para interactuar con las sombras. A diferencia del ejemplo utilizado enUso de sombras en dispositivos, que utiliza un modelo de publish/subscribe communications model, this example uses the request/response comunicación del RESTAPI. Esto significa que la aplicación o el servicio deben realizar una solicitud antes de poder recibir una respuesta de AWS IoT. Una desventaja de este modelo, sin embargo, es que no admite notificaciones. Si tu aplicación o servicio requieren notificaciones puntuales de los cambios en el estado del dispositivo, considera utilizar MQTT o utilizar WSS protocolos MQTT que admitan el modelo de comunicación de publicación/suscripción, tal y como se describe en. Uso de sombras en dispositivos
importante
Asegúrese de que el uso de las sombras por parte de la aplicación o servicio sea coherente y compatible con las implementaciones correspondientes en los dispositivos. Tenga en cuenta, por ejemplo, cómo se crean, actualizan y eliminan las sombras, y cómo se tratan las actualizaciones en el dispositivo y en las aplicaciones o servicios que acceden a la sombra. El diseño debe especificar claramente cómo se actualiza y notifica el estado del dispositivo, y cómo interactúan las aplicaciones y los servicios con el dispositivo y sus sombras.
La correspondiente REST API a URL las sombras con nombre es:
https://
endpoint
/things/thingName
/shadow?name=shadowName
y para una sombra sin nombre:
https://
endpoint
/things/thingName
/shadow
donde:
- punto de conexión
-
El punto final devuelto por el CLI comando:
aws iot describe-endpoint --endpoint-type IOT:Data-ATS
- thingName
-
El nombre del objeto al que pertenece la sombra
- shadowName
-
El nombre de la sombra con nombre. Este parámetro no se utiliza con sombras sin nombre.
Inicializar la aplicación o el servicio al conectarse a AWS IoT
Cuando la aplicación se conecte por primera vez AWS IoT, debería enviar una HTTP GET solicitud a la URLs de las sombras que utiliza para obtener el estado actual de las sombras que está utilizando. Esto le permite sincronizar la aplicación o el servicio con la sombra.
El estado del procesamiento cambia mientras la aplicación o el servicio están conectados a AWS IoT
Mientras la aplicación o el servicio están conectados AWS IoT, pueden consultar el estado actual de forma periódica enviando una HTTP GET solicitud URLs desde las sombras que utilizan.
Cuando un usuario final interactúa con la aplicación o el servicio para cambiar el estado del dispositivo, la aplicación o el servicio pueden enviar una HTTP POST solicitud a la URLs aplicación o el servicio que utilizan para actualizar el desired
estado de la sombra. Esta solicitud devuelve el cambio aceptado, pero es posible que tengas que sondear la sombra realizando HTTP GET solicitudes hasta que el dispositivo haya actualizado la sombra con su nuevo estado.
Detección de un dispositivo conectado
Para determinar si un dispositivo está conectado actualmente, incluya una connected
propiedad en el documento alternativo y utilice un mensaje de MQTT última voluntad y testamento (LWT) para establecer la connected
propiedad en false
caso de que un dispositivo se desconecte debido a un error.
nota
MQTTLWTEl servicio AWS IoT Device Shadow ignora los mensajes enviados a temas AWS IoT reservados (temas que comienzan por $). Sin embargo, los procesan los clientes suscritos y el motor de AWS IoT reglas, por lo que tendrá que crear un LWT mensaje que se envíe a un tema no reservado y una regla que vuelva a publicar el MQTT LWT mensaje como un mensaje de actualización paralelo en el tema de actualización reservado del tema de actualización reservado. ShadowTopicPrefix
/update
Para enviar un LWT mensaje al servicio Device Shadow
-
Cree una regla que vuelva a publicar el MQTT LWT mensaje en el tema reservado. El siguiente ejemplo es una regla que escucha mensajes sobre el tema
my/things/myLightBulb/update
y lo vuelve a publicar en$aws/things/myLightBulb/shadow/update
.{ "rule": { "ruleDisabled": false, "sql": "SELECT * FROM 'my/things/myLightBulb/update'", "description": "Turn my/things/ into $aws/things/", "actions": [ { "republish": { "topic": "$$aws/things/myLightBulb/shadow/update", "roleArn": "arn:aws:iam:123456789012:role/aws_iot_republish" } } ] } }
-
Cuando el dispositivo se conecta a AWS IoT, registra un LWT mensaje en un tema no reservado para que lo reconozca la regla de republicación. En este ejemplo, ese tema es
my/things/myLightBulb/update
y establece la propiedad conectada enfalse
.{ "state": { "reported": { "connected":"false" } } }
-
Después de conectarse, el dispositivo publica un mensaje en su tema de actualización de sombra
$aws/things/myLightBulb/shadow/update
, para notificar su estado actual, que incluye establecer su propiedadconnected
entrue
.{ "state": { "reported": { "connected":"true" } } }
-
Antes de que el dispositivo se desconecte correctamente, publica un mensaje en su tema de actualización de sombras
$aws/things/myLightBulb/shadow/update
, para notificar su estado más reciente, que incluye establecer su propiedadconnected
enfalse
.{ "state": { "reported": { "connected":"false" } } }
-
Si el dispositivo se desconecta debido a un error, el agente de AWS IoT mensajes publica el LWT mensaje del dispositivo en nombre del dispositivo. La regla de republicación detecta este mensaje y publica el mensaje de actualización de sombra para actualizar la propiedad
connected
de la sombra del dispositivo.