

# Gerenciar a comunicação entre os dispositivos LoRaWAN e o AWS IoT
<a name="lorawan-device-cloud-communication"></a>

Após conectar um dispositivo LoRaWAN ao AWS IoT Core for LoRaWAN, os dispositivos podem começar a enviar mensagens para a nuvem. As mensagens de uplink são mensagens enviadas pelo seu dispositivo e recebidas pelo AWS IoT Core for LoRaWAN. Dispositivos LoRaWAN podem enviar mensagens de uplink a qualquer momento, que são então encaminhadas para outros AWS service (Serviço da AWS) e aplicativos hospedados na nuvem. Mensagens enviadas do AWS IoT Core for LoRaWAN e outros AWS service (Serviço da AWS) e aplicativos para seus dispositivos são chamadas de mensagens de downlink.

Veja a seguir como é possível visualizar e gerenciar mensagens de uplink e downlink enviadas entre os seus dispositivos e a nuvem. É possível manter uma fila de mensagens de downlink e enviá-las para seus dispositivos na ordem em que elas foram adicionadas à fila.

**Topics**
+ [Visualizar o formato das mensagens de uplink enviadas a partir de dispositivos LoRaWAN](lorawan-uplink-metadata-format.md)
+ [Formar uma fila de mensagens de downlink para enviar para dispositivos LoRaWAN](lorawan-downlink-queue.md)

# Visualizar o formato das mensagens de uplink enviadas a partir de dispositivos LoRaWAN
<a name="lorawan-uplink-metadata-format"></a>

Após conectar um dispositivo LoRaWAN ao AWS IoT Core for LoRaWAN, é possível observar o formato da mensagem de uplink que você receberá do seu dispositivo sem fio.

## Antes de poder observar as mensagens de uplink
<a name="lorawan-uplink-metadata-prerequisites"></a>

É preciso ter integrado seu dispositivo sem fio e conectado seu dispositivo ao AWS IoT para que ele possa transmitir e receber dados. Para acessar informações sobre a integração de dispositivos ao AWS IoT Core for LoRaWAN, consulte [Integrar os dispositivos ao AWS IoT Core for LoRaWAN](lorawan-onboard-end-devices.md).

## O que contêm as mensagens de uplink?
<a name="lorawan-uplink-metadata-contains"></a>

Dispositivos LoRaWAN se conectam ao AWS IoT Core for LoRaWAN usando gateways LoRaWAN. A mensagem de uplink recebido do dispositivo conterá as seguintes informações.
+ Dados de carga que correspondem à mensagem criptografada de carga enviada a partir do dispositivo sem fio.
+ Metadados sem fio que englobam:
  + Informações do dispositivo, como DevEui, taxa de dados e canal de frequência no qual o dispositivo está operando.
  + Parâmetros adicionais opcionais e informações de gateway sobre gateways conectados ao dispositivo. Os parâmetros do gateway abrangem o EUI do gateway, o SNR e o RSSi.

  Usando os metadados sem fio, é possível obter informações úteis sobre o dispositivo sem fio e os dados transmitidos entre seu dispositivo e o AWS IoT. Por exemplo, é possível usar o parâmetro `AckedMessageId` para verificar se a última mensagem de downlink confirmada foi recebida pelo dispositivo. Opcionalmente, se você optar por incluir as informações de gateway, será possível identificar se deseja mudar para um canal de gateway mais forte que esteja mais próximo do dispositivo.

## Como fazer para observar as mensagens de uplink?
<a name="lorawan-uplink-metadata-observe"></a>

