

# Gestionar la comunicación entre los dispositivos LoRaWAN y AWS IoT
<a name="lorawan-device-cloud-communication"></a>

Una vez que haya conectado su dispositivo LoRaWAN con AWS IoT Core para LoRaWAN, sus dispositivos pueden empezar a enviar mensajes a la nube. Los mensajes de enlace ascendente son mensajes que se envían desde su dispositivo y que son recibidos por AWS IoT Core para LoRaWAN. Sus dispositivos LoRaWAN pueden enviar mensajes de enlace ascendente en cualquier momento, que luego se reenvían a Servicio de AWS y a otras aplicaciones alojadas en la nube. Los mensajes que se envían desde AWS IoT Core para LoRaWAN y otros Servicio de AWS y aplicaciones a sus dispositivos se denominan mensajes de enlace descendente.

A continuación, se muestra cómo puede ver y administrar los mensajes de enlace ascendente y descendente que se envían entre sus dispositivos y la nube. Puede mantener una cola de mensajes de enlace descendente y enviarlos a sus dispositivos en el orden en que se agregaron a la cola.

**Topics**
+ [Ver el formato de los mensajes de enlace ascendente enviados desde dispositivos LoRaWAN](lorawan-uplink-metadata-format.md)
+ [Colocar en cola los mensajes de enlace descendente para enviarlos a dispositivos LoRaWAN](lorawan-downlink-queue.md)

# Ver el formato de los mensajes de enlace ascendente enviados desde dispositivos LoRaWAN
<a name="lorawan-uplink-metadata-format"></a>

Una vez que haya conectado su dispositivo LoRaWAN a AWS IoT Core para LoRaWAN, podrá observar el formato del mensaje de enlace ascendente que recibirá de su dispositivo inalámbrico.

## Para poder observar los mensajes de enlace ascendente
<a name="lorawan-uplink-metadata-prerequisites"></a>

Debe tener incorporado el dispositivo inalámbrico y haberlo conectado para que AWS IoT pueda transmitir y recibir datos. Para obtener información sobre cómo incorporar su dispositivo a AWS IoT Core para LoRaWAN, consulte [Incorporar dispositivos a AWS IoT Core para LoRaWAN](lorawan-onboard-end-devices.md).

## ¿Qué contienen los mensajes de enlace ascendente?
<a name="lorawan-uplink-metadata-contains"></a>

Los dispositivos LoRaWAN se conectan a AWS IoT Core para LoRaWAN mediante puertas de enlace LoRaWAN. El mensaje de enlace ascendente que reciba del dispositivo contendrá la siguiente información.
+ Datos de carga que corresponden al mensaje de carga cifrado que se envía desde el dispositivo inalámbrico.
+ Metadatos inalámbricos que incluyen:
  + Información del dispositivo, como DevEui, la velocidad de datos y el canal de frecuencia en el que funciona el dispositivo.
  + Parámetros adicionales opcionales e información de puerta de enlace para las puertas de enlace que están conectadas al dispositivo. Los parámetros de la puerta de enlace incluyen el EUI, la SNR y el RSSi de la puerta de enlace.

  Al utilizar los metadatos inalámbricos, puede obtener información útil sobre el dispositivo inalámbrico y los datos que se transmiten entre su dispositivo y AWS IoT. Por ejemplo, puede utilizar el parámetro `AckedMessageId` para comprobar si el dispositivo ha recibido el último mensaje de enlace descendente confirmado. De forma opcional, si decide incluir la información de la puerta de enlace, puede identificar si desea cambiar a un canal de puerta de enlace más potente que esté más cerca del dispositivo.

## ¿Cómo observar los mensajes de enlace ascendente?
<a name="lorawan-uplink-metadata-observe"></a>

