Planifiez et exécutez la mise à jour du micrologiciel à l’aide d’une définition de tâche
Vous pouvez utiliser une définition de tâche pour inclure des détails sur la mise à jour du micrologiciel et définir la mise à jour. AWS IoT Core for LoRaWAN fournit une mise à jour du micrologiciel basée sur les informations des trois champs suivants associés à la passerelle.
-
Station
Version et date de création du logiciel Basics Station. Pour identifier ces informations, vous pouvez également les générer à l’aide du logiciel Basics Station qui est exécuté par votre passerelle (par exemple,
2.0.5(rpi/std) 2021-03-09 03:45:09
). -
Version du package
Version du micrologiciel, spécifiée par le fichier
version.txt
dans la passerelle. Bien que ces informations ne soient pas présentes dans la passerelle, nous vous recommandons de les utiliser pour définir la version de votre micrologiciel (par exemple,1.0.0
). -
Modèle
Plate-forme ou modèle utilisé par la passerelle (par exemple, Linux).
Cette procédure prend environ 20 minutes.
Pour réaliser cette procédure :
Exécutez la version actuelle sur votre passerelle
Pour déterminer l’éligibilité de votre passerelle à une mise à jour du micrologiciel, le serveur CUPS vérifie les trois champs Station
, PackageVersion
et Model
, s’ils correspondent lorsque la passerelle les présente lors d’une demande CUPS. Lorsque vous utilisez une définition de tâche, ces champs sont stockés en tant que partie intégrante du CurrentVersion
champ.
Vous pouvez utiliser l’API AWS IoT Core for LoRaWAN ou AWS CLI pour obtenir l’API CurrentVersion
pour votre passerelle. Les commandes suivantes montrent comment obtenir ces informations à l’aide de la CLI.
-
Si vous avez déjà configuré une passerelle, vous pouvez obtenir des informations sur celle-ci à l’aide de la commande get-wireless-gateway.
aws iotwireless get-wireless-gateway \ --identifier 5a11b0a85a11b0a8 \ --identifier-type GatewayEui
Voici un exemple de sortie de la commande.
{ "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" }
-
À l’aide de l’ID de passerelle sans fil indiqué par la commande
get-wireless-gateway
, vous pouvez utiliser la commande get-wireless-gateway-firmware-information pour obtenir leCurrentVersion
.aws iotwireless get-wireless-gateway-firmware-information \ --id "3039b406-5cc9-4307-925b-9948c63da25b"
Vous trouverez ci-dessous un exemple de sortie pour la commande, avec les informations des trois champs affichées par le
CurrentVersion
.{ "LoRaWAN": { "CurrentVersion": { "PackageVersion": "1.0.0", "Model": "rpi", "Station": "2.0.5(rpi/std) 2021-03-09 03:45:09" } } }
Créer une définition de tâche de passerelle sans fil
Lorsque vous créez la définition des tâches, nous vous recommandons de spécifier la création automatique des tâches à l’aide du paramètre AutoCreateTasks. AutoCreateTasks
s’applique à toute passerelle qui correspond aux trois paramètres mentionnés précédemment. Si ce paramètre est désactivé, les paramètres doivent être assignés manuellement à la passerelle.
Vous pouvez créer la définition de tâche de passerelle sans fil à l’aide de l’API AWS IoT Core for LoRaWAN ou AWS CLI. Les commandes suivantes montrent comment créer la définition de tâche à l’aide de la CLI.
-
Créez un fichier,
input.json
, qui contiendra les informations à transmettre à l’APICreateWirelessGatewayTaskDefinition
. Dans le fichierinput.json
, fournissez les informations suivantes que vous avez obtenues précédemment :-
UpdateDataSource
Fournissez le lien vers votre objet contenant le fichier de mise à jour du micrologiciel que vous avez chargé dans le compartiment S3. (par exemple,
s3://iotwirelessfwupdate/fwstation
. -
Mettre à jour le rôle des données
Fournissez le lien vers l’ARN du rôle IAM que vous avez créé, qui fournit les autorisations nécessaires pour lire le compartiment S3. (par exemple,
arn:aws:iam::123456789012:role/IoTWirelessFwUpdateRole
. -
SigKeyCRC et UpdateSignature
Ces informations peuvent être fournies par le fabricant de votre passerelle, mais si vous avez suivi la procédure décrite dans Génération du fichier de mise à jour du micrologiciel et de la signature, vous les trouverez lors de la génération de la signature.
-
CurrentVersion
Fournissez la sortie
CurrentVersion
que vous avez obtenue précédemment en exécutant la commandeget-wireless-gateway-firmware-information
.cat input.json
L’exemple suivant affiche le contenu du fichier
input.json
.{ "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" } } } }
-
-
Transmettez le fichier
input.json
à la commande create-wireless-gateway-task-definition pour créer la définition de tâche.aws iotwireless create-wireless-gateway-task-definition \ --cli-input-json file://input.json
La sortie de la commande est illustrée ci-dessous.
{ "Id": "4ac46ff4-efc5-44fd-9def-e8517077bb12", "Arn": "arn:aws:iotwireless:us-east-1:231894231068:WirelessGatewayTaskDefinition/4ac46ff4-efc5-44fd-9def-e8517077bb12" }
Exécutez la tâche de mise à jour du micrologiciel et suivez les progrès
La passerelle est prête à recevoir la mise à jour du micrologiciel et, une fois allumée, elle se connecte au serveur CUPS. Lorsque le serveur CUPS trouve une correspondance dans la version de la passerelle, il planifie une mise à jour du micrologiciel.
Une tâche est une définition de tâche en cours de traitement. Comme vous avez spécifié la création automatique des tâches en réglant AutoCreateTasks
sur True
, la tâche de mise à jour du micrologiciel démarre dès qu’une passerelle correspondante est trouvée.
Vous pouvez suivre la progression de la tâche à l’aide de l’API GetWirelessGatewayTask
. Lorsque vous exécutez la commande get-wireless-gateway-task pour la première fois, l’état de la tâche s’affiche sous la forme IN_PROGRESS
.
aws iotwireless get-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57
La sortie de la commande est illustrée ci-dessous.
{ "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" }
Lorsque vous exécuterez la commande la prochaine fois, si la mise à jour du micrologiciel prend effet, les champs mis à jourPackage
, Version
, et Model
et le statut de la tâche passe à COMPLETED
.
aws iotwireless get-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57
La sortie de la commande est illustrée ci-dessous.
{ "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" }
Dans cet exemple, nous vous avons montré la mise à jour du micrologiciel à l’aide de la passerelle RAKWireless basée sur le Raspberry Pi. Le script de mise à jour du micrologiciel arrête la BasicStation en cours d’exécution pour enregistrer les mises à jour des champs Package
, Version
, et Model
, de sorte que BasicStation devra être redémarrée.
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
Si la mise à jour du micrologiciel échoue, l’état FIRST_RETRY
du serveur CUPS s’affiche, et la passerelle envoie la même demande. Si le serveur CUPS ne parvient pas à se connecter à la passerelle après unSECOND_RETRY
, il affichera un statut de FAILED
.
Une fois que la tâche précédente était COMPLETED
ou FAILED
, supprimez l’ancienne tâche à l’aide de la commande delete-wireless-gateway-task avant d’en démarrer une nouvelle.
aws iotwireless delete-wireless-gateway-task \ --id 1352172b-0602-4b40-896f-54da9ed16b57