Pré-requisitos para atualizações de OTA usando HTTP - FreeRTOS

Pré-requisitos para atualizações de OTA usando HTTP

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

nota
  • Embora o protocolo HTTP possa ser usado para transferir a imagem do firmware, a biblioteca de agente coreMQTT ainda é necessária porque outras interações com o AWS IoT Core usam a biblioteca de agente coreMQTT, incluindo o envio ou recebimento de notificações de execução de tarefas, documentos de trabalho 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

  • 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

Consulte a seguinte configuração dos protocolos OTA no arquivo \vendors\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.

  2. 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

ESP32

Devido a uma quantidade limitada de RAM, você deve desativar o BLE quando habilitar HTTP como protocolo de dados OTA. No arquivo 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

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.

CC3220SF-LAUNCHXL da Texas Instruments

Operações de controle (MQTT): 12 KB

Operações de dados (HTTP): 10 KB

nota

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

nota

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

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 e Recursos da ação principal do AWS IoT.

Observações
  • As permissões do iot:Connect permitem que o dispositivo seja conectado ao AWS IoT pelo MQTT.

  • As permissões de iot:Subscribe e iot:Publish para tópicos de trabalhos da AWS IoT (.../jobs/*) permitem que o dispositivo conectado receba notificações de trabalho e documentos de trabalho, e publique o estado de conclusão da execução de um trabalho.

  • As permissões de iot:Receive permitem que o AWS IoT Core publique mensagens sobre esses tópicos no dispositivo conectado atualmente. 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.