

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.

# Retener el estado del dispositivo mientras el dispositivo está fuera de línea con Device Shadows
<a name="iot-shadows-tutorial"></a>

Estos tutoriales muestran cómo usar el servicio AWS IoT Device Shadow para almacenar y actualizar la información de estado de un dispositivo. El documento Shadow, que es un documento JSON, muestra el cambio en el estado del dispositivo en función de los mensajes publicados por un dispositivo, una aplicación local o un servicio. En este tutorial, el documento de sombra muestra el cambio en el color de una bombilla. Estos tutoriales también muestran cómo la sombra almacena esta información incluso cuando el dispositivo está desconectado de Internet y le devuelve la información de estado más reciente cuando vuelve a conectarse y solicita esta información.

Le recomendamos que pruebe estos tutoriales en el orden en que se muestran aquí, empezando por los recursos AWS IoT que necesita para crearlos y la configuración de hardware necesaria, lo que también le ayudará a aprender los conceptos de forma gradual. Estos tutoriales muestran cómo configurar y conectar un dispositivo Raspberry Pi para usarlo con AWS IoT. Si no dispone del hardware necesario, puede seguir estos tutoriales adaptándolos al dispositivo que prefiera o [creando un dispositivo virtual con Amazon EC2](creating-a-virtual-thing.md).

**Información general del escenario del tutorial**  
El escenario de estos tutoriales es una aplicación o un servicio local que cambia el color de una bombilla y publica sus datos en temas ocultos reservados. Estos tutoriales son similares a la funcionalidad Device Shadow descrita en el [tutorial interactivo de introducción](interactive-demo.md) y se implementan en un dispositivo Raspberry Pi. Los tutoriales de esta sección se centran en una única sombra clásica y, al mismo tiempo, muestran cómo se pueden acomodar sombras con nombres o varios dispositivos.

Los siguientes tutoriales le ayudarán a aprender a usar el servicio AWS IoT Device Shadow.
+ 

**[Tutorial: Cómo preparar la Raspberry Pi para ejecutar la aplicación shadow](create-resources-shadow.md)**  
Este tutorial muestra cómo configurar un dispositivo Raspberry Pi para conectarse con él AWS IoT. También crearás un documento de AWS IoT política y un recurso de cosa, descargarás los certificados y, a continuación, adjuntarás la política a ese recurso de cosa. Para completar este tutorial se necesitan aproximadamente 30 minutos.
+ 

**[Tutorial: Instalación del SDK del dispositivo y ejecución de la aplicación de ejemplo para Device Shadows](lightbulb-shadow-application.md)**  
En este tutorial se muestra cómo instalar las herramientas, el software y el SDK del AWS IoT dispositivo para Python necesarios y, a continuación, ejecutar la aplicación alternativa de ejemplo. Este tutorial se basa en los conceptos presentados en [Conexión de una Raspberry Pi u otro dispositivo](connecting-to-existing-device.md) y tarda 20 minutos en completarse.
+ 

**[Tutorial: Interactuar con Device Shadow mediante la aplicación de ejemplo y el cliente de pruebas MQTT](interact-lights-device-shadows.md)**  
En este tutorial se muestra cómo utilizar la aplicación y la **AWS IoT consola de `shadow.py` ejemplo ** para observar la interacción entre las sombras del AWS IoT dispositivo y los cambios de estado de la bombilla. El tutorial también muestra cómo enviar mensajes MQTT a los temas reservados de Device Shadow. Para completar este tutorial se necesitan aproximadamente 45 minutos.

**AWS IoT Descripción general de Device Shadow**  
Una sombra de dispositivos es una representación virtual y persistente de un dispositivo que se administra mediante un [ recurso ](iot-thing-management.md) que se crea en el AWS IoT registro. El documento Shadow es un JSON o un documento de JavaScript notación que se utiliza para almacenar y recuperar la información de estado actual de un dispositivo. Puede utilizar la sombra para obtener y establecer el estado de un dispositivo a través de temas MQTT o API REST HTTP, independientemente de si el dispositivo está conectado a Internet.

Un documento Shadow contiene una propiedad `state` 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 estado informado en el `delta` objeto.

He aquí un ejemplo de documento de estado en Shadow.

```
{
  "state": {
    "desired": {
      "color": "green"
      },
    "reported": {
      "color": "blue"
      },
    "delta": {
      "color": "green"
      }
   }
}
```

Para actualizar el documento Shadow de un dispositivo, puede utilizar los [temas reservados de MQTT](reserved-topics.md#reserved-topics-shadow), las [API de REST de Device Shadow](device-shadow-rest-api.md) que admiten las operaciones `GET`, `UPDATE` y `DELETE` con HTTP y y la [CLI AWS IoT](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/iot-data/index.html).

En el ejemplo anterior, supongamos que desea cambiar el color `desired` a `yellow`. Para ello, envía una solicitud a la API [UpdateThingShadow](device-shadow-rest-api.md#API_UpdateThingShadow) o publica un mensaje en el tema [Actualizar](device-shadow-mqtt.md#update-pub-sub-topic), `$aws/things/THING_NAME/shadow/update`.

```
{
  "state": {
    "desired": {
      "color": yellow
    }
  }
}
```

Las actualizaciones afectan únicamente a los campos especificados en la solicitud. Tras actualizar correctamente el Device Shadow, AWS IoT publica el nuevo `desired` estado del `delta` tema,`$aws/things/THING_NAME/shadow/delta`. El documento Shadow en este caso tiene este aspecto:

```
{
  "state": {
    "desired": {
      "color": yellow
    },
    "reported": {
      "color": green
    },
    "delta": {
      "color": yellow
      }
  }
}
```

Luego, el nuevo estado se informa al AWS IoT Device Shadow utilizando el `Update` tema `$aws/things/THING_NAME/shadow/update` con el siguiente mensaje JSON: 

```
{
  "state": {
    "reported": {
      "color": yellow
    }
  }
}
```

Si desea obtener la información sobre el estado actual, envíe una solicitud a la API [GetThingShadow](device-shadow-rest-api.md#API_GetThingShadow) o publique un mensaje MQTT en el tema [Obtener](device-shadow-mqtt.md#get-pub-sub-topic), `$aws/things/THING_NAME/shadow/get`.

Para obtener más información sobre el uso del servicio Device Shadow, consulte [AWS IoT Servicio Device Shadow](iot-device-shadows.md).

Para obtener más información sobre el uso de Device Shadows en dispositivos, aplicaciones y servicios, consulte [Uso de sombras en dispositivos](device-shadow-comms-device.md) y [Uso de sombras en aplicaciones y servicios](device-shadow-comms-app.md).

Para obtener información sobre la interacción con AWS IoT las sombras, consulte[Interacción con sombras](device-shadow-data-flow.md).

Para obtener información sobre los temas reservados de MQTT y las API REST de HTTP, consulte [Temas MQTT de sombra de dispositivo](device-shadow-mqtt.md) y [API REST de sombra de dispositivo](device-shadow-rest-api.md).