Accueil
Liste des scénarios disponibles, filtres par catégorie et difficulté. Prévisualisation des étapes et paramètres.
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.
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 :
Non disponible : vidéo, enregistrement, régie.
Le SimPilot se connecte au SimServer via SocketIO. SimServer remplace le coordinateur comme hub central.
graph LR SimPilot["SimPilot (tablette)"] <-->|SocketIO| Studio["SimServer (RPi)"] <-->|ESP-NOW| Nodes["Nodes"]Fonctionnalités supplémentaires :
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 à jour | Commande start ESP-NOW |
| Modifier paramètre vital | Overlay mis à jour | Override ESP-NOW |
| Déclencher événement | Log dans journal | Event ESP-NOW |
| Pause / Reprise | État régie synchronisé | Commande ESP-NOW |
| Poser un marqueur | Marqueur dans timeline | — |
Et inversement, le SimPilot reçoit automatiquement :
Le SimPilot détecte automatiquement :
Aucune configuration manuelle n’est nécessaire : le SimPilot s’adapte à l’environnement détecté.
La PWA fonctionne sans connexion réseau :
L’interface est conçue pour des utilisateurs non initiés :
| Type d’aide | Description |
|---|---|
| Tooltips | Info-bulle sur chaque bouton et contrôle (directive v-tooltip) |
| Help panel | Panneau d’aide contextuel selon la page courante |
| Onboarding | Assistant de premier lancement (étapes guidées) |
| Statut réseau | Indicateur visuel permanent de l’état de connexion |
| Messages d’erreur | Messages clairs avec suggestion d’action corrective |
| Documentation | Lien vers la documentation en ligne |
Le SimPilot utilise un design system à 3 niveaux de composants :
| Tier | Emplacement | Rô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 :
var(--color-*), jamais de couleurs en dur| Composant | Technologie |
|---|---|
| Framework | Vue.js 3 (Composition API) |
| Langage | TypeScript |
| CSS | Tailwind CSS 4 |
| State | Pinia |
| Offline | IndexedDB (Dexie.js) |
| PWA | Workbox (Service Worker) |
| Tests | Vitest + @vue/test-utils + Playwright |
| i18n | vue-i18n v10 |
cd pwa && npm install # Installer les dépendancescd pwa && npm run dev # Serveur de développementcd pwa && npm run build # Build productioncd pwa && npm test # Tests unitairescd pwa && npm run test:e2e # Tests end-to-endgraph 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"] endEn mode mock, un MockWebSocket simule le coordinateur et les dispositifs pour le développement sans hardware.