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.
AWS IoT Servicio Device Shadow
El servicio AWS IoT Device Shadow añade sombras a los objetos de las AWS IoT cosas. Las sombras pueden hacer que el estado de un dispositivo esté disponible para las aplicaciones y otros servicios, independientemente de que el dispositivo esté conectado AWS IoT o no. AWS IoT los objetos de las cosas pueden tener múltiples sombras con nombre para que su solución de IoT tenga más opciones para conectar sus dispositivos a otras aplicaciones y servicios.
AWS IoT los objetos tipo cosa no tienen sombras hasta que se crean de forma explícita. Las sombras se pueden crear, actualizar y eliminar mediante la AWS IoT consola. Los dispositivos, otros clientes web y servicios pueden crear, actualizar y eliminar sombras mediante MQTT y los MQTTtemas reservados, HTTP mediante Device Shadow REST API y AWS CLI for AWS IoT
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 AWS IoT, estos pueden acceder al estado actual de un dispositivo y controlarlo 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 en el que se 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, la aplicación puede seguir comunicándose con el dispositivo AWS IoT y con las sombras de éste. 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.
Si sus dispositivos están desconectados con frecuencia y quiere configurarlos para que reciban mensajes delta después de que se vuelvan a conectar, puede usar la característica de sesión persistente. Para obtener más información sobre el periodo de caducidad de la sesión persistente, consulte el Persistent session expiry period.
Elegir utilizar sombras con nombre o sin nombre
El servicio sombra de dispositivo admite sombras con nombre y sin nombre (o clásicas). Un objeto puede tener varias sombras con nombre, pero no más de una sombra sin nombre. El objeto también puede tener una sombra reservada con nombre, que funciona de forma similar a una sombra con nombre, con la diferencia de que no se puede actualizar el nombre. Para obtener más información, consulte Sombra con nombre reservado.
Un objeto objeto puede tener sombras con nombre y sin nombre al mismo tiempo; sin embargo, la que API se utiliza para acceder a cada una de ellas es ligeramente diferente, por lo que puede ser más eficaz decidir qué tipo de sombra se adapta mejor a la solución y utilizar solo ese tipo. Para obtener más información sobre cómo acceder API a las sombras, consulteTemas 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. Para obtener más información sobre las políticas que se pueden usar con las sombras de dispositivo, consulte Acciones, recursos y claves de condición para AWS IoT y las políticas de AWS IoT Core.
Las sombras clásicas sin nombre son más sencillas, pero algo más limitadas que las sombras con nombre. Cada AWS IoT objeto objeto puede tener solo una sombra sin nombre. Si espera que la solución de IoT tenga una necesidad limitada de datos de sombra, puede que así sea como desee comenzar a usar 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.
La indexación de flota admite de forma distinta las sombras sin nombre y con nombre. Para obtener más información, consulte Manage fleet indexing.
Acceso a sombras
Cada sombra tiene un MQTTtema reservado y HTTPURLeso apoya las delete
acciones get
update
, y sobre la sombra.
Las JSONsombras utilizan documentos ocultos 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 informa de las diferencias entre el estado deseado y el registrado en el
delta
objeto.
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 AWS IoT Device Shadow almacena el estado de sombra, envía mensajes cuando el estado de sombra cambia y responde a los mensajes que cambian de estado. Los dispositivos, las aplicaciones y otros servicios en la nube de la solución IoT deben 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 de las propiedades de otros objetos, como los atributos de un objeto y el contenido de MQTT los mensajes que pueda publicar el dispositivo de un objeto oculto. Sin embargo, un dispositivo puede reportar los mismos datos en diferentes MQTT temas y sombras 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 del AWS IoT servicio lleguen al dispositivo en un orden específico. La siguiente situación muestra lo que sucede en este caso.
Documento de estado inicial:
{ "state": { "reported": { "color": "blue" } }, "version": 9, "timestamp": 123456776 }
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 ocultos que se envían al dispositivo, defina una regla que seleccione solo los campos que el dispositivo necesite y, a continuación, vuelva a publicar el mensaje sobre un MQTT tema que el dispositivo esté escuchando.
La regla se especifica JSON y debe tener el siguiente aspecto:
{ "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 SELECT declaración 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 tal caso, la función "topic()"
se utiliza para especificar el tema en el que se vuelve a publicar. topic(3)
toma el valor del nombre de objeto del tema original. Para obtener más información sobre la creación de reglas, consulte Reglas para AWS IoT.