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.
Tutorial: Interactuar con Device Shadow mediante la aplicación de ejemplo y el cliente de pruebas MQTT
Para interactuar con la aplicación de ejemplo shadow.py
, introduzca un valor para el valor en el terminal desired
. Por ejemplo, puede especificar colores que se asemejen a los semáforos y AWS IoT responde a la solicitud y actualiza los valores notificados.
En este tutorial, aprenderá a:
-
Usar la aplicación de ejemplo
shadow.py
para especificar los estados deseados y actualizar el estado actual de la sombra. -
Editar el documento Shadow para observar los eventos delta y cómo responde a ellos la aplicación de muestra
shadow.py
. -
Utilizar el cliente de prueba MQTT para suscribirse a temas sombra y observar las actualizaciones cuando ejecute el programa de ejemplo.
Antes de ejecutar este tutorial, debe disponer de lo siguiente:
Instale su Cuenta de AWS, configure su dispositivo Raspberry Pi y cree una cosa AWS IoT y una política. También debe haber instalado el software necesario, el SDK del dispositivo y los archivos de certificado necesarios y haber ejecutado el programa de muestra en la terminal. Para obtener más información, consulte los tutoriales anteriores Tutorial: Cómo preparar la Raspberry Pi para ejecutar la aplicación shadow y Paso 1: ejecutar la aplicación de ejemplo shadow.py. Si aún no lo ha hecho, debe completar estos tutoriales.
En este tutorial, podrá:
- Paso 1: Actualizar los valores deseados y notificados mediante la aplicación de ejemplo shadow.py
- Paso 2: Ver los mensajes de la aplicación de ejemplo shadow.py en el cliente de prueba MQTT
- Paso 3: solucionar los errores de las interacciones de Device Shadow
- Paso 4: Revisar los resultados y los siguientes pasos
Para completar este tutorial se necesitan aproximadamente 45 minutos.
Paso 1: Actualizar los valores deseados y notificados mediante la aplicación de ejemplo shadow.py
En el tutorial anterior Paso 1: ejecutar la aplicación de ejemplo shadow.py, aprendió a observar un mensaje publicado en el documento Shadow de la consola de AWS IoT al introducir el valor deseado, tal y como se describe en la sección Tutorial: Instalación del SDK del dispositivo y ejecución de la aplicación de ejemplo para Device Shadows.
En el ejemplo anterior, configuramos el color deseado en yellow
. Después de introducir cada valor, el terminal le pide que introduzca otro valor desired
. Si vuelve a introducir el mismo valor (yellow
), la aplicación lo reconoce y le pide que introduzca un nuevo valor desired
.
Enter desired value: yellow Local value is already 'yellow'. Enter desired value:
Ahora, supongamos que ha introducido el color green
. AWS IoT responde a la solicitud y actualiza el valor reported
a green
. Así es como se produce la actualización cuando el estado desired
es diferente del estado reported
, lo que provoca un delta.
Cómo simula la aplicación de ejemplo shadow.py
las interacciones de Device Shadow:
-
Introduzca un valor
desired
(por ejemployellow
) en el terminal para publicar el estado deseado. -
Como el estado
desired
es diferente del estadoreported
(por ejemplo, el colorgreen
), se produce un delta y la aplicación que está suscrita al delta recibe este mensaje. -
La aplicación responde al mensaje y actualiza su estado al valor
desired
,yellow
. -
A continuación, la aplicación publica un mensaje de actualización con el nuevo valor registrado del estado del dispositivo,
yellow
.
A continuación se muestran los mensajes que se muestran en el terminal y que muestran cómo se publica la solicitud de actualización.
Enter desired value: green Changed local shadow value to 'green'. Updating reported shadow value to 'green'... Update request published. Finished updating reported shadow value to 'green'.
En la consola de AWS IoT, el documento oculto refleja el valor actualizado green
para los campos reported
y desired
y, además, el número de versión se incrementa en 1. Por ejemplo, si el número de la versión anterior se mostraba como 10, el número de la versión actual aparecerá como 11.
nota
Borrar una sombra no restablece el número de versión a 0. Verá que la versión sombra se incrementa en 1 cuando publique una solicitud de actualización o cree otra sombra con el mismo nombre.
Editar el documento Shadow para observar los eventos delta
La aplicación de ejemplo shadow.py
también está suscrita a los eventos delta
y responde cuando se produce un cambio en el valor desired
. Por ejemplo, puede cambiar el valor desired
por el color red
. Para ello, en la consola de AWS IoT, edite el documento Shadow haciendo clic en Editar y, a continuación, establezca el valor desired
en red
en el JSON, manteniendo el valor reported
en green
. Antes de guardar los cambios, mantén abierto el terminal de la Raspberry Pi, ya que verás mensajes en el terminal cuando se produzca el cambio.
{ "desired": { "welcome": "aws-iot", "color": "red" }, "reported": { "welcome": "aws-iot", "color": "green" } }
Tras guardar el nuevo valor, la aplicación de ejemplo shadow.py
responde a este cambio y muestra mensajes en el terminal que indican el delta. A continuación, verá los siguientes mensajes debajo de la solicitud para introducir el valor desired
.
Enter desired value: Received shadow delta event. Delta reports that desired value is 'red'. Changing local value... Changed local shadow value to 'red'. Updating reported shadow value to 'red'... Finished updating reported shadow value to 'red'. Enter desired value: Update request published. Finished updating reported shadow value to 'red'.
Paso 2: Ver los mensajes de la aplicación de ejemplo shadow.py
en el cliente de prueba MQTT
Puede utilizar el cliente de prueba de MQTT de la consola de AWS IoT para supervisar los mensajes de MQTT que se transmiten a su Cuenta de AWS. Al suscribirse a los temas MQTT reservados utilizados por el servicio Device Shadow, puede observar los mensajes recibidos por los temas al ejecutar la aplicación de ejemplo.
Si aún no ha utilizado el cliente de pruebas de MQTT, puede revisar Vea MQTT los mensajes con el AWS IoT MQTT cliente Esto le ayudará a aprender a utilizar el cliente de prueba de MQTT de la consola de AWS IoT para ver los mensajes MQTT a medida que pasan por el agente de mensajes.
-
Abra el cliente de prueba MQTT
Abra el cliente de prueba de MQTT en la consola de AWS IoT
en una ventana nueva para poder observar los mensajes recibidos por los temas MQTT sin perder la configuración de su cliente de prueba de MQTT. El cliente de prueba MQTT no conserva las suscripciones ni los registros de mensajes si lo abandona para ir a otra página de la consola. Para esta sección del tutorial, puede tener el documento Sombra de su cosa AWS IoT y el cliente de prueba MQTT abiertos en ventanas separadas para observar más fácilmente la interacción con las Sombras de dispositivos. -
Suscribirse a los temas reservados de MQTT Shadow
Puede utilizar el cliente de pruebas de MQTT para introducir los nombres de los temas reservados de MQTT de Device Shadow y suscribirse a ellos para recibir actualizaciones cuando ejecute la aplicación de ejemplo
shadow.py
. Para suscribirse al tema:En el cliente de prueba MQTT de la consola de AWS IoT, seleccione Suscribirse a un tema.
En la sección Filtrar temas, introduzca: $aws/things/
thingname
/shadow/update/#. Aquíthingname
es el nombre del recurso que creó anteriormente (por ejemplo,My_light_bulb
).Mantenga los valores predeterminados para los ajustes de configuración adicionales y, a continuación, seleccione Suscribirse.
Si utiliza el comodín # en la suscripción al tema, podrá suscribirse a varios temas de MQTT al mismo tiempo y observar todos los mensajes que se intercambian entre el dispositivo y su Shadow en una sola ventana. Para obtener más información sobre los caracteres comodín y su uso, consulte MQTTtemas.
-
Ejecute un programa de ejemplo
shadow.py
y observe los mensajesEn la ventana de la línea de comandos de la Raspberry Pi, si ha desconectado el programa, vuelva a ejecutar la aplicación de ejemplo y mire los mensajes en el cliente de pruebas MQTT de la consola de AWS IoT.
-
Ejecute la siguiente orden para reiniciar el programa de muestra. Sustituya
your-iot-thing-name
yyour-iot-endpoint
por los nombres de la cosa AWS IoT que creó anteriormente (por ejemplo,My_light_bulb
), y el punto de conexión para interactuar con el dispositivo.cd ~/aws-iot-device-sdk-python-v2/samples python3 shadow.py --ca_file ~/certs/Amazon-root-CA-1.pem --cert ~/certs/device.pem.crt --key ~/certs/private.pem.key --endpoint
your-iot-endpoint
--thing_nameyour-iot-thing-name
A continuación, la aplicación de ejemplo
shadow.py
se ejecuta y recupera el estado de sombra actual. Si ha eliminado la sombra o borrado los estados actuales, el programa fija el valor actual aoff
y luego le pide que introduzca un valordesired
.Connecting to a3qEXAMPLEffp-ats.iot.us-west-2.amazonaws.com with client ID 'test-0c8ae2ff-cc87-49d2-a82a-ae7ba1d0ca5a'... Connected! Subscribing to Delta events... Subscribing to Update responses... Subscribing to Get responses... Requesting current shadow state... Launching thread to read user input... Finished getting initial shadow state. Shadow document lacks 'color' property. Setting defaults... Changed local shadow value to 'off'. Updating reported shadow value to 'off'... Update request published. Finished updating reported shadow value to 'off'... Enter desired value:
Por otro lado, si el programa se estaba ejecutando y lo reiniciaste, verás el último valor de color registrado en la terminal. En el cliente de prueba MQTT, verá una actualización de los temas $aws/things/
thingname
/shadow/get y $aws/things/thingname
/shadow/get/accepted.Supongamos que el último color registrado fue
green
. A continuación se muestra el contenido del archivo JSON $aws/things/thingname
/shadow/get/accepted.{ "state": { "desired": { "welcome": "aws-iot", "color": "green" }, "reported": { "welcome": "aws-iot", "color": "green" } }, "metadata": { "desired": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620161643 } }, "reported": { "welcome": { "timestamp": 1620156892 }, "color": { "timestamp": 1620161643 } } }, "version": 10, "timestamp": 1620173908 }
-
Introduzca un valor
desired
en la terminal, por ejemployellow
. La aplicación de ejemploshadow.py
responde y muestra los siguientes mensajes en el terminal que muestran el cambio en el valorreported
ayellow
.Enter desired value: yellow Changed local shadow value to 'yellow'. Updating reported shadow value to 'yellow'... Update request published. Finished updating reported shadow value to 'yellow'.
En el cliente de prueba de MQTT de la consola de AWS IoT, en Suscripciones, verá que los siguientes temas han recibido un mensaje:
-
$aws/things/
thingname
/shadow/update: muestra que ambos valoresdesired
yupdated
cambian al coloryellow
. -
$aws/things/
thingname
/shadow/update/accepted: muestra los valores actuales de los estadosdesired
yreported
y sus metadatos e información sobre la versión. -
$aws/things/
thingname
/shadow/update/documents: muestra los valores anteriores y actuales de los estadosdesired
yreported
y sus metadatos e información sobre la versión.
Como el documento $aws/things/
thingname
/shadow/update/documents también contiene información contenida en los otros dos temas, podemos revisarlo para ver la información de estado. El estado anterior muestra el valor informado establecido engreen
, sus metadatos e información de versión, y el estado actual, que muestra el valor informado actualizado ayellow
.{ "previous": { "state": { "desired": { "welcome": "aws-iot", "color": "green" }, "reported": { "welcome": "aws-iot", "color": "green" } }, "metadata": { "desired": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297898 } }, "reported": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297898 } } }, "version": 10 }, "current": { "state": { "desired": { "welcome": "aws-iot", "color": "yellow" }, "reported": { "welcome": "aws-iot", "color": "yellow" } }, "metadata": { "desired": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297904 } }, "reported": { "welcome": { "timestamp": 1617297888 }, "color": { "timestamp": 1617297904 } } }, "version": 11 }, "timestamp": 1617297904 }
-
-
Ahora, si introduce otro valor
desired
, verá más cambios en los valoresreported
y en las actualizaciones de los mensajes que se reciben en estos temas. El número de versión también se incrementa en 1. Por ejemplo, si introduce el valorgreen
, el estado anterior informa del valoryellow
y el estado actual informa del valorgreen
.
-
-
Editar el documento Shadow para observar los eventos delta
Para observar los cambios en el tema delta, edite el documento paralelo en la consola de AWS IoT. Por ejemplo, puede cambiar el valor
desired
por el colorred
. Para ello, en la consola de AWS IoT, seleccione Editar y, a continuación, establezca el valordesired
en rojo en el JSON, manteniendo el valor establecidoreported
engreen
. Antes de guardar el cambio, mantenga el terminal abierto ya que verá el mensaje delta informado en el terminal.{ "desired": { "welcome": "aws-iot", "color": "red" }, "reported": { "welcome": "aws-iot", "color": "green" } }
La aplicación de ejemplo
shadow.py
responde a este cambio y muestra mensajes en el terminal que indican el delta. En el cliente de pruebas de MQTT, los temasupdate
habrán recibido un mensaje que muestra los cambios en los valoresdesired
yreported
.También verá que el tema $aws/things/
thingname
/shadow/update/delta recibió un mensaje. Para ver el mensaje, seleccione este tema, que aparece en Suscripciones.{ "version": 13, "timestamp": 1617318480, "state": { "color": "red" }, "metadata": { "color": { "timestamp": 1617318480 } } }
Paso 3: solucionar los errores de las interacciones de Device Shadow
Al ejecutar la aplicación de ejemplo Shadow, es posible que surjan problemas al observar las interacciones con el servicio Device Shadow.
Si el programa se ejecuta correctamente y le pide que introduzca un valor desired
, debería poder observar las interacciones de Device Shadow mediante el documento Shadow y el cliente de pruebas MQTT, tal y como se ha descrito anteriormente. Sin embargo, si no puede ver las interacciones, puede comprobar lo siguiente:
-
Comprueba el nombre de la cosa y su sombra en la consola de AWS IoT
Si no ve los mensajes en el documento Shadow, revise el comando y asegúrese de que coincide con el nombre de la cosa en la consola de AWS IoT. También puede comprobar si tiene una sombra clásica eligiendo su recurso cosa y luego eligiendo Sombras. Este tutorial se centra principalmente en las interacciones con la sombra clásica.
También puede confirmar que el dispositivo que utilizó está conectado a Internet. En la consola deAWS IoT, elija lo que ha creado anteriormente y, a continuación, seleccione Interactuar. En la página de detalles de la cosa, debería ver un mensaje que dice:
This thing already appears to be connected.
-
Compruebe los temas reservados de MQTT a los que se ha suscrito
Si los mensajes no aparecen en el cliente de prueba de MQTT, compruebe si los temas a los que se ha suscrito tienen el formato correcto. Los temas de Device Shadow de MQTT tienen el formato $aws/things/
thingname
/shadow/ y pueden tenerupdate
,get
odelete
detrás en función de las acciones que desee realizar en la sombra. En este tutorial se utiliza el tema $aws/things/thingname
/shadow/ #, así que asegúrese de haberlo introducido correctamente al suscribirse al tema en la sección de filtrado de temas del cliente de prueba.Al introducir el nombre del tema, asegúrese de que el
nombre de la cosa
es el mismo que el de la cosa AWS IoT que creó anteriormente. También puede suscribirse a otros temas de MQTT para comprobar si la actualización se ha realizado correctamente. Por ejemplo, puede suscribirse al tema $aws/things/thingname
/shadow/update/rejected para recibir un mensaje cada vez que falle una solicitud de actualización y así poder depurar los problemas de conexión. Para más información sobre los temas reservados, consulte Temas de sombra y MQTTTemas sobre Device Shadow.
Paso 4: Revisar los resultados y los siguientes pasos
En este tutorial, ha aprendido a:
-
Usar la aplicación de ejemplo
shadow.py
para especificar los estados deseados y actualizar el estado actual de la sombra. -
Editar el documento Shadow para observar los eventos delta y cómo responde a ellos la aplicación de muestra
shadow.py
. -
Utilizar el cliente de prueba MQTT para suscribirse a temas sombra y observar las actualizaciones cuando ejecute el programa de ejemplo.
Pasos siguientes
Puede suscribirse a otros temas reservados de MQTT para ver las actualizaciones de la aplicación oculta. Por ejemplo, si solo se suscribe al tema $aws/things/thingname
/shadow/update/accepted, solo verá la información sobre el estado actual cuando la actualización se realice correctamente.
También puede suscribirse a temas sombra adicionales para depurar problemas o aprender más sobre las interacciones de la Sombra de Dispositivos y también depurar cualquier problema con las interacciones de la Sombra de Dispositivos. Para obtener más información, consulte Temas de sombra y MQTTTemas sobre Device Shadow.
También puede optar por ampliar su aplicación utilizando sombras con nombre o utilizando hardware adicional conectado con la Raspberry Pi para los LED y observar los cambios en su estado mediante mensajes enviados desde el terminal.
Para obtener más información sobre el servicio Device Shadow y el uso del servicio en dispositivos, aplicaciones y servicios, consulte AWS IoT Servicio Device Shadow, Uso de sombras en dispositivos, y Uso de sombras en aplicaciones y servicios.