Aller au contenu

SimPilot — Vue d'ensemble

SimPilot est une application web installable qui permet au formateur de piloter l’intégralité d’une simulation médicale depuis une tablette ou un smartphone.

  • Sélectionner et lancer des scénarios de simulation
  • Piloter les paramètres vitaux en temps réel
  • Visualiser l’état des nodes connectés (dispositifs biomédicaux)
  • Débriefier avec timeline d’événements
  • Fonctionner hors-ligne grâce à IndexedDB

Le SimPilot se connecte directement à un coordinateur ESP32-S3 (intégré à un Dinamap, Scope ou DAE) via WebSocket.

graph LR
SimPilot["SimPilot (tablette)"] <-->|WebSocket| Coord["Coordinateur ESP32-S3"] <-->|ESP-NOW| Nodes["Nodes"]

Fonctionnalités disponibles :

  • Sélection et lancement de scénarios
  • Contrôle des paramètres vitaux
  • Visualisation de l’état des nodes
  • Débriefing par les données (timeline, paramètres)
  • Fonctionnement offline (IndexedDB)

Non disponible : vidéo, enregistrement, régie.

Accueil

Liste des scénarios disponibles, filtres par catégorie et difficulté. Prévisualisation des étapes et paramètres.

Simulation

Constantes vitales en temps réel, chronomètre, alarmes, contrôles formateur. Override de paramètres, déclenchement d’événements, marqueurs.

Débriefing

Historique des sessions, timeline d’événements, export JSON/CSV. En mode SimServer : accès au débriefing vidéo.

Paramètres

Connexion au coordinateur/SimServer, mode mock, apparence, langue.

Le SimPilot et SimServer (ou coordinateur) se synchronisent en temps réel. Toute action dans le SimPilot est propagée :

Action SimPilot→ SimServer→ Nodes
Démarrer scénarioÉtat régie mis à jourCommande start ESP-NOW
Modifier paramètre vitalOverlay mis à jourOverride ESP-NOW
Déclencher événementLog dans journalEvent ESP-NOW
Pause / RepriseÉtat régie synchroniséCommande ESP-NOW
Poser un marqueurMarqueur dans timeline

Et inversement, le SimPilot reçoit automatiquement :

  • Les mises à jour de paramètres vitaux des nodes
  • Les changements d’état des dispositifs (connexion, déconnexion, état machine)
  • Les actions de SimServer (enregistrement, changement de scénario)

Le SimPilot détecte automatiquement :

  • SimServer (via mDNS ou scan réseau)
  • Le coordinateur ESP32 (via WiFi AP dédié)
  • Les nodes connectés (liste transmise par le coordinateur/SimServer)

Aucune configuration manuelle n’est nécessaire : le SimPilot s’adapte à l’environnement détecté.

La PWA fonctionne sans connexion réseau :

  1. Scénarios : préchargés dans IndexedDB (Dexie.js)
  2. Sessions : sauvegardées localement, synchronisées plus tard
  3. Service Worker : cache statique des assets (Workbox)
  4. Sync queue : file d’attente pour les opérations différées

L’interface est conçue pour des utilisateurs non initiés :

Type d’aideDescription
TooltipsInfo-bulle sur chaque bouton et contrôle (directive v-tooltip)
Help panelPanneau d’aide contextuel selon la page courante
OnboardingAssistant de premier lancement (étapes guidées)
Statut réseauIndicateur visuel permanent de l’état de connexion
Messages d’erreurMessages clairs avec suggestion d’action corrective
DocumentationLien vers la documentation en ligne

Le SimPilot utilise un design system à 3 niveaux de composants :

TierEmplacementRôle
Tier 1 (UI)components/ui/Composants génériques réutilisables (boutons, champs, modales)
Tier 1.5 (Layout)components/layout/Shell, navigation, structure de page
Tier 2 (Domaine)components/vitals/, scenario/, help/Composants métier (constantes vitales, contrôle scénario)
Tier 3 (Vues)views/Orchestration et routing

Principes UI :

  • Touch target 44px minimum sur tout élément interactif
  • Design tokens : var(--color-*), jamais de couleurs en dur
  • Thème clair/sombre automatique
  • Contrastes conformes WCAG 2.1 AA
ComposantTechnologie
FrameworkVue.js 3 (Composition API)
LangageTypeScript
CSSTailwind CSS 4
StatePinia
OfflineIndexedDB (Dexie.js)
PWAWorkbox (Service Worker)
TestsVitest + @vue/test-utils + Playwright
i18nvue-i18n v10
Fenêtre de terminal
cd pwa && npm install # Installer les dépendances
cd pwa && npm run dev # Serveur de développement
cd pwa && npm run build # Build production
cd pwa && npm test # Tests unitaires
cd pwa && npm run test:e2e # Tests end-to-end
graph LR
subgraph simple["Mode simple"]
B1["SimPilot"] <-->|WebSocket| C1["Coordinateur ESP32"] <-->|ESP-NOW| N1["Nodes"]
end
subgraph studio["Mode SimServer"]
B2["SimPilot"] <-->|SocketIO| S2["SimServer (RPi + ESP32-S3)"] <-->|ESP-NOW| N2["Nodes"]
end

En mode mock, un MockWebSocket simule le coordinateur et les dispositifs pour le développement sans hardware.