Uso de sombras en aplicaciones y servicios - AWS IoT Core

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
  1. 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" } } ] } }
  2. 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 en false.

    { "state": { "reported": { "connected":"false" } } }
  3. 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 propiedad connected en true.

    { "state": { "reported": { "connected":"true" } } }
  4. 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 propiedad connected en false.

    { "state": { "reported": { "connected":"false" } } }
  5. 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.