Una vez que haya incorporado su dispositivo, puede usar el [cliente de prueba MQTT](https://console.aws.amazon.com/iot/home#/test) de la página **Pruebas** de la consola de AWS IoT para suscribirse al tema que especificó al crear su destino. Empezará a ver los mensajes cuando el dispositivo esté conectado y comience a enviar datos de carga.

Este diagrama identifica los elementos clave de un sistema LoRaWAN conectado con AWS IoT Core para LoRaWAN, y muestra el plano de datos principal y cómo fluyen los datos a través del sistema.

![\[Imagen que muestra cómo AWS IoT Core para LoRaWAN transfiere los datos desde un dispositivo inalámbrico hasta AWS IoT y otros servicios.\]](http://docs.aws.amazon.com/es_es/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


Cuando el dispositivo inalámbrico comienza a enviar datos de enlace ascendente, AWS IoT Core para LoRaWAN agrupa la información de los metadatos inalámbricos con la carga y, a continuación, la envía a sus aplicaciones de AWS.

## Ejemplo de mensaje de enlace ascendente
<a name="lorawan-uplink-metadata-example"></a>

En el ejemplo siguiente se muestra el formato del mensaje de enlace ascendente recibido del dispositivo.

```
{
    "WirelessDeviceId": "5b58245e-146c-4c30-9703-0ca942e3ff35", 
    "PayloadData": "Cc48AAAAAAAAAAA=",    
    "WirelessMetadata":
    {
        "LoRaWAN":
        {
            "ADR": false,
            "Bandwidth": 125,
            "ClassB": false,
            "CodeRate": "4/5",
            "DataRate": "0",
            "DevAddr": "00b96cd4",
            "DevEui": "58a0cb000202c99",            
            "FOptLen": 2,
            "FCnt": 1,
            "Fport": 136,   
            "Frequency": "868100000",     
            "Gateways": [
             {
                    "GatewayEui": "80029cfffe5cf1cc",      
                    "Snr": -29,
                    "Rssi": 9.75
             }
             ],  
            "MIC": "7255cb07",  
            "MType": "UnconfirmedDataUp",
            "Major": "LoRaWANR1",
            "Modulation": "LORA", 
            "PolarizationInversion": false,    
            "SpreadingFactor": 12,                         
            "Timestamp": "2021-05-03T03:24:29Z"
            
        }
    }
}
```

### Excluir los metadatos de la puerta de enlace de los metadatos del enlace ascendente
<a name="lorawan-uplink-metadata-example2"></a>

Si desea excluir la información de los metadatos de la puerta de enlace de los metadatos del enlace ascendente, deshabilite el parámetro **AddGwMetadata** al crear el perfil de servicio. Para obtener información acerca de este parámetro, consulte [Agregar perfiles de servicio](lorawan-define-profiles.md#lorawan-service-profiles).

En este caso, no verá la sección `Gateways` en los metadatos del enlace ascendente, como se ilustra en el siguiente ejemplo.

```
{  
    "WirelessDeviceId": "0d9a439b-e77a-4573-a791-49d5c0f4db95",
    "PayloadData": "AAAAAAAA//8=",
    "WirelessMetadata": {
        "LoRaWAN": {
            "ClassB": false,
            "CodeRate": "4/5",
            "DataRate": "1",
            "DevAddr": "01920f27",
            "DevEui": "ffffff10000163b0",
            "FCnt": 1,
            "FPort": 5,
            "Timestamp": "2021-04-29T05:19:43.646Z"
    }
  }
}
```

# Colocar en cola los mensajes de enlace descendente para enviarlos a dispositivos LoRaWAN
<a name="lorawan-downlink-queue"></a>

Las aplicaciones alojadas en la nube y otros Servicio de AWS pueden enviar mensajes de enlace descendente a sus dispositivos inalámbricos. Los mensajes de enlace descendente son mensajes que se envían desde AWS IoT Core para LoRaWAN hasta su dispositivo inalámbrico. Puedes programar y enviar mensajes de enlace descendente para cada dispositivo que haya conectado a AWS IoT Core para LoRaWAN.

Si tiene varios dispositivos a los que desea enviar un mensaje de enlace descendente, puede usar un grupo de multidifusión. Los dispositivos de un grupo de multidifusión comparten la misma dirección de multidifusión, que luego se distribuye a todo un grupo de dispositivos receptores. Para obtener más información, consulte [Crear grupos de multidifusión para enviar una carga de enlace descendente a varios dispositivos](lorawan-multicast-groups.md). 

## Cómo funciona una cola de mensajes de enlace descendente
<a name="lorawan-how-downlink-works"></a>

La clase de dispositivo de su dispositivo LoRaWAN determina cómo se envían los mensajes de la cola al dispositivo. Los dispositivos de clase A envían un mensaje de enlace ascendente a AWS IoT Core para LoRaWAN para indicar que el dispositivo está disponible para recibir mensajes de enlace descendente. Los dispositivos de clase B pueden recibir mensajes en las ranuras de enlace descendente normales. Los dispositivos de clase C pueden recibir mensajes de enlace descendente en cualquier momento. Para obtener más información acerca de las clases de precios, consulte [Clases de dispositivos](lorawan-manage-end-devices.md#lorawan-device-classes).

A continuación, se muestra cómo se ponen en cola los mensajes y cómo se envían a los dispositivos de clase A.

1. AWS IoT Core para LoRaWAN almacena en búfer el mensaje de enlace descendente que ha agregado a la cola con el puerto de marco, los datos de carga y los parámetros del modo de confirmación que especificó mediante la consola de AWS IoT o la API de AWS IoT Wireless.

1. El dispositivo LoRaWAN envía un mensaje de enlace ascendente para indicar que está en línea y que puede empezar a recibir mensajes de enlace descendente.

1. Si ha agregado más de un mensaje de enlace descendente a la cola, AWS IoT Core para LoRaWAN envía el primer mensaje de enlace descendente de la cola a su dispositivo con el indicador de confirmación (ACK) activado.

1. El dispositivo envía un mensaje de enlace ascendente a AWS IoT Core para LoRaWAN inmediatamente o permanece en reposo hasta el siguiente mensaje de enlace ascendente e incluye el indicador ACK en el mensaje.

1. Cuando AWS IoT Core para LoRaWAN recibe el mensaje de enlace ascendente con el indicador ACK, borra el mensaje de enlace descendente de la cola, lo que indica que el dispositivo ha recibido correctamente el mensaje de enlace descendente. Si el indicador ACK no aparece en el mensaje de enlace ascendente después de comprobarlo tres veces, el mensaje se descarta.

## Realizar operaciones de cola de enlace descendente mediante la consola
<a name="lorawan-downlink-queue-console"></a>

Puede utilizar Consola de administración de AWS para poner en cola los mensajes de enlace descendente y borrar mensajes individuales o toda la cola, según sea necesario. En el caso de los dispositivos de clase A, después de recibir un enlace ascendente del dispositivo para indicar que está en línea, los mensajes en cola se envían al dispositivo. Una vez enviado el mensaje, se borra automáticamente de la cola.

**Poner en cola los mensajes de enlace descendente**  
Para crear una cola de mensajes de enlace descendente

1. Vaya a la [central de dispositivos de la consola de AWS IoT](https://console.aws.amazon.com/iot/home#/wireless/devices) y elija el dispositivo para el que desea poner en cola los mensajes de enlace descendente.

1. En la sección **Mensajes de enlace descendente** de la página de detalles del dispositivo, seleccione **Poner en cola los mensajes de enlace descendente**.

1. Especifique los siguientes parámetros para configurar el mensaje de enlace descendente:
   + **FPort**: elija el puerto de marco para que el dispositivo se comunique con AWS IoT Core para LoRaWAN.
   + **Carga**: especifique el mensaje de carga que desea enviar al dispositivo. El tamaño de carga máximo es de 242 MB. Si la velocidad de datos adaptativa (ADR) está habilitada, AWS IoT Core para LoRaWAN la usa para elegir la velocidad de datos óptima para el tamaño de la carga. Puede optimizar aún más la velocidad de datos según sea necesario.
   + **Modo de reconocimiento**: confirme si su dispositivo ha recibido el mensaje de enlace descendente. Si un mensaje requiere este modo, verá un mensaje de enlace ascendente con el indicador ACK en su flujo de datos y el mensaje se borrará de la cola.

1. Para agregar su mensaje de enlace descendente a la cola, seleccione **Enviar**.

El mensaje de enlace descendente ya se ha agregado a la cola. Si no ve el mensaje o recibe un error, puede solucionar el error tal y como se describe en [Solucionar los errores de la cola de mensajes del enlace descendente](#lorawan-downlink-queue-troubleshoot). 

**nota**  
Una vez que el mensaje de enlace descendente se haya agregado a la cola, no podrá editar los parámetros **FPort**, **Carga** ni **Modo de reconocimiento**. Para enviar un mensaje de enlace descendente con valores diferentes para estos parámetros, puede eliminar este mensaje y poner en cola un nuevo mensaje de enlace descendente con los valores de los parámetros actualizados.

La cola muestra los mensajes de enlace descendente que ha agregado. Para ver la carga de los mensajes de enlace ascendente y descendente que se intercambian entre sus dispositivos y AWS IoT Core para LoRaWAN, puede utilizar el analizador de redes. Para obtener más información, consulte [Supervisión de su flota de recursos inalámbricos en tiempo real mediante un analizador de redes](network-analyzer-overview.md).

**Enumerar la cola de mensajes de enlace descendente**  
El mensaje de enlace descendente que ha creado se agrega a la cola. Cada mensaje de enlace descendente posterior se agrega a la cola después de este mensaje. Puede ver una lista de los mensajes de enlace descendente en la sección **Mensajes de enlace descendente** de la página de detalles del dispositivo. Tras recibir un enlace ascendente, los mensajes se envían al dispositivo. Una vez que el dispositivo reciba un mensaje de enlace descendente, se eliminará de la cola. A continuación, el siguiente mensaje pasará a una posición superior en la lista para enviarse a su dispositivo.

**Eliminar mensajes individuales de enlace descendente o borrar toda la cola**  
Cada mensaje de enlace descendente se borra automáticamente de la cola después de enviarse a su dispositivo. También puede eliminar mensajes individuales o borrar toda la cola de enlaces descendentes. Estas acciones no se pueden deshacer.
+ Si encuentra mensajes en la cola que no quiere enviar, selecciónelos y elija **Eliminar**.
+ Si no desea enviar ningún mensaje de la cola a su dispositivo, puede borrar toda la cola seleccionando **Borrar cola de enlaces descendentes**.

## Realizar operaciones de cola de enlace descendente mediante la API
<a name="lorawan-downlink-queue-api"></a>

Puede usar la API de AWS IoT Wireless para poner en cola los mensajes de enlace descendente y borrar mensajes individuales o toda la cola, según sea necesario.

**Poner en cola los mensajes de enlace descendente**  
Para crear una cola de mensajes de enlace descendente, utilice la operación de API [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_SendDataToWirelessDevice.html) o el comando de CLI [cli/latest/reference/iotwireless/send-data-to-wireless-device.html](cli/latest/reference/iotwireless/send-data-to-wireless-device.html).

```
aws iotwireless send-data-to-wireless-device \
    --id "11aa5eae-2f56-4b8e-a023-b28d98494e49" \
    --transmit-mode "1" \
    --payload-data "SGVsbG8gVG8gRGV2c2lt" \
    --wireless-metadata LoRaWAN={FPort=1}
```

El resultado de la ejecución de este comando genera un `MessageId` para el mensaje de enlace descendente. En algunos casos, incluso si recibe el `MessageId`, los paquetes pueden descartarse. Para obtener más información acerca de cómo resolver este error, consulte [Solucionar los errores de la cola de mensajes del enlace descendente](#lorawan-downlink-queue-troubleshoot).

```
{
    MessageId: "6011dd36-0043d6eb-0072-0008"
}
```

**Enumerar los mensajes de enlace descendente de la cola**  
Para enumerar todos los mensajes de enlace descendente de la cola, utilice la operación de API [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListQueuedMessages.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_ListQueuedMessages.html) o el comando de CLI [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-queued-messages.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/list-queued-messages.html).

```
aws iotwireless list-queued-messages
```

De forma predeterminada, se muestran un máximo de 10 mensajes de enlace descendente al ejecutar este comando.

**Eliminar los mensajes de enlace descendente individuales o borrar toda la cola**  
Para eliminar mensajes individuales de la cola o para borrar toda la cola, utilice la operación de API [https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteQueuedMessages.html](https://docs.aws.amazon.com/iot-wireless/2020-11-22/apireference/API_DeleteQueuedMessages.html) o el comando de CLI [https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-queued-messages.html](https://docs.aws.amazon.com/cli/latest/reference/iotwireless/delete-queued-messages.html).
+ Para eliminar mensajes individuales, introduzca el `messageID` de los mensajes que desee eliminar de su dispositivo inalámbrico, especificados por el `wirelessDeviceId`.
+ Para borrar toda la cola de enlaces descendentes, especifique `messageID` como `*` para su dispositivo inalámbrico, según el `wirelessDeviceId`.

## Solucionar los errores de la cola de mensajes del enlace descendente
<a name="lorawan-downlink-queue-troubleshoot"></a>

Estas son algunas cosas que debe comprobar si no ve los resultados esperados:
+ 

**Los mensajes de enlace descendente no aparecen en la consola de AWS IoT**  
Si el mensaje de enlace descendente no aparece en la cola después de agregarlo tal y como se describe en [Realizar operaciones de cola de enlace descendente mediante la consola](#lorawan-downlink-queue-console), es posible que el dispositivo no haya completado un proceso denominado *procedimiento de activación * o *unión*. Este procedimiento se completará cuando el dispositivo se incorpore con AWS IoT Core para LoRaWAN. Para obtener más información, consulte [Agregar las especificaciones de un dispositivo inalámbrico a AWS IoT Core para LoRaWAN con la consola](lorawan-end-devices-add.md#lorawan-end-device-spec-console).

  Tras incorporar el dispositivo a AWS IoT Core para LoRaWAN, puede supervisarlo para comprobar si la conexión y la reconexión se han realizado correctamente mediante el analizador de redes o Amazon CloudWatch. Para obtener más información, consulte [Herramientas de monitoreo](monitoring-cloudwatch.md#monitoring-tools).
+ 

**Faltan paquetes de mensajes de enlace descendente al utilizar la API**  
Cuando utiliza la operación de API `SendDataToWirelessDevice`, la API devuelve un valor `MessageId` único. Sin embargo, no puede confirmar si su dispositivo LoRaWAN ha recibido el mensaje de enlace descendente. Los paquetes de enlace descendente pueden descartarse en casos como cuando el dispositivo no ha completado el procedimiento de unión. Para obtener más información acerca de cómo resolver este error, consulte la sección anterior.
+ 

**Falta el error de ARN al enviar un mensaje de enlace descendente**  
Al enviar un mensaje de enlace descendente a su dispositivo desde la cola, puede recibir un error de que falta el nombre de recurso de Amazon (ARN). Este error puede deberse a que no se especificó correctamente el destino del dispositivo que recibe el mensaje de enlace descendente. Para corregir este error, compruebe los detalles del destino del dispositivo.