Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Conditions préalables aux mises à jour OTA via HTTP
Cette section décrit les exigences générales relatives à l'utilisation du protocole HTTP pour effectuer des mises à jour over-the-air (OTA). À partir de la version 201912.00, FreeRTOS OTA peut utiliser le protocole HTTP ou MQTT pour transférer les images de mise à jour du microprogramme depuis les appareils. AWS IoT
Note
-
Bien que le protocole HTTP puisse être utilisé pour transférer l'image du microprogramme, la bibliothèque de l'agent CoreMQTT est toujours requise car d'autres interactions AWS IoT Core utilisent la bibliothèque de l'agent CoreMQTT, notamment l'envoi ou la réception de notifications d'exécution de tâches, de documents de tâche et de mises à jour du statut d'exécution.
-
Lorsque vous spécifiez les deux protocoles MQTT et HTTP pour la tâche de mise à jour OTA, la configuration du logiciel de l'agent OTA sur chaque périphérique détermine le protocole à utiliser pour transférer l'image du microprogramme. Pour remplacer la méthode de protocole MQTT par défaut de l'agent OTA par le protocole HTTP, vous pouvez modifier les fichiers d'en-tête utilisés pour compiler le code source FreeRTOS pour le périphérique.
Configuration requise
-
Le microprogramme de l'appareil doit inclure les bibliothèques FreeRTOS nécessaires (agent CoreMQTT, HTTP, agent OTA et leurs dépendances).
-
La version 201912.00 ou ultérieure de FreeRTOS est requise pour modifier la configuration des protocoles OTA afin de permettre le transfert de données OTA via HTTP.
Configurations
Veuillez consulter la configuration suivante des protocoles OTA dans le fichier \vendors\boards\
board
\aws_demos\config_files\ota_config.h
Pour activer le transfert de données OTA via HTTP
-
Remplacez
configENABLED_DATA_PROTOCOLS
parOTA_DATA_OVER_HTTP
-
Lorsque de la mise à jour OTA, vous pouvez spécifier les deux protocoles afin que le protocole MQTT ou HTTP puisse être utilisé. Pour définir le protocole principal utilisé par le périphérique sur HTTP, remplacez
configOTA_PRIMARY_DATA_PROTOCOL
parOTA_DATA_OVER_HTTP
.
Note
HTTP n'est pris en charge que pour les opérations de données OTA. Pour les opérations de contrôle, vous devez utiliser MQTT.
Configurations spécifiques aux périphériques
- ESP32
-
En raison d'une quantité limitée de RAM, vous devez désactiver BLE lorsque vous activez HTTP comme protocole de données OTA. Dans le fichier
vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h
, remplacez configENABLED_NETWORKS
parAWSIOT_NETWORK_TYPE_WIFI
uniquement./** * @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 )
Utilisation de la mémoire
Lorsque MQTT est utilisé pour le transfert de données, aucune mémoire de segment supplémentaire n'est requise pour la connexion MQTT, car elle est partagée entre les opérations de contrôle et de données. Toutefois, l'activation de données via HTTP nécessite une mémoire de segment supplémentaire. Voici les données d'utilisation de la mémoire par segment de mémoire pour toutes les plateformes prises en charge, calculées à l'aide de l'API FreeRTOSxPortGetFreeHeapSize
. Assurez-vous de disposer de suffisamment de RAM pour utiliser la bibliothèque OTA.
- Texas Instruments CC322 0SF-LAUNCHXL
-
Opérations de contrôle (MQTT) : 12 Ko
Opérations de données (HTTP) : 10 Ko
Note
TI utilise beaucoup moins de RAM, car il utilise le protocole SSL sur le matériel. Il n'a donc pas recours à la bibliothèque mbedtls.
- Microchip Curiosity MZEF PIC32
-
Opérations de contrôle (MQTT) : 65 Ko
Opérations de données (HTTP) : 43 Ko
- Espressif ESP32
-
Opérations de contrôle (MQTT) : 65 Ko
Opérations de données (HTTP) : 45 Ko
Note
Le mode BLE ESP32 nécessite environ 87 Ko de RAM. La quantité de RAM ne suffit pas pour toutes les opérations, ce qui est mentionné dans les configurations spécifiques aux périphériques ci-dessus.
- Simulateur Windows
-
Opérations de contrôle (MQTT) : 82 Ko
Opérations de données (HTTP) : 63 Ko
- Nordic nrf52840-dk
-
HTTP n'est pas pris en charge.
Politique en matière d'appareils
Cette stratégie vous permet d'utiliser MQTT ou HTTP pour les mises à jour OTA.
Chaque appareil qui reçoit une mise à jour OTA via le protocole HTTP doit être enregistré en tant qu'objet dans AWS IoT et l'objet doit avoir une stratégie attachée comme celle répertoriée ici. Vous trouverez plus d'informations sur les éléments dans les objets "Action"
et "Resource"
dans Actions de stratégie AWS IoT et Ressources d'action AWS IoT Core.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "iot:Connect", "Resource": "arn:
partition
:iot:region
:account
:client/${iot:Connection.Thing.ThingName}" }, { "Effect": "Allow", "Action": "iot:Subscribe", "Resource": [ "arn:partition
:iot:region
:account
:topicfilter/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] }, { "Effect": "Allow", "Action": [ "iot:Publish", "iot:Receive" ], "Resource": [ "arn:partition
:iot:region
:account
:topic/$aws/things/${iot:Connection.Thing.ThingName}/jobs/*" ] } ] }
Remarques
-
Les autorisations
iot:Connect
permettent à votre appareil de se connecter à AWS IoT via MQTT. -
Les
iot:Publish
autorisationsiot:Subscribe
et relatives aux sujets des AWS IoT tâches (.../jobs/*
) permettent à l'appareil connecté de recevoir des notifications de tâches et des documents relatifs aux tâches, et de publier l'état d'achèvement de l'exécution d'une tâche. -
Les
iot:Receive
autorisations permettent AWS IoT Core de publier des messages sur ces sujets sur l'appareil actuellement connecté. Cette autorisation est vérifiée à chaque remise d'un message MQTT. Vous pouvez utiliser cette autorisation pour révoquer l'accès aux clients actuellement abonnés à une rubrique.