Transferts de fichiers
Envoyez un fichier du cloud vers un appareil, comme un fichier de configuration ou une ressource, ou récupérez un fichier d'un appareil vers le cloud, comme un journal ou un export de diagnostic. Le fichier ne transite jamais par MQTT : l'appareil reçoit une URL présignée et transfère le fichier via HTTPS.
Avant de commencer
- Vous avez la CLI
funconnectée, ou un jeton pour la Public API. - Vous connaissez votre
<project-id>, votre<registry-id>et l'ID ou le numéro de série de l'appareil. - L'appareil exécute le daemon Linux avec le transfert de fichiers activé, ou implémente une gestion équivalente.
Fonctionnement
- Vous créez un transfert : une direction (
cloud-to-deviceoudevice-to-cloud), les fichiers avec leur chemin sur l'appareil, et les appareils cibles. - Pour
cloud-to-device, Fundamentum renvoie une URL de téléversement par fichier. Vous téléversez les fichiers. - Vous exécutez le transfert. Chaque appareil cible reçoit une action par fichier, avec une URL présignée à partir de laquelle télécharger ou vers laquelle téléverser.
- L'appareil transfère le fichier et signale son statut. Vous suivez chaque fichier dans l'onglet Actions de l'appareil dans le Hub, ou via l'API.
Un transfert passe de created à executed, ou à cancelled. Les URL présignées sont valables 15 minutes.
Envoyer un fichier à un appareil (CLI)
Une seule commande crée le transfert, téléverse le fichier et l'exécute :
fun devices transfer cloud-to-device \
-p <project-id> -r <registry-id> -s <serial-number> \
-f config/app.toml --remote-path /etc/myapp/app.toml
-f doit être un chemin relatif situé dans le répertoire courant. Utilisez -d <device-id> au lieu de -s pour cibler l'appareil par son ID.
Récupérer un fichier depuis un appareil (CLI)
fun devices transfer device-to-cloud \
-p <project-id> -r <registry-id> -s <serial-number> \
--remote-path /var/log/myapp.log -n myapp.log
La CLI attend jusqu'à deux minutes que l'appareil téléverse le fichier, puis l'enregistre localement sous le nom indiqué avec -n.
Envoyer des fichiers à plusieurs appareils (API)
L'API accepte plusieurs fichiers et plusieurs appareils dans un même transfert.
-
Créez le transfert :
fun api v1 file-transfers store-file-transfer --project-id <project-id> --body '{ "direction": "cloud-to-device", "registry_id": <registry-id>, "files": [{"name": "app.toml", "remote_path": "/etc/myapp/app.toml"}], "targets": [{"device_id": 101}, {"device_id": 102}] }'Conservez l'
iddu transfert (une chaîne) et l'upload_urlde chaque fichier. -
Téléversez chaque fichier :
curl --upload-file app.toml "<upload_url>" -
Exécutez le transfert :
fun api v1 file-transfers execute-file-transfer --project-id <project-id> --transfer-id <transfer-id>
Un transfert device-to-cloud accepte exactement une cible. Une fois que l'appareil a téléversé le fichier, son download_url apparaît dans :
fun api v1 file-transfers get-file-transfer-files --project-id <project-id> --transfer-id <transfer-id>
Gérer les transferts
| Tâche | Commande |
|---|---|
| Lister les transferts | fun api v1 file-transfers list-file-transfers --project-id <project-id> |
| Voir les transitions de statut | fun api v1 file-transfers get-file-transfer-history --project-id <project-id> --transfer-id <transfer-id> |
| Annuler un transfert (il ne peut plus être exécuté ensuite) | fun api v1 file-transfers cancel-file-transfer --project-id <project-id> --transfer-id <transfer-id> |
| Supprimer un transfert | fun api v1 file-transfers delete-file-transfer --project-id <project-id> --transfer-id <transfer-id> |
Pour suivre un fichier sur un appareil donné, utilisez les actions de l'appareil. Consultez Actions et encodeurs personnalisés.
Sur l'appareil
Avec le daemon Linux, votre application s'abonne aux demandes de transfert de fichiers, signale un statut avant de démarrer, puis télécharge le fichier ou le transmet en flux avec sa taille et un hachage d'intégrité (par exemple sha512-...), et signale un statut final. Consultez Daemon Linux.
Étapes suivantes
- Référence de l'API dans Swagger UI : FileTransfers
- Terminal distant et redirection de ports
- Mises à jour du micrologiciel (OTA)
- Référence de la CLI fun