

Aviso de fin de soporte: el 7 de octubre de 2026, AWS suspenderemos el soporte para AWS IoT Greengrass Version 1. Después del 7 de octubre de 2026, ya no podrá acceder a los AWS IoT Greengrass V1 recursos. Para obtener más información, visita [Migrar desde AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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.

# Módulo 5: Interacción con sombras de dispositivos
<a name="module5"></a>

Este módulo avanzado muestra cómo los dispositivos cliente pueden interactuar con [las sombras de los AWS IoT dispositivos](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) de un AWS IoT Greengrass grupo. Una *sombra* es un documento JSON que se usa para almacenar la información del estado actual o deseado de un objeto. En este módulo, descubrirá cómo un dispositivo de cliente (`GG_Switch`) puede modificar el estado de otro dispositivo de cliente (`GG_TrafficLight`) y cómo estos estados pueden sincronizarse con la nube de AWS IoT Greengrass :

![\[AWS IoT Greengrass El núcleo está conectado a un semáforo (sombra) y a un dispositivo conmutador de luz.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-077.5.png)


Antes de comenzar, ejecute el script de [configuración de dispositivos de Greengrass](quick-start.md) o asegúrese de haber completado el [módulo 1](module1.md) y el [módulo 2](module2.md). También debe saber cómo conectar los dispositivos cliente a un AWS IoT Greengrass núcleo ([módulo 4](module4.md)). No necesita otros componentes ni dispositivos.

Completar este módulo debería tomarle aproximadamente 30 minutos.

**Topics**
+ [Configurar dispositivos y suscripciones](config-dev-subs.md)
+ [Descargar los archivos necesarios](file-download.md)
+ [Probar las comunicaciones (sincronizaciones de dispositivos deshabilitadas)](comms-disabled.md)
+ [Probar las comunicaciones (sincronizaciones de dispositivos habilitadas)](comms-enabled.md)

# Configurar dispositivos y suscripciones
<a name="config-dev-subs"></a>

Las sombras se pueden sincronizar AWS IoT cuando el AWS IoT Greengrass núcleo está conectado a Internet. Este módulo, utilizará primero las sombras locales sin sincronizar con la nube. Después, habilitará la sincronización con la nube.

Cada dispositivo cliente tiene su propia sombra. Para obtener más información, consulte el [Servicio sombra de dispositivo para AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-device-shadows.html) en la *Guía del desarrollador de AWS IoT *.

1. En la página de configuración de grupo, elija **Dispositivos del cliente**.

1. En la pestaña **Dispositivos cliente**, agrega dos nuevos dispositivos cliente a tu AWS IoT Greengrass grupo. Para obtener información detallada sobre este proceso, consulte [Crear dispositivos cliente en un AWS IoT Greengrass grupo](device-group.md).
   + Utilice los nombres **GG\$1Switch** y **GG\$1TrafficLight** para los dispositivos del cliente.
   + Genere y descargue los recursos de seguridad para ambos dispositivos de cliente.
   + Anote el ID del certificado en los nombres de archivo de los recursos de seguridad para los dispositivos cliente. Utilizará estos nombres más adelante.

1. Cree una carpeta en su ordenador para las credenciales de seguridad de estos dispositivos cliente. Copie los certificados y las claves en esta carpeta.

1. Asegúrese de que los dispositivos cliente están configurados para utilizar sombras locales y no sincronizarse con la Nube de AWS. Si no es así, seleccione el dispositivo cliente, seleccione **Sincronizar sombra** y, a continuación, seleccione **Desactivar sincronización oculta con la nube**.

1. <a name="module5-subscriptions"></a>Añada las suscripciones de la tabla siguiente al grupo. Por ejemplo, para crear la primera suscripción:

   1. En la página de configuración de grupo, elija la pestaña **Suscripciones** y, a continuación, elija **Agregar**.

   1. En **Tipo de origen**, elija **Dispositivo del cliente** y, a continuación, elija **GG\$1Switch**.

   1. En **Tipo de destino** elija **Servicios** y, a continuación, elija **Servicio de sombra local**.

   1. En **Filtro de temas**, escriba **\$1aws/things/GG\$1TrafficLight/shadow/update**.

   1. Elija **Crear una suscripción**.

   Los temas deben escribirse exactamente igual que aparecen en la tabla. Aunque puede utilizar caracteres comodín para consolidar algunas de las suscripciones, no le recomendamos que lo haga. Para obtener más información, consulte [Temas MQTT de sombra](https://docs.aws.amazon.com/iot/latest/developerguide/device-shadow-mqtt.html) en la *Guía para desarrolladores de AWS IoT *.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/config-dev-subs.html)

   Las suscripciones nuevas se muestran en la pestaña **Suscripciones**.
**nota**  
Para obtener más información sobre el carácter `$`, consulte [Temas reservados](https://docs.aws.amazon.com/iot/latest/developerguide/topics.html#reserved-topics).

1. <a name="enable-automatic-detection"></a>Asegúrese de que la detección automática está habilitada para que el núcleo de Greengrass pueda publicar una lista de sus direcciones IP. Los dispositivos de cliente usan esta información para descubrir el núcleo. Haga lo siguiente:

   1. En la página de configuración del grupo, elija la pestaña **Funciones de Lambda**.

   1. En **Funciones de Lambda del sistema**, elija **Detector IP** y, a continuación, seleccione **Editar**.

   1. En **Editar la configuración de IP detector**, seleccione **Detectar y anular automáticamente los puntos de conexión del agente MQTT** y, a continuación, seleccione **Guardar**.

1. Asegúrese de que el daemon de Greengrass esté en ejecución, tal y como se describe en [Implementación de configuraciones de nube en un dispositivo central](configs-core.md).

1. <a name="console-actions-deploy"></a>En la página de configuración de grupo, elija **Implementar**.

# Descargar los archivos necesarios
<a name="file-download"></a>

1. Si aún no lo ha hecho, instale el SDK para dispositivos con AWS IoT para Python. Para obtener instrucciones, consulte el paso 1 en [Instale el SDK para dispositivos con AWS IoT para Python](IoT-SDK.md).

   Los dispositivos cliente utilizan este SDK para comunicarse con los dispositivos AWS IoT Greengrass principales AWS IoT y con ellos.

1. Desde la carpeta de [ TrafficLight](https://github.com/aws/aws-greengrass-core-sdk-python/tree/master/examples/TrafficLight)ejemplos en GitHub adelante, descarga los `trafficLight.py` archivos `lightController.py` y a tu ordenador. Guárdelos en la carpeta que contiene los certificados y claves de los dispositivos TrafficLight cliente GG\$1Switch y GG\$1.

   El `lightController.py` script corresponde al dispositivo cliente GG\$1Switch y el `trafficLight.py` script corresponde al dispositivo cliente GG\$1. TrafficLight   
![\[Captura de pantalla de los archivos, incluidos los dos scripts Python y los certificados y claves del dispositivo.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-082.png)
**nota**  
Los archivos de Python de ejemplo se almacenan en el repositorio AWS IoT Greengrass Core SDK para Python por comodidad, pero no utilizan el AWS IoT Greengrass Core SDK.

# Probar las comunicaciones (sincronizaciones de dispositivos deshabilitadas)
<a name="comms-disabled"></a>

1. <a name="ping-device"></a>Asegúrese de que el ordenador y el dispositivo AWS IoT Greengrass principal estén conectados a Internet mediante la misma red.

   1. En el dispositivo AWS IoT Greengrass principal, ejecuta el siguiente comando para buscar su dirección IP.

      ```
      hostname -I
      ```

   1. En el equipo, ejecute el siguiente comando utilizando la dirección IP del dispositivo central. Puede utilizar Ctrl \$1 C para detener el comando **ping**.

      ```
      ping IP-address
      ```

      Un resultado similar al siguiente indica que la comunicación entre el ordenador y el dispositivo AWS IoT Greengrass principal se ha realizado correctamente (pérdida de paquetes del 0%):  
![\[Salida correcta del comando ping.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-075.5.png)
**nota**  
Si no puedes hacer ping a una EC2 instancia que se está ejecutando AWS IoT Greengrass, asegúrate de que las reglas del grupo de seguridad entrante de la instancia permitan el tráfico ICMP para los mensajes de [solicitud de Echo](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/security-group-rules-reference.html#sg-rules-ping). Para obtener más información, consulta [Cómo añadir reglas a un grupo de seguridad](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html#adding-security-group-rule) en la *Guía del EC2 usuario de Amazon*.  
En los ordenadores con sistema operativo Windows, en la aplicación Firewall de Windows con seguridad avanzada, puede que también tengas que activar una regla de entrada que permita las solicitudes de eco entrantes (por ejemplo, **compartir archivos e impresoras (Echo Request - ICMPv4 -In)**) o crear una.

1. Consigue tu terminal. AWS IoT 

   1. <a name="iot-settings"></a>En el panel de navegación de la [consola de AWS IoT](https://console.aws.amazon.com/iot/), seleccione **Configuración**.

   1. <a name="iot-settings-endpoint"></a>En **Punto de conexión de datos del dispositivo**, anote el valor del **punto de conexión**. Utilice este valor para reemplazar el *AWS\$1IOT\$1ENDPOINT* marcador de posición en los comandos en los pasos siguientes.
**nota**  
Asegúrese de que los [puntos de conexión se corresponden con su tipo de certificado](gg-core.md#certificate-endpoints).

1. <a name="repeated-step"></a>En su ordenador (no en el dispositivo AWS IoT Greengrass principal), abra dos ventanas de línea de [comandos (terminal o línea](https://en.wikipedia.org/wiki/Command-line_interface) de comandos). Una ventana representa el dispositivo cliente GG\$1Switch y la otra representa el dispositivo cliente GG\$1. TrafficLight 

   1. <a name="run-switch-device"></a>En la ventana del dispositivo de cliente GG\$1Switch, ejecute los comandos siguientes.
      + *path-to-certs-folder*Sustitúyala por la ruta a la carpeta que contiene los certificados, las claves y los archivos de Python.
      + *AWS\$1IOT\$1ENDPOINT*Sustitúyalo por tu punto final.
      + Sustituya las dos *switchCertId* instancias por el ID del certificado en el nombre de archivo de su dispositivo cliente GG\$1Switch.

      ```
      cd path-to-certs-folder
      python lightController.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert switchCertId-certificate.pem.crt --key switchCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_Switch
      ```

   1. <a name="run-trafficlight-device"></a>Desde la ventana del dispositivo TrafficLight cliente GG\$1, ejecuta los siguientes comandos.
      + *path-to-certs-folder*Sustitúyala por la ruta a la carpeta que contiene los certificados, las claves y los archivos de Python.
      + *AWS\$1IOT\$1ENDPOINT*Sustitúyalo por tu punto final.
      + Sustituya las dos *lightCertId* instancias por el ID del certificado en el nombre de archivo de su dispositivo TrafficLight cliente GG\$1.

      ```
      cd path-to-certs-folder
      python trafficLight.py --endpoint AWS_IOT_ENDPOINT --rootCA AmazonRootCA1.pem --cert lightCertId-certificate.pem.crt --key lightCertId-private.pem.key --thingName GG_TrafficLight --clientId GG_TrafficLight
      ```

      Cada 20 segundos, el interruptor actualiza el estado de sombra a los valores G, Y y R, y la luz mostrará su nuevo estado, tal que se muestra a continuación.

      Salida de GG\$1Switch:  
![\[Captura de pantalla de la salida asociada a GG_Switch.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-083.png)

      Salida GG\$1TrafficLight :  
![\[Captura de pantalla de la salida asociada a TrafficLight GG_.\]](http://docs.aws.amazon.com/es_es/greengrass/v1/developerguide/images/gg-get-started-084.png)

   Cuando se ejecuta por primera vez, cada script del dispositivo cliente ejecuta el servicio de AWS IoT Greengrass detección para conectarse al AWS IoT Greengrass núcleo (a través de Internet). Una vez que un dispositivo cliente haya descubierto y se haya conectado correctamente al AWS IoT Greengrass núcleo, las operaciones futuras se pueden ejecutar localmente.
**nota**  
<a name="check-connection-info"></a> Los scripts `lightController.py` y `trafficLight.py` almacenan información de conexión en la carpeta `groupCA`, que se crea en la misma carpeta que los scripts. Si recibe errores de conexión, asegúrese de que la dirección IP del archivo `ggc-host` coincide con el punto de conexión de la dirección IP de su núcleo.

1. En la AWS IoT consola, elija su AWS IoT Greengrass grupo, elija la pestaña **Dispositivos cliente** y, a continuación, elija **GG\$1 TrafficLight** para abrir la página de detalles del AWS IoT dispositivo cliente.

1. Seleccione la pestaña **Sombras de dispositivo.** Después de que el GG\$1Switch cambie de estado, no debería haber ninguna actualización de esta sombra. Esto se debe a que el GG\$1 TrafficLight está configurado para **deshabilitar la sincronización oculta con** la nube.

1. Pulse Ctrl \$1 C en la ventana del dispositivo de cliente GG\$1Switch (`lightController.py`). Deberías ver que la ventana GG\$1 TrafficLight (`trafficLight.py`) deja de recibir mensajes de cambio de estado.

   Mantenga estas ventanas abiertas para que pueda ejecutar los comandos de la siguiente sección.

# Probar las comunicaciones (sincronizaciones de dispositivos habilitadas)
<a name="comms-enabled"></a>

Para esta prueba, configuras la sombra del TrafficLight dispositivo GG\$1 con la que se sincronizará. AWS IoT Para ello, tendrá que ejecutar los mismos comandos que en la prueba anterior, pero esta vez el estado de la sombra en la nube se actualizará cuando GG\$1Switch envíe una solicitud de actualización.

1. En la AWS IoT consola, selecciona tu AWS IoT Greengrass grupo y, a continuación, selecciona la pestaña **Dispositivos cliente**.

1. Selecciona el TrafficLight dispositivo GG\$1, selecciona **Sincronizar sombra** y, a continuación, selecciona **Activar sincronización oculta con la nube**.

   Debería recibir una notificación de que se ha actualizado el estado de sincronización de la sombra de dispositivo.

1. <a name="console-actions-deploy"></a>En la página de configuración de grupo, elija **Implementar**.

1. [En las dos ventanas de línea de comandos, ejecuta los comandos de la prueba anterior para los dispositivos cliente [GG\$1Switch y GG\$1](comms-disabled.md#run-switch-device). TrafficLight](comms-disabled.md#run-trafficlight-device)

1. Ahora, comprueba el estado de sombra en la consola. AWS IoT Elija su AWS IoT Greengrass grupo, elija la pestaña **Dispositivos cliente**, elija **GG\$1 TrafficLight**, elija la pestaña **Device Shadows** y, a continuación, elija **Classic Shadow**.

   Como has activado la sincronización de la TrafficLight sombra GG\$1 AWS IoT, el estado de la sombra en la nube debería actualizarse siempre que GG\$1Switch envíe una actualización. Esta funcionalidad puede usarse para exponer el estado de un dispositivo de cliente en AWS IoT.
**nota**  
Si es necesario, puedes solucionar los problemas consultando los registros AWS IoT Greengrass principales, en particular: `runtime.log`  

   ```
   cd /greengrass/ggc/var/log
   sudo cat system/runtime.log | more
   ```
 También puede ver `GGShadowSyncManager.log` y `GGShadowService.log`. Para obtener más información, consulte [Solución de problemas AWS IoT Greengrass](gg-troubleshooting.md). 

Mantenga los dispositivos de cliente y las suscripciones configurados. Los usará en el módulo siguiente. También puede ejecutar los mismos comandos.