Aller au contenu

Mises à jour

Les SimServers et dispositifs KerSim fonctionnent en réseau fermé, sans accès internet. Le système de mise à jour est conçu pour que n’importe quel formateur puisse mettre à jour tout son parc en branchant une clé USB.

Le SimServer est le hub de distribution : une fois la mise à jour chargée sur un SimServer, elle se propage automatiquement à tout l’écosystème local.

kersim.fr Clé USB SimServer 1
┌──────────────┐ ┌───────────┐ ┌──────────────────┐
│ Télécharger │───▶│ .ksupdate │───▶│ Détecte, valide, │
│ le package │ │ │ │ applique │
└──────────────┘ └───────────┘ └───┬──────┬───┬────┘
│ │ │
▼ ▼ ▼
PWA ESP32s SimServers
SimPilot (OTA) pairs
CoucheContenuMécanisme
SimServerApplication SimServer (Docker), configsPackage .ksupdate → SimServer
PWAsSimPilot, SimCam, SimStudio, SimView, SimPhoneAutomatique — servies par SimServer
Firmware ESP32Binaires par dispositifOTA WiFi depuis SimServer
ScénariosFichiers JSONSynchronisation ESP-NOW/WiFi
Modèles IAFichiers .onnx / .rknnCopie dans le volume Docker, rechargement du moteur IA
PythonDépendances serveurWheels embarquées dans le .ksupdate

C’est le canal recommandé, le plus simple et le plus fiable.

  1. Télécharger le package .ksupdate depuis kersim.fr/updates sur n’importe quel ordinateur connecté à internet

  2. Copier le fichier .ksupdate sur une clé USB

  3. Brancher la clé USB dans le SimServer (ou la SimBox)

  4. Appliquer : SimServer détecte automatiquement la mise à jour et affiche « Mise à jour v2.4.0 disponible — Appliquer ? ». Un clic suffit.

Pour une mise à jour rapide sans clé USB :

  • Partager la connexion 4G d’un téléphone vers le SimServer (USB ou WiFi)
  • SimServer détecte l’accès internet automatiquement, vérifie kersim.fr/updates
  • Téléchargement automatique du .ksupdate
  • SimServer repasse en mode fermé automatiquement après la mise à jour

Quand la tablette du formateur a accès à internet (domicile, bureau) :

  • La PWA SimPilot pré-télécharge le package en arrière-plan
  • En se reconnectant au SimServer, elle propose « Mise à jour disponible, transférer au SimServer ? »

Une fois la mise à jour sur un SimServer, la distribution est automatique :

CibleMécanismeAction du formateur
PWAsMise à jour instantanée au prochain chargement (Service Worker)Aucune
Firmware ESP32OTA via WiFi au boot des dispositifs (partition A/B)Aucune
ScénariosSynchronisés au démarrage de la simulationAucune
Autres SimServersProposé via Ethernet en mode multi-sallesUn clic par SimServer
Modèles IACopiés dans le volume Docker, rechargés par le moteur IAAucune (redémarrage service)

Le format .ksupdate est un fichier ZIP standard (Content-Type application/zip) contenant tous les composants. Le format ZIP est utilisé pour passer les proxies et filtres hospitaliers sans problème.

PropriétéDétail
FormatZIP standard (renommable en .zip si filtre)
ContenuDocker image (zstd), PWAs, firmware ESP32, scénarios JSON, modèles IA, wheels Python, migrations
SignatureEd25519 — empêche corruption et injection
IntégritéHash SHA-256 par composant dans manifest.json
ManifestVersions source/cible, plateformes supportées, changelog bilingue
kersim-2.4.0.ksupdate
├── manifest.json ← Version, checksums, changelog
├── manifest.json.sig ← Signature Ed25519
├── docker/ ← Image Docker (docker save | zstd)
├── www/ ← PWAs buildées (pilot, cam, view, studio, phone)
├── python/wheels/ ← Dépendances Python
├── firmware/ ← Binaires ESP32 (dinamap.bin, dae.bin, scope.bin)
├── models/ ← Modèles IA (optionnel)
├── scenarios/ ← Scénarios JSON (optionnel)
└── migrations/ ← Scripts de migration config

Le système garantit qu’une mise à jour échouée ne bloque jamais un SimServer ni un dispositif :

  • Validation préalable : signature Ed25519, checksums SHA-256, compatibilité plateforme, version minimale, espace disque
  • Snapshot : sauvegarde complète (Docker, PWAs, config, version) avant application
  • Partition A/B sur ESP32 : si le nouveau firmware ne boot pas en 30 secondes, l’ESP32 revient automatiquement sur l’ancienne version
  • Watchdog 5 minutes : si la mise à jour est bloquée, un timer systemd indépendant déclenche le rollback
  • Mode maintenance : pendant la mise à jour, SimServer refuse les démarrages de simulation
  • Alerte version hétérogène : si un dispositif ESP32 n’a pas pu être mis à jour (éteint, hors portée), le dashboard l’indique avec un bouton « Réessayer »
  • Journal de mises à jour : historique horodaté consultable depuis le dashboard
idle → validating → snapshotting → applying → verifying → completed
↘ validation_failed ↘ rolled_back

Le SimServer expose une API pour piloter les mises à jour depuis le dashboard :

EndpointDescription
GET /api/updates/statusVersion courante, état, mise à jour en attente
GET /api/updates/historyJournal des mises à jour appliquées
POST /api/updates/applyDéclencher l’application d’un .ksupdate détecté
POST /api/updates/rollbackRollback manuel vers la version précédente
GET /api/updates/firmwareVersions firmware et état OTA par dispositif
POST /api/updates/uploadTransférer un .ksupdate via HTTP (canal PWA)
GET /api/firmware/{type}/versionVersion firmware disponible (endpoint OTA ESP32)
GET /api/firmware/{type}/binaryTéléchargement binaire firmware (endpoint OTA ESP32)

Le dashboard SimStudio inclut une page dédiée /updates :

  • État de chaque composant : version actuelle, date de dernière mise à jour
  • Statut des dispositifs : liste des ESP32 et leur version firmware, avec alerte si hétérogène
  • Historique : journal complet des mises à jour appliquées
  • Mise à jour manuelle : bouton pour déclencher une vérification / application
  • Rollback : bouton pour revenir à la version précédente