Servicio Device Shadow de AWS IoT - [EMPTY] IoT Núcleo

Si proporcionásemos una traducción de la versión en inglés de la guía, prevalecerá la versión en inglés de la guía si hubiese algún conflicto. La traducción se proporciona mediante traducción automática.

Servicio Device Shadow de AWS IoT

El servicio Device Shadow de AWS IoT agrega sombras a objetos de AWS IoT. Las sombras pueden hacer que un estado de dispositivo esté disponible para aplicaciones y otros servicios si el dispositivo está conectado a AWS IoT o no. AWS IoT Los objetos de objeto de pueden tener varias sombras con nombre para que su IoT La solución de tiene más opciones para conectar sus dispositivos a otras aplicaciones y servicios.

Los objetos de AWS IoT no tienen sombras con nombre hasta que se crean explícitamente; sin embargo, se crea una sombra clásica sin nombre para un objeto cuando se crea el objeto. Las sombras se pueden crear, actualizar y eliminar mediante la consola de AWS IoT. Los dispositivos, otros clientes web y servicios pueden crear, actualizar y eliminar sombras mediante MQTT y la temas de MQTT reservados, HTTP con la API de REST de sombra de dispositivoy el [EMPTY] IoT Interfaz de línea de. Porque las sombras son almacenadas por AWS en la nube, pueden recopilar y notificar datos de estado del dispositivo de aplicaciones y otros servicios en la nube, tanto si el dispositivo está conectado como si no.

Uso de sombras

Las sombras proporcionan un almacén de datos de confianza para dispositivos, aplicaciones y otros servicios en la nube para compartir datos. Permiten que dispositivos, aplicaciones y otros servicios en la nube se conecten y desconecten sin perder el estado de un dispositivo.

Mientras los dispositivos, las aplicaciones y otros servicios en la nube están conectados a AWS IoT, pueden acceder y controlar el estado actual de un dispositivo a través de sus sombras. Por ejemplo, una aplicación puede solicitar un cambio en el estado de un dispositivo actualizando una sombra. AWS IoT publica un mensaje que indica el cambio en el dispositivo. El dispositivo recibe este mensaje, actualiza su estado para que coincida y publica un mensaje con su estado actualizado. El servicio Device Shadow refleja este estado actualizado en la sombra correspondiente. La aplicación puede suscribirse a la actualización de la sombra o puede consultar la sombra para conocer su estado actual.

Cuando un dispositivo se desconecta, una aplicación puede seguir comunicándose con AWS IoT y las sombras del dispositivo. Cuando el dispositivo se vuelve a conectar, recibe el estado actual de sus sombras para que pueda actualizar su estado para que coincida con el de sus sombras y, a continuación, publicar un mensaje con su estado actualizado. Del mismo modo, cuando una aplicación se desconecta y el estado del dispositivo cambia mientras está fuera de línea, el dispositivo mantiene la sombra actualizada para que la aplicación pueda consultar las sombras para conocer su estado actual cuando se vuelva a conectar.

Elegir utilizar sombras con nombre o sin nombre

El servicio Device Shadow admite sombras clásicas con nombre y sin nombre, como se utilizaba en el pasado. Un objeto puede tener varias sombras con nombre y no más de una sombra clásica sin nombre. Un objeto puede tener sombras con nombre y sin nombre al mismo tiempo; sin embargo, la API utilizada para acceder a cada una es ligeramente diferente, por lo que podría ser más eficiente decidir qué tipo de sombra funcionaría mejor para su solución y usar solo dicho tipo. Para obtener más información acerca de la API para acceder a las sombras, consulte Temas de sombra.

Mediante las sombras con nombre, puede crear distintas vistas del estado de un objeto. Por ejemplo, podría dividir un objeto con muchas propiedades en sombras con grupos lógicos de propiedades, cada una identificada por su nombre de sombra. También puede limitar el acceso a las propiedades agrupándolas en distintas sombras y utilizando políticas para controlar el acceso. Sin embargo, las sombras con nombre no son compatibles indexación de flotas.

Las sombras clásicas sin nombre son más sencillas, pero algo más limitadas que las sombras con nombre. Cada objeto de AWS IoT puede tener solo una sombra sin nombre. Si espera que su IoT solución para tener una necesidad limitada de datos de sombras, puede ser como desea comenzar a utilizar sombras. Sin embargo, si cree que es posible que desee agregar sombras adicionales en el futuro, plantéese la posibilidad de utilizar sombras con nombre desde el principio.

Acceso a sombras

Cada sombra tiene un tema MQTT reservado y una URL HTTP que admite las acciones get, update y delete en la sombra.

Las sombras utilizan documentos de sombra JSON para almacenar y recuperar datos. Un documento de sombra contiene una propiedad de estado que describe estos aspectos del estado del dispositivo:

  • desired

    Las aplicaciones especifican los estados deseados de las propiedades del dispositivo actualizando el objeto desired.

  • reported

    Los dispositivos notifican su estado actual en el objeto reported.

  • delta

    AWS IoT notifica las diferencias entre el estado deseado y el notificado en el objeto delta.

