Planen und Ausführen des Firmware-Updates mithilfe einer Aufgabendefinition
Sie können eine Aufgabendefinition verwenden, um Details zum Firmware-Update aufzunehmen und das Update zu definieren. AWS IoT Core for LoRaWAN stellt ein Firmware-Update bereit, das auf Informationen aus den folgenden drei Feldern basiert, die dem Gateway zugeordnet sind.
-
Station
Die Version und die Erstellungszeit der Basics Station-Software. Um diese Informationen zu identifizieren, können Sie sie auch mithilfe der Basics Station-Software generieren, die von Ihrem Gateway ausgeführt wird (z. B.
2.0.5(rpi/std) 2021-03-09 03:45:09
). -
Version des Pakets
Die Firmware-Version, angegeben durch die Datei
version.txt
im Gateway. Diese Informationen sind zwar möglicherweise nicht im Gateway vorhanden, wir empfehlen sie jedoch, um Ihre Firmware-Version zu definieren (z. B.1.0.0
). -
Modell
Die Plattform oder das Modell, das vom Gateway verwendet wird (z. B. Linux).
Dieser Vorgang dauert etwa 20 Minuten.
Für diesen Vorgang ist Folgendes erforderlich:
Lassen Sie die aktuelle Version auf Ihrem Gateway laufen
Um festzustellen, ob Ihr Gateway für ein Firmware-Update in Frage kommt, überprüft der CUPS-Server alle drei Felder (Station
, PackageVersion
und Model
) auf eine Übereinstimmung, wenn das Gateway sie während einer CUPS-Anfrage anzeigt. Wenn Sie eine Aufgabendefinition verwenden, werden diese Felder als Teil des CurrentVersion
-Felds gespeichert.
Sie können die AWS IoT Core for LoRaWAN-API verwenden oder AWS CLI, um die CurrentVersion
für Ihr Gateway abzurufen. Die folgenden Befehle zeigen, wie Sie diese Informationen mit der CLI abrufen können.
-
Wenn Sie bereits ein Gateway bereitgestellt haben, können Sie mit dem Befehl get-wireless-gateway Informationen über das Gateway abrufen.
aws iotwireless get-wireless-gateway \ --identifier 5a11b0a85a11b0a8 \ --identifier-type GatewayEui
Das folgende Beispiel zeigt einen Teil der Beispielausgabe für diesen Befehl.
{ "Name": "Raspberry pi", "Id": "1352172b-0602-4b40-896f-54da9ed16b57", "Description": "Raspberry pi", "LoRaWAN": { "GatewayEui": "5a11b0a85a11b0a8", "RfRegion": "US915" }, "Arn": "arn:aws:iotwireless:us-east-1:231894231068:WirelessGateway/1352172b-0602-4b40-896f-54da9ed16b57" }
-
Mithilfe der vom Befehl gemeldeten Wireless-Gateway-ID können Sie mit dem
get-wireless-gateway
-Befehl get-wireless-gateway-firmware-information dieCurrentVersion
abrufen.aws iotwireless get-wireless-gateway-firmware-information \ --id "3039b406-5cc9-4307-925b-9948c63da25b"
Im Folgenden finden Sie eine Beispielausgabe für den Befehl mit Informationen aus allen drei Feldern, die von der
CurrentVersion
angezeigt werden.{ "LoRaWAN": { "CurrentVersion": { "PackageVersion": "1.0.0", "Model": "rpi", "Station": "2.0.5(rpi/std) 2021-03-09 03:45:09" } } }
Erstellen einer WLAN-Gateway-Aufgabendefinition
Wenn Sie die Aufgabendefinition erstellen, empfehlen wir, die automatische Erstellung von Aufgaben mithilfe des AutoCreateTasks-Parameters anzugeben. AutoCreateTasks
gilt für jedes Gateway, das eine Übereinstimmung mit allen drei zuvor genannten Parametern aufweist. Wenn dieser Parameter deaktiviert ist, müssen die Parameter dem Gateway manuell zugewiesen werden.
Sie können die Aufgabendefinition für das WLAN-Gateway mithilfe der AWS IoT Core for LoRaWAN API oder AWS CLI erstellen. Die folgenden Befehle zeigen, wie die Aufgabendefinition mithilfe der Befehlszeilenschnittstelle erstellt wird.
-
Erstellen Sie eine
input.json
-Datei, die die Informationen enthält, die an dieCreateWirelessGatewayTaskDefinition
API übergeben werden sollen. Geben Sie in derinput.json
-Datei die folgenden Informationen an, die Sie zuvor erhalten haben:-
UpdateDataSource
Geben Sie den Link zu Ihrem Objekt an, das die Firmware-Aktualisierungsdatei enthält, die Sie in den S3-Bucket hochgeladen haben (z. B.
s3://iotwirelessfwupdate/fwstation
). -
UpdateDataRole
Geben Sie den Link zum Rollen-ARN für die von Ihnen erstellte IAM-Rolle an, die Berechtigungen zum Lesen des S3-Buckets bereitstellt (z. B.
arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole
). -
SigKeyCRC und UpdateSignature
Diese Informationen werden möglicherweise von Ihrem Gateway-Hersteller bereitgestellt. Wenn Sie jedoch das unter Generieren der Firmware-Aktualisierungsdatei und Signatur beschriebene Verfahren befolgt haben, finden Sie diese Informationen bei der Generierung der Signatur.
-
CurrentVersion
Stellen Sie die
CurrentVersion
-Ausgabe bereit, die Sie zuvor durch Ausführen desget-wireless-gateway-firmware-information
-Befehls erhalten haben.cat input.json
Im Folgenden werden die Inhalte der
input.json
-Datei angezeigt.{ "AutoCreateTasks": true, "Name": "FirmwareUpdate", "Update": { "UpdateDataSource" : "s3://iotwirelessfwupdate/fwstation", "UpdateDataRole" : "arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole", "LoRaWAN" : { "SigKeyCrc": 3434210794, "UpdateSignature": "MEQCIDPY/p2ssgXIPNCOgZr+NzeTLpX+WfBo5tYWbh5pQWN3AiBROen+XlIdMScvAsfVfU/ZScJCalkVNZh4esyS8mNIgA==", "CurrentVersion" : { "PackageVersion": "1.0.0", "Model": "rpi", "Station": "2.0.5(rpi/std) 2021-03-09 03:45:09" } } } }
-
-
Übergeben Sie die
input.json
-Datei an den Befehl create-wireless-gateway-task-definition, um die Aufgabendefinition zu erstellen.aws iotwireless create-wireless-gateway-task-definition \ --cli-input-json file://input.json
Das folgende Beispiel veranschaulicht die Ausgabe des Befehls.
{ "Id": "4ac46ff4-efc5-44fd-9def-e8517077bb12", "Arn": "arn:aws:iotwireless:us-east-1:231894231068:WirelessGatewayTaskDefinition/4ac46ff4-efc5-44fd-9def-e8517077bb12" }
Führen Sie die Aufgabe zum Firmware-Update aus und verfolgen Sie den Fortschritt
Das Gateway ist bereit, das Firmware-Update zu empfangen, und stellt nach dem Einschalten eine Verbindung zum CUPS-Server her. Wenn der CUPS-Server eine Übereinstimmung in der Version des Gateways findet, plant er ein Firmware-Update.
Eine Aufgabe ist eine Aufgabendefinition, die in Bearbeitung ist. Da Sie die automatische Aufgabenerstellung mit der Einstellung AutoCreateTasks
auf True
angegeben haben, wird die Firmware-Aktualisierungsaufgabe gestartet, sobald ein passendes Gateway gefunden wird.
Sie können den Fortschritt der Aufgabe mithilfe der GetWirelessGatewayTask
API verfolgen. Wenn Sie den Befehl get-wireless-gateway-task zum ersten Mal ausführen, wird der Aufgabenstatus als IN_PROGRESS
angezeigt.
aws iotwireless get-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57
Das folgende Beispiel veranschaulicht die Ausgabe des Befehls.
{ "WirelessGatewayId": "1352172b-0602-4b40-896f-54da9ed16b57", "WirelessGatewayTaskDefinitionId": "ec11f9e7-b037-4fcc-aa60-a43b839f5de3", "LastUplinkReceivedAt": "2021-03-12T09:56:12.047Z", "TaskCreatedAt": "2021-03-12T09:56:12.047Z", "Status": "IN_PROGRESS" }
Wenn Sie den Befehl das nächste Mal ausführen und das Firmware-Update wirksam wird, werden die aktualisierten Felder Package
, Version
und Model
angezeigt und der Aufgabenstatus ändert sich in COMPLETED
.
aws iotwireless get-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57
Das folgende Beispiel veranschaulicht die Ausgabe des Befehls.
{ "WirelessGatewayId": "1352172b-0602-4b40-896f-54da9ed16b57", "WirelessGatewayTaskDefinitionId": "ec11f9e7-b037-4fcc-aa60-a43b839f5de3", "LastUplinkReceivedAt": "2021-03-12T09:56:12.047Z", "TaskCreatedAt": "2021-03-12T09:56:12.047Z", "Status": "COMPLETED" }
In diesem Beispiel haben wir Ihnen das Firmware-Update mit dem Raspberry Pi-basierten RAKWireless-Gateway gezeigt. Das Firmware-Aktualisierungsskript stoppt die laufende BasicStation, um die aktualisierten Felder Package
, Version
und Model
zu speichern, sodass BasicStation neu gestartet werden muss.
2021-03-12 09:56:13.108 [CUP:INFO] CUPS provided update.bin 2021-03-12 09:56:13.108 [CUP:INFO] CUPS provided signature len=70 keycrc=37316C36 2021-03-12 09:56:13.148 [CUP:INFO] ECDSA key#0 -> VERIFIED 2021-03-12 09:56:13.148 [CUP:INFO] Running update.bin as background process 2021-03-12 09:56:13.149 [SYS:VERB] /tmp/update.bin: Forked, waiting... 2021-03-12 09:56:13.151 [SYS:INFO] Process /tmp/update.bin (pid=6873) completed 2021-03-12 09:56:13.152 [CUP:INFO] Interaction with CUPS done - next regular check in 10s
Wenn das Firmware-Update fehlschlägt, wird der Status von FIRST_RETRY
vom CUPS-Server angezeigt und das Gateway sendet dieselbe Anfrage. Wenn der CUPS-Server nach einer SECOND_RETRY
keine Verbindung zum Gateway herstellen kann, wird der Status FAILED
angezeigt.
Nachdem die vorherige Aufgabe COMPLETED
oder FAILED
war, löschen Sie die alte Aufgabe mit dem Befehl delete-wireless-gateway-task, bevor Sie eine neue starten.
aws iotwireless delete-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57