DRAFT — Preliminary version, do not share. · Version préliminaire, ne pas partager.

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.

Séquence d'un transfert de fichier du cloud vers l'appareil et de l'appareil vers le cloud : le client crée et exécute le transfert, Fundamentum envoie à l'appareil une action avec une URL présignée via MQTT, et le fichier transite via HTTPS entre l'appareil et le stockage de fichiers

Avant de commencer

Fonctionnement

  1. Vous créez un transfert : une direction (cloud-to-device ou device-to-cloud), les fichiers avec leur chemin sur l'appareil, et les appareils cibles.
  2. Pour cloud-to-device, Fundamentum renvoie une URL de téléversement par fichier. Vous téléversez les fichiers.
  3. 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.
  4. 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.

  1. 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'id du transfert (une chaîne) et l'upload_url de chaque fichier.

  2. Téléversez chaque fichier :

    curl --upload-file app.toml "<upload_url>"
    
  3. 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