Los datos almacenados en una sombra están determinados por la propiedad de estado del cuerpo del mensaje de la acción de actualización. Las acciones de actualización posteriores pueden modificar los valores de un objeto de datos existente y también agregar y eliminar claves y otros elementos del objeto de estado de la sombra. Para obtener más información sobre cómo acceder a las sombras, consulte Uso de sombras en dispositivos y Uso de sombras en aplicaciones y servicios.

importante

El permiso para realizar solicitudes de actualización debe limitarse a aplicaciones y dispositivos de confianza. Esto evita que la propiedad de estado de la sombra se cambie de forma inesperada; de lo contrario, los dispositivos y aplicaciones que usan la sombra deben diseñarse para esperar que cambien las claves de la propiedad de estado.

Uso de sombras en dispositivos, aplicaciones y otros servicios en la nube

El uso de sombras en dispositivos, aplicaciones y otros servicios en la nube requiere coherencia y coordinación entre todos ellos. El servicio Device Shadow de AWS IoT almacena el estado de la sombra, envía mensajes cuando cambia el estado de la sombra y responde a los mensajes que cambian su estado. Los dispositivos, aplicaciones y otros servicios en la nube en su IoT La solución debe administrar su estado y mantenerlo coherente con el estado de la sombra del dispositivo.

Los datos de estado de sombra son dinámicos y los pueden modificar los dispositivos, las aplicaciones y otros servicios en la nube con permiso para acceder a la sombra. Por esta razón, es importante considerar cómo interactuarán con la sombra cada dispositivo, aplicación y otro servicio en la nube. Por ejemplo:

  • Los dispositivos deben escribir solo en la propiedad reported del estado de la sombra al comunicar datos de estado a la sombra.

  • Las aplicaciones y otros servicios en la nube deben escribir solo en la propiedad desired al comunicar solicitudes de cambio de estado al dispositivo a través de la sombra.

importante

Los datos contenidos en un objeto de datos de sombra son independientes de los de otras sombras y otras propiedades de objetos, como los atributos de un objeto y el contenido de los mensajes MQTT que el dispositivo de un objeto podría publicar. Sin embargo, un dispositivo puede notificar los mismos datos en diferentes temas y sombras de MQTT si es necesario.

Un dispositivo que admita varias sombras debe mantener la coherencia de los datos que notifica en las distintas sombras.

Orden de los mensajes

No se garantiza que los mensajes generados por el servicio de AWS IoT lleguen al dispositivo siguiendo un orden específico. La siguiente situación muestra lo que sucede en este caso.

Documento de estado inicial:

{ "state": { "reported": { "color": "blue" } }, "version": 10, "timestamp": 123456777 }

Actualización 1:

{ "state": { "desired": { "color": "RED" } }, "version": 10, "timestamp": 123456777 }

Actualización 2:

{ "state": { "desired": { "color": "GREEN" } }, "version": 11, "timestamp": 123456778 }

Documento de estado final:

{ "state": { "reported": { "color": "GREEN" } }, "version": 12, "timestamp": 123456779 }

Se obtienen dos mensajes delta:

{ "state": { "color": "RED" }, "version": 11, "timestamp": 123456778 }
{ "state": { "color": "GREEN" }, "version": 12, "timestamp": 123456779 }

El dispositivo puede recibir estos mensajes de forma desordenada. Dado que el estado de estos mensajes es acumulable, un dispositivo puede descartar con toda seguridad todos los mensajes cuyo número de versión sea anterior a la del mensaje del cual se hace un seguimiento. Si el dispositivo recibe el delta de la versión 12 antes que el de la versión 11, puede descartar sin problemas el mensaje de la versión 11.

Recorte de mensajes de sombra

Para reducir el tamaño de los mensajes de sombra que se envían al dispositivo, defina una regla que seleccione solo los campos que necesita el dispositivo y que después vuelva a publicar el mensaje en un tema MQTT al que el dispositivo esté escuchando.

La regla se especifica en JSON y debe tener el aspecto siguiente:

{ "sql": "SELECT state, version FROM '$aws/things/+/shadow/update/delta'", "ruleDisabled": false, "actions": [ { "republish": { "topic": "${topic(3)}/delta", "roleArn": "arn:aws:iam::123456789012:role/my-iot-role" } } ] }

La instrucción SELECT determina qué campos del mensaje se volverán a publicar en el tema especificado. Se usa el comodín "+" para seleccionar todos los nombres de sombra. La regla especifica que todos los mensajes coincidentes deben volver a publicarse en el tema especificado. En este caso, el botón "topic()" La función se utiliza para especificar el tema de en el que volver a publicar. topic(3) se evalúa con el nombre del objeto en el tema original. Para obtener más información sobre la creación de reglas, consulte Reglas para AWS IoT.