

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Pré-requisitos para atualizações de OTA usando HTTP
<a name="ota-http-freertos"></a>

Esta seção descreve os requisitos gerais para usar HTTP para executar atualizações over-the-air (OTA). A partir da versão 2019.12.00, o FreeRTOS OTA pode usar o protocolo HTTP ou MQTT para transferir imagens de atualização de firmware para dispositivos. AWS IoT 

**nota**  
Embora o protocolo HTTP possa ser usado para transferir a imagem do firmware, a biblioteca do CoreMQTT Agent ainda é necessária porque outras interações AWS IoT Core usam a biblioteca do CoremQTT Agent, incluindo o envio ou recebimento de notificações de execução de tarefas, documentos de tarefas e atualizações de status de execução. 
Ao especificar os protocolos MQTT e HTTP para o trabalho de atualização de OTA, a configuração do software do agente OTA em cada dispositivo individual determina o protocolo usado para transferir a imagem de firmware. Para alterar o agente OTA do método de protocolo MQTT padrão para o protocolo HTTP, modifique os arquivos de cabeçalho usados para compilar o código-fonte do FreeRTOS para o dispositivo.

## Requisitos mínimos
<a name="ota-http-freertos-min-requirements"></a>
+ O firmware do dispositivo deve incluir as bibliotecas do FreeRTOS necessárias (agente coreMQTT, HTTP, agente OTA e suas dependências).
+ A versão 201912.00 ou posterior o FreeRTOS é necessária para alterar a configuração de protocolos OTA a fim de habilitar a transferência de dados OTA via HTTP.

## Configurações
<a name="ota-http-freertos-config"></a>

Consulte a seguinte configuração dos protocolos OTA no arquivo [https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/vendor/boards/board/aws_demos/config_files/ota_config.h).

**Para habilitar a transferência de dados OTA via HTTP**

1. Fazer `configENABLED_DATA_PROTOCOLS` alteração `OTA_DATA_OVER_HTTP`.

1. Quando o OTA é atualizado, você pode especificar ambos os protocolos para que o protocolo MQTT ou HTTP possa ser usado. Você pode definir o protocolo primário usado pelo dispositivo para HTTP alterando `configOTA_PRIMARY_DATA_PROTOCOL` para `OTA_DATA_OVER_HTTP`. 

**nota**  
HTTP só é compatível com operações de dados OTA. Para operações de controle, você deve usar MQTT.

## Configurações específicas do dispositivo
<a name="ota-http-freertos-device-configuration"></a>

**ESP32**  
Devido a uma quantidade limitada de RAM, você deve desativar o BLE quando habilitar HTTP como protocolo de dados OTA. No arquivo [https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h](https://github.com/aws/amazon-freertos/blob/main/vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h), altere `configENABLED_NETWORKS` para `AWSIOT_NETWORK_TYPE_WIFI` somente.  

```
/**
     * @brief Configuration flag which is used to enable one or more network interfaces for a board.
     *
     * The configuration can be changed any time to keep one or more network enabled or disabled.
     * More than one network interfaces can be enabled by using 'OR' operation with flags for
     * each network types supported. Flags for all supported network types can be found
     * in "aws_iot_network.h"
     *
     */
    #define configENABLED_NETWORKS      ( AWSIOT_NETWORK_TYPE_WIFI )
```

## Uso de memória
<a name="ota-http-freertos-memory"></a>

Quando MQTT for usado para transferência de dados, não será necessária nenhuma memória de heap adicional para a conexão MQTT, pois ela é compartilhada entre controle e operações de dados. No entanto, é necessário ter memória de heap adicional para habilitar dados via HTTP. A seguir estão os dados de uso de memória de heap para todas as plataformas compatíveis, calculados usando a API `xPortGetFreeHeapSize` do FreeRTOS. Assegure-se de que há RAM suficiente para usar a biblioteca OTA.

****Texas Instruments CC3220SF-LAUNCHXL****  
Operações de controle (MQTT): 12 KB  
Operações de dados (HTTP): 10 KB  
 TI usa significativamente menos RAM porque faz SSL em hardware, então não usa a biblioteca mbedtls.

****Microchip Curiosity PIC32MZEF****  
Operações de controle (MQTT): 65 KB  
Operações de dados (HTTP): 43 KB

****Espressif ESP32****  
Operações de controle (MQTT): 65 KB  
Operações de dados (HTTP): 45 KB  
BLE em ESP32 utiliza cerca de 87 KB RAM. Não há RAM suficiente para habilitar todos eles, o que é mencionado nas configurações específicas do dispositivo acima.

****Windows Simulator****  
Operações de controle (MQTT): 82 KB   
Operações de dados (HTTP): 63 KB 

****Nordic nrf52840-dk****  
Não há suporte para HTTP.

## Política de dispositivo
<a name="ota-http-freertos-device-policy"></a>

Esta política permite usar MQTT ou HTTP para atualizações de OTA.

Cada dispositivo que recebe uma atualização OTA usando HTTP deve ser registrado como uma coisa no AWS IoT , e a coisa deve ter uma política anexada, como a listada aqui. Você pode encontrar mais informações sobre os itens nos objetos `"Resource"` e `"Action"` em [Ações da política principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-policy-actions.html) e [Recursos da ação principal do AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/iot-action-resources.html).

**Observações**
+ As permissões do `iot:Connect` permitem que o dispositivo seja conectado ao AWS IoT pelo MQTT. 
+ As `iot:Publish` permissões `iot:Subscribe` e sobre os tópicos de AWS IoT trabalhos (`.../jobs/*`) permitem que o dispositivo conectado receba notificações e documentos de trabalho e publique o estado de conclusão da execução de um trabalho.
+ As `iot:Receive` permissões AWS IoT Core permitem publicar mensagens sobre esses tópicos no dispositivo conectado atual. Essa permissão é verificada em cada entrega de uma mensagem de MQTT. Você pode usar essa permissão para revogar o acesso a clientes que estão inscritos em um tópico atualmente.