Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Voraussetzungen für OTA-Updates mit HTTP
In diesem Abschnitt werden die allgemeinen Anforderungen für die Verwendung von HTTP zur Durchführung von over-the-air (OTA-) Updates beschrieben. Ab Version 201912.00 kann FreeRTOS OTA entweder das HTTP- oder das MQTT-Protokoll verwenden, um Firmware-Update-Images von auf Geräte zu übertragen. AWS IoT
Anmerkung
-
Obwohl das HTTP-Protokoll für die Übertragung des Firmware-Images verwendet werden kann, ist die CoreMQTT-Agentenbibliothek dennoch erforderlich, da andere Interaktionen die CoreMQTT-Agentenbibliothek AWS IoT Core verwenden, einschließlich des Sendens oder Empfangens von Benachrichtigungen zur Jobausführung, Jobdokumenten und Ausführungsstatus-Updates.
-
Wenn Sie für den OTA-Aktualisierungsauftrag sowohl das MQTT- als auch das HTTP-Protokoll festlegen, bestimmt das Setup der OTA-Agent-Software auf jedem einzelnen Gerät, welches Protokoll für die Übertragung des Firmware-Images verwendet wird. Um für den OTA-Agent von der standardmäßigen MQTT-Protokollmethode zum HTTP-Protokoll zu wechseln, können Sie die Header-Dateien ändern, die zum Kompilieren des FreeRTOS-Quellcodes für das Gerät verwendet werden.
Mindestanforderungen
-
Die Gerätefirmware muss die erforderlichen FreeRTOS-Bibliotheken (CoreMQTT Agent, HTTP, OTA Agent und deren Abhängigkeiten) enthalten.
-
FreeRTOS Version 201912.00 oder höher ist erforderlich, um die Konfiguration der OTA-Protokolle zu ändern, um die OTA-Datenübertragung über HTTP zu ermöglichen.
Konfigurationen
In der Datei \vendors\boards\
board
\aws_demos\config_files\ota_config.h
So aktivieren Sie die OTA-Datenübertragung über HTTP
-
Ändern Sie
configENABLED_DATA_PROTOCOLS
zuOTA_DATA_OVER_HTTP
. -
Bei OTA-Updates können Sie beide Protokolle angeben, so dass als Protokoll entweder MQTT oder HTTP verwendet werden kann. Sie können als primäres Protokoll für das Gerät HTTP festlegen, indem Sie
configOTA_PRIMARY_DATA_PROTOCOL
inOTA_DATA_OVER_HTTP
ändern.
Anmerkung
HTTP wird nur für OTA-Datenvorgänge unterstützt. Für Steuerungsvorgänge müssen Sie MQTT verwenden.
Gerätespezifische Konfigurationen
- ESP32
-
Aufgrund einer begrenzten Menge an RAM müssen Sie BLE deaktivieren, wenn Sie HTTP als OTA-Datenprotokoll aktivieren. Ändern Sie in der Datei
vendors/espressif/boards/esp32/aws_demos/config_files/aws_iot_network_config.h
nur configENABLED_NETWORKS
zuAWSIOT_NETWORK_TYPE_WIFI
./** * @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 )
Speicherauslastung
Wenn MQTT für die Datenübertragung verwendet wird, ist kein zusätzlicher Heap-Speicher für die MQTT-Verbindung erforderlich, da sie von Steuerungs- und Datenvorgängen gemeinsam genutzt wird. Das Aktivieren von Daten über HTTP erfordert jedoch zusätzlichen Heap-Speicher. Im Folgenden finden Sie die Daten zur Heap-Speichernutzung für alle unterstützten Plattformen, berechnet mit der xPortGetFreeHeapSize
FreeRTOS-API. Sie müssen sicherstellen, dass genügend RAM zur Verwendung der OTA-Bibliothek vorhanden ist.
- Texas Instruments 0SF-LAUNCHXL CC322
-
Steuerungsvorgänge (MQTT): 12 KB
Datenvorgänge (HTTP): 10 KB
Anmerkung
TI verbraucht deutlich weniger RAM, da es SSL auf Hardware ausführt und somit die mbedtls-Bibliothek nicht verwendet.
- Mikrochip PIC32 Curiosity MZEF
-
Verwaltungsvorgänge (MQTT): 65 KB
Datenvorgänge (HTTP): 43 KB
- Espressif ESP32
-
Verwaltungsvorgänge (MQTT): 65 KB
Datenvorgänge (HTTP): 45 KB
Anmerkung
BLE on ESP32 benötigt etwa 87 KB RAM. Das RAM reicht nicht aus, um alle von ihnen zu aktivieren, was in den gerätespezifischen Konfigurationen oben erwähnt wird.
- Windows Simulator
-
Verwaltungsvorgänge (MQTT): 82 KB
Datenvorgänge (HTTP): 63 KB
- Nordic nrf52840-dk
-
HTTP wird nicht unterstützt.
Geräterichtlinie
Mit dieser Richtlinie können Sie entweder MQTT oder HTTP für OTA-Updates verwenden.
Jedes Gerät, das ein OTA-Update über HTTP erhält, muss als Objekt in AWS IoT registriert sein, und das Objekt muss über eine angehängte Richtlinie wie die hier aufgelistete verfügen. Weitere Informationen zu den Elementen finden Sie unter den "Action"
- und "Resource"
-Objekten der AWS IoT Core-Richtlinienaktionen und AWS IoT Core-Aktionsressourcen.
{ "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/*" ] } ] }
Hinweise
-
Mit den
iot:Connect
-Berechtigungen kann Ihr Gerät über MQTT eine Verbindung mit AWS IoT herstellen. -
Die
iot:Publish
Berechtigungeniot:Subscribe
und zu den Themen AWS IoT Jobs (.../jobs/*
) ermöglichen es dem verbundenen Gerät, Auftragsbenachrichtigungen und Auftragsdokumente zu empfangen und den Abschlussstatus einer Auftragsausführung zu veröffentlichen. -
Die
iot:Receive
Berechtigungen ermöglichen es AWS IoT Core , Nachrichten zu diesen Themen auf dem aktuell verbundenen Gerät zu veröffentlichen. Diese Berechtigung wird bei jeder Zustellung einer MQTT-Nachricht überprüft. Sie können diese Berechtigung verwenden, um den Zugriff auf Clients zu widerrufen, die derzeit ein Thema abonniert haben.