Após integrar seu dispositivo, é possível usar o [cliente de teste MQTT](https://console.aws.amazon.com/iot/home#/test) na página **Teste** do console do AWS IoT para assinar o tópico que foi especificado ao criar seu destino. Você passará a ver mensagens depois que o dispositivo estiver conectado e começar a enviar dados de carga.

O diagrama a seguir identifica os principais elementos em um sistema LoRaWAN conectado ao AWS IoT Core for LoRaWAN, que mostra o plano de dados primário e como os dados fluem pelo sistema.

![\[Imagem exibindo como os dados do AWS IoT Core for LoRaWAN são transmitidos a partir de um dispositivo sem fio para o AWS IoT e outros serviços.\]](http://docs.aws.amazon.com/pt_br/iot-wireless/latest/developerguide/images/iot-lorawan-data-flow.png)


Quando o dispositivo sem fio começa a enviar dados de uplink, o AWS IoT Core for LoRaWAN agrupa as informações de metadados sem fio com a carga e as envia para seus aplicativos da AWS.

## Exemplo de mensagem de uplink
<a name="lorawan-uplink-metadata-example"></a>

O exemplo a seguir exibe o formato da mensagem de uplink recebida do seu 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"
            
        }
    }
}
```

### Exclusão de metadados do gateway dos metadados de uplink
<a name="lorawan-uplink-metadata-example2"></a>

Se quiser excluir as informações de metadados do gateway dos metadados de uplink, desative o parâmetro **AddGwMetadata** quando criar o perfil de serviço. Para acessar informações sobre como desabilitar esse parâmetro, consulte [Adicionar perfis de serviço](lorawan-define-profiles.md#lorawan-service-profiles).

Nesse caso, você não verá a seção `Gateways` nos metadados de uplink, como ilustrado no exemplo a seguir.

```
{  
    "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"
    }
  }
}
```

# Formar uma fila de mensagens de downlink para enviar para dispositivos LoRaWAN
<a name="lorawan-downlink-queue"></a>

Aplicações hospedadas na nuvem e outros AWS service (Serviço da AWS)s podem enviar mensagens de downlink para os seus dispositivos sem fio. Mensagens de downlink são mensagens enviadas a partir do AWS IoT Core for LoRaWAN para o seu dispositivo sem fio. É possível agendar e enviar mensagens de downlink para cada dispositivo que você integrou ao AWS IoT Core for LoRaWAN.

Se tiver múltiplos dispositivos para os quais deseja enviar uma mensagem de downlink, é possível usar um grupo de multicast. Os dispositivos de um grupo de multicast compartilham o mesmo endereço multicast, que é, então, distribuído para um todo um grupo de dispositivos destinatários. Para ter mais informações, consulte [Crie grupos de multicast para enviar uma carga de downlink para vários dispositivos](lorawan-multicast-groups.md). 

## Como uma fila de mensagens de downlink funciona
<a name="lorawan-how-downlink-works"></a>

A classe de dispositivo de um dispositivo LoRaWAN determina como as mensagens da fila são enviadas para o dispositivo. Dispositivos de classe A enviam uma mensagem de uplink ao AWS IoT Core for LoRaWAN para indicar que o dispositivo está disponível para recebimento de mensagens de downlink. Os dispositivos de classe B podem receber mensagens em slots de downlink regulares. Os dispositivos de classe C podem receber mensagens de downlink a qualquer momento. Para acessar mais informações sobre classes de dispositivos, consulte [Classes de dispositivos](lorawan-manage-end-devices.md#lorawan-device-classes).

O seguinte mostra como as mensagens são colocadas em fila e enviadas para seus dispositivos de classe A.

1. O AWS IoT Core for LoRaWAN armazena em buffer a mensagem de downlink que você adicionou à fila com a porta do quadro, os dados da carga e os parâmetros do modo de reconhecimento especificados com o console do AWS IoTou a API do AWS IoT Wireless.

1. O dispositivo LoRaWAN envia uma mensagem de uplink indicando que ele está on-line e pode começar a receber mensagens de downlink.

1. Caso você tenha adicionado mais de uma mensagem de downlink à fila, o AWS IoT Core for LoRaWAN envia a primeira mensagem de downlink na fila para o seu dispositivo com o sinalizador de reconhecimento (ACK) definido.

1. Seu dispositivo envia uma mensagem de uplink para o AWS IoT Core for LoRaWAN imediatamente ou permanece inativo até a próxima mensagem de uplink e inclui o sinalizador ACK na mensagem.

1. Quando o AWS IoT Core for LoRaWAN recebe a mensagem de uplink com o sinalizador ACK, ele retira a mensagem de downlink da fila, indicando que o seu dispositivo recebeu a mensagem de downlink com êxito. Se o sinalizador ACK estiver ausente da mensagem de uplink após três verificações, a mensagem será descartada.

## Executar operações de fila de downlink com o console
<a name="lorawan-downlink-queue-console"></a>

É possível usar o Console de gerenciamento da AWS para enfileirar mensagens de downlink e retirar mensagens individuais, ou toda a fila, conforme necessário. Com dispositivos de classe A, após um uplink ser recebido do dispositivo para indicar que ele está on-line, as mensagens em fila são enviadas para o dispositivo. Depois que a mensagem for enviada, ela será automaticamente removida da fila.

**Colocar mensagens de downlink em fila**  
Para criar uma fila de mensagens de downlink

1. Acesse o [hub Dispositivos do console do AWS IoT](https://console.aws.amazon.com/iot/home#/wireless/devices) e selecione o dispositivo para o qual deseja enfileirar mensagens de downlink.

1. Na seção **Mensagens de downlink** da página de detalhes do dispositivo, selecione **Enfileirar mensagens de downlink**.

1. Especifique os parâmetros a seguir para configurar sua mensagem de downlink:
   + **FPort**: selecione a porta do quadro usada pelo dispositivo para comunicação como o AWS IoT Core for LoRaWAN.
   + **Carga**: especifique a mensagem de carga que deseja enviar para o seu dispositivo. O tamanho máximo da carga é de 242 bytes. Se a taxa de dados adaptativa (ADR) estiver ativada, o AWS IoT Core for LoRaWAN a utiliza para escolher a taxa de dados ideal para o tamanho da carga. É possível otimizar ainda mais a taxa de dados conforme necessário.
   + **Modo de reconhecimento**: confirme se o dispositivo recebeu a mensagem de downlink. Se uma mensagem exigir esse modo, você verá uma mensagem de uplink com o sinalizador ACK no seu fluxo de dados e a mensagem será retirada da fila.

1. Para adicionar sua mensagem de downlink à fila, selecione **Enviar**.

Sua mensagem de downlink foi adicionada à fila. Caso não veja sua mensagem, ou se receber uma mensagem de erro, você pode solucionar o erro conforme descrito em [Solucionar erros na fila de mensagens de downlink](#lorawan-downlink-queue-troubleshoot). 

**nota**  
Depois que sua mensagem de downlink for adicionada à fila, não será mais possível editar os parâmetros **FPort**, **Carga** e **Modo de reconhecimento**. Para enviar uma mensagem de downlink com valores diferentes para esses parâmetros, é possível excluir essa mensagem e enfileirar uma nova mensagem de downlink com os valores de parâmetros atualizados.

A fila lista as mensagens de downlink adicionadas. Para visualizar a carga das mensagens de uplink e downlink trocadas entre seus dispositivos e o AWS IoT Core for LoRaWAN, use o analisador de rede. Para ter mais informações, consulte [Monitorar sua frota de recursos sem fio em tempo real usando o analisador de rede](network-analyzer-overview.md).

**Listar fila de mensagens de downlink**  
A mensagem de downlink criada por você será adicionada à fila. Cada mensagem de downlink subsequente será adicionada à fila após essa mensagem. Você pode visualizar uma lista de mensagens de downlink na seção **Mensagens de downlink** da página de detalhes do dispositivo. Depois que um uplink for recebido, as mensagens serão enviadas para o dispositivo. Depois que uma mensagem de downlink for recebida pelo dispositivo, ela será removida da fila. A mensagem seguinte, então, sobe na fila para ser enviada ao seu dispositivo.

**Excluir mensagens de downlink individuais ou limpar toda a fila**  
Cada mensagem de downlink é retirada da fila automaticamente depois de ser enviada ao seu dispositivo. Também é possível excluir mensagens individuais ou remover toda a fila de downlink. Essas ações são irreversíveis.
+ Caso localize mensagens na fila que não deseje enviar, selecione as mensagens e selecione **Excluir**.
+ Se não quiser enviar nenhuma mensagem da fila para o dispositivo, é possível remover toda a fila selecionando **Limpar fila de downlink**.

## Executar operações de fila de downlink com a API
<a name="lorawan-downlink-queue-api"></a>

É possível usar a API do AWS IoT Wireless para enfileirar mensagens de downlink e retirar mensagens individuais, ou toda a fila, conforme necessário.

**Colocar mensagens de downlink em fila**  
Para criar uma fila de mensagens de downlink, use a operação 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) ou o comando [cli/latest/reference/iotwireless/send-data-to-wireless-device.html](cli/latest/reference/iotwireless/send-data-to-wireless-device.html) da CLI.

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

Executando o comando, a saída gera um `MessageId` para a mensagem de downlink. Em alguns casos, mesmo que você receba o `MessageId`, os pacotes podem ser descartados. Para obter mais informações sobre como resolver o erro, consulte [Solucionar erros na fila de mensagens de downlink](#lorawan-downlink-queue-troubleshoot).

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

**Listar mensagens de downlink na fila**  
Para listas todas as mensagens de downlink da fila, use a operação 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) ou o comando [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) da CLI.

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

Por padrão, um máximo de 10 mensagens de downlink são exibidas ao executar esse comando.

**Remover mensagens de downlink individuais ou limpar toda a fila**  
Para remover mensagens individuais da fila ou limpar a fila inteira, use a operação 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) ou o comando [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) da CLI.
+ Para remover mensagens individuais, forneça o `messageID` das mensagens que deseja remover para um dispositivo sem fio, especificado pelo `wirelessDeviceId`.
+ Para limpar a fila de downlinks inteira, especifique o `messageID` como `*` para um dispositivo sem fio, especificado pelo `wirelessDeviceId`.

## Solucionar erros na fila de mensagens de downlink
<a name="lorawan-downlink-queue-troubleshoot"></a>

Aqui estão algumas objetos para verificar, se não estiver obtendo os resultados esperados:
+ 

**As mensagens de downlink não aparecem no console do AWS IoT**  
Se não estiver vendo sua mensagem de downlink na fila depois de adicioná-la conforme descrito em [Executar operações de fila de downlink com o console](#lorawan-downlink-queue-console), seu dispositivo talvez não tenha concluído um processo chamado procedimento de *ativação* ou *adesão*. Esse procedimento é realizado quando seu dispositivo é integrado ao AWS IoT Core for LoRaWAN. Para ter mais informações, consulte [Adicione a especificação do dispositivo sem fio ao AWS IoT Core for LoRaWAN usando o console](lorawan-end-devices-add.md#lorawan-end-device-spec-console).

  Após integrar seu dispositivo ao AWS IoT Core for LoRaWAN, é possível monitorá-lo para verificar se a adesão e a readesão foram bem-sucedidas usando o analisador de rede ou o Amazon CloudWatch. Para ter mais informações, consulte [Ferramentas de monitoramento](monitoring-cloudwatch.md#monitoring-tools).
+ 

**Pacotes de mensagens de downlink ausentes ao usar a API**  
Quando você usa a operação da API `SendDataToWirelessDevice`, a API retorna um único `MessageId`. Entretanto, não é possível confirmar se o dispositivo LoRaWAN recebeu a mensagem de downlink. Os pacotes de downlink podem ser descartados em casos como quando o dispositivo não concluiu o procedimento de adesão. Para acessar mais informações sobre como solucionar esse erro, consulte a seção anterior.
+ 

**Erro de ARN ausente ao enviar mensagem de downlink**  
Quando enviar uma mensagem de downlink para seu dispositivo a partir da fila, você pode receber um erro de nome do recurso da Amazon (ARN) ausente. Esse erro pode ocorrer porque o destino não foi especificado da maneira correta para o dispositivo que está recebendo a mensagem de downlink. Para solucionar esse erro, verifique os detalhes do destino do dispositivo.