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.
Temas MQTT de sombra de dispositivo
El servicio Device Shadow utiliza temas MQTT reservados para permitir a los dispositivos y las aplicaciones obtener, actualizar o eliminar la información de estado de un dispositivo (sombra).
La publicación y suscripción de temas de sombra requiere una autorización basada en temas. AWS IoT
se reserva el derecho a añadir nuevos temas a la estructura de temas existente. Por este motivo, le recomendamos que evite las suscripciones de tipo comodín a los temas de sombra. Por ejemplo, evite suscribirse a filtros de temas, $aws/things/thingName/shadow/#
ya que el número de temas que coinciden con este filtro podría aumentar a medida que se AWS IoT introduzcan nuevos temas ocultos. Para consultar ejemplos de mensajes publicados en estos temas vaya a Interacción con sombras.
Las sombras pueden ser con nombre o sin nombre (clásico). Los temas utilizados por cada uno solo difieren en el prefijo del tema. Esta tabla muestra el prefijo de tema utilizado por cada tipo de sombra.
ShadowTopicPrefix valor |
Tipo de sombra |
---|---|
$aws/things/ |
Sombra sin nombre (clásica) |
$aws/things/ |
Sombra con nombre |
Para crear un tema completo, seleccione el
para el tipo de sombra al que desea hacer referencia, reemplace ShadowTopicPrefix
y thingName
si procede, por sus valores correspondientes y, a continuación, anéxelo al código auxiliar del tema como se muestra en las secciones siguientes.shadowName
A continuación se muestran los temas MQTT utilizados para interactuar con las sombras.
Temas
/get
Publique un mensaje vacío en este tema para obtener la sombra de objeto:
ShadowTopicPrefix
/get
AWS IoT responde publicando en una /get/accepted u otra/get/rejected.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:
region
:account
:topic/$aws/things/thingName
/shadow/get" ] } ] }
/get/accepted
AWS IoT publica un documento paralelo de respuesta sobre este tema al devolver la sombra del dispositivo:
ShadowTopicPrefix
/get/accepted
Para obtener más información, consulte Documentos de estado de la respuesta.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/get/accepted" ] } ] }
/get/rejected
AWS IoT publica un documento de respuesta a errores sobre este tema cuando no puede mostrar la sombra del dispositivo:
ShadowTopicPrefix
/get/rejected
Para obtener más información, consulte Documento de respuesta de error.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/get/rejected" ] }, { "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/get/rejected" ] } ] }
/update
Publique un documento de estado de solicitud en este tema para actualizar la sombra del dispositivo:
ShadowTopicPrefix
/update
El cuerpo del mensaje contiene un documento de estado de solicitud parcial.
Un cliente que intente actualizar el estado de un dispositivo enviaría un documento de estado de solicitud JSON con la propiedad desired
como esta:
{ "state": { "desired": { "color": "red", "power": "on" } } }
Un dispositivo que actualice su sombra enviaría un documento de estado de solicitud JSON con la propiedad reported
, como esta:
{ "state": { "reported": { "color": "red", "power": "on" } } }
AWS IoT responde publicando en una de las /update/accepted dos/update/rejected.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:
region
:account
:topic/$aws/things/thingName
/shadow/update" ] } ] }
/update/delta
AWS IoT publica un documento de estado de respuesta sobre este tema cuando acepta un cambio en la sombra del dispositivo, y el documento de estado de la solicitud contiene valores desired
y reported
estados diferentes para:
ShadowTopicPrefix
/update/delta
El búfer del mensaje contiene un Documento de estado de la respuesta /delta.
Detalles del cuerpo del mensaje
-
Un mensaje publicado en
update/delta
incluye únicamente los atributos deseados que difieren entre las seccionesdesired
yreported
. Contiene todos estos atributos, independientemente de si se encuentran en el mensaje de actualización actual o si ya estaban almacenados en AWS IoT. No se incluyen los atributos que no difieren entre las seccionesdesired
yreported
. -
Si un atributo se encuentra en la sección
reported
, pero no tiene equivalente en la seccióndesired
, no se incluye. -
Si un atributo se encuentra en la sección
desired
, pero no tiene equivalente en la secciónreported
, se incluye. -
Si se elimina un atributo de la sección
reported
, pero sigue existiendo en la seccióndesired
, se incluye.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/update/delta" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/update/delta" ] } ] }
/update/accepted
AWS IoT publica un documento de estado de respuesta sobre este tema cuando acepta un cambio en la sombra del dispositivo:
ShadowTopicPrefix
/update/accepted
El búfer del mensaje contiene un Documento de estado de la respuesta /aceptado.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/update/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/update/accepted" ] } ] }
/update/documents
AWS IoT publica un documento de estado sobre este tema cada vez que se realiza correctamente una actualización de la sombra:
ShadowTopicPrefix
/update/documents
El cuerpo del mensaje contiene un Documento de estado de respuesta /documentos.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/update/documents" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/update/documents" ] } ] }
/update/rejected
AWS IoT publica un documento de respuesta a errores sobre este tema cuando rechaza un cambio en la sombra del dispositivo:
ShadowTopicPrefix
/update/rejected
El cuerpo del mensaje contiene un Documento de respuesta de error.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/update/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/update/rejected" ] } ] }
/delete
Para eliminar la sombra de un dispositivo, publique un mensaje vacío para eliminar el tema:
ShadowTopicPrefix
/delete
El contenido del mensaje no se tiene en cuenta.
Tenga en cuenta que, al eliminar una sombra, no se restablece su número de versión a 0.
AWS IoT responde publicando en una de las /delete/accepted dos/delete/rejected.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:
region
:account
:topic/$aws/things/thingName
/shadow/delete" ] } ] }
/delete/accepted
AWS IoT publica un mensaje sobre este tema cuando se elimina la sombra de un dispositivo:
ShadowTopicPrefix
/delete/accepted
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/delete/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/delete/accepted" ] } ] }
/delete/rejected
AWS IoT publica un documento de respuesta a errores sobre este tema cuando no puede eliminar la sombra del dispositivo:
ShadowTopicPrefix
/delete/rejected
El cuerpo del mensaje contiene un Documento de respuesta de error.
Ejemplo de política de
A continuación, mostramos un ejemplo de la política requerida:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:
region
:account
:topicfilter/$aws/things/thingName
/shadow/delete/rejected" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account
:topic/$aws/things/thingName
/shadow/delete/rejected" ] } ] }