5.4 KiB
CARIA Automotive · Cockpit
Interface tactile automobile en HTML/CSS/JavaScript, déployée avec quatre services Docker. Le rendu et les fonctions du cockpit sont conservés lors du découpage du 13 septembre 2026.
Démarrer ou mettre à jour
docker compose up -d --build
Ouvrir http://localhost:8080 ou http://ADRESSE_DU_SERVEUR:8080. Copier .env.example vers .env pour personnaliser le port ou les fournisseurs. Les préférences du navigateur restent conservées si l’origine (adresse et port) ne change pas.
docker compose ps
docker compose logs --tail=50 interface telemetry weather navigation
docker compose restart weather
Docker et Nginx ne sont pas installés sur le poste de développement : la construction et le lancement de cette nouvelle composition restent à vérifier sur l’hôte Docker. Le modèle et l’architecture de l’ODroid doivent également être confirmés.
Modifier l’UI sans reconstruire
docker compose -f compose.yaml -f compose.dev.yaml up -d --build
Ce mode monte ./ui en lecture seule dans Nginx. Modifier les fichiers sur l’hôte Docker, puis actualiser le navigateur (Ctrl+F5 si nécessaire). Une modification de ui/nginx.conf ou des images demande toujours une reconstruction. Pour revenir au déploiement normal :
docker compose -f compose.yaml up -d --build --force-recreate interface
Services indépendants
| Service | Fonction | Routes publiques |
|---|---|---|
interface |
Fichiers UI, compression, routage Nginx | /, fichiers statiques, relais /api/… |
telemetry |
Simulation du véhicule | /api/telemetry, /api/health |
weather |
Fournisseur météo, cache et limitation des requêtes | /api/weather |
navigation |
Géocodage, itinéraires, configuration des tuiles | /api/search, /api/route, /api/map-config |
Seul le port de l’interface est publié. Chaque API dispose aussi de son /api/health interne. Les trois API réutilisent une image Node sans dépendance npm et sélectionnent un rôle explicite avec SERVICE_ROLE. Elles ont des processus, caches et cycles de redémarrage séparés. Nginx résout leurs noms sur le réseau Compose ; il ne dépend pas de leur disponibilité pour servir le cockpit. Une route appartenant à un autre rôle renvoie 404.
Les chemins API et leurs réponses restent identiques. Les images n’embarquent ni les tests ni les anciens fichiers du projet scolaire. L’audio local reste dans le navigateur : aucun service audio n’est ajouté artificiellement.
Développement sans Docker
Avec Node.js 22 ou supérieur :
npm start
Le serveur de développement regroupe les API et les fichiers UI sur le port 8080. HOST et PORT sont configurables. Le déploiement Compose emploie les rôles séparés ; le mode regroupé ne sert qu’au développement et aux tests.
Fonctions conservées
- Accueil avec heure, météo et accès multimédia ; température extérieure du véhicule dans l’en-tête.
- Cadrans analogiques, analogiques lumineux et numériques ; petits instruments carburant/température, rapport et page de détails. Données véhicule simulées ; CAN non connecté.
- Thèmes jour/nuit, couleurs et pastille personnalisée ; favoris, hamburger, menus et préférences locales.
- Bibliothèque musicale locale et lecteur immersif partageant le même audio, halo, aléatoire, répétition, volume. Un appui sur précédent revient au début, deux appuis rapides reviennent au morceau précédent.
- Jellyfin fixé à
https://media.cunatbrule.fr/web/, Spotify, YouTube, YouTube Music et Waze. Les lecteurs intégrés restent soumis aux possibilités des services. - Carte Leaflet, recherche Photon, itinéraires OSRM, météo Open-Meteo et import de zones GeoJSON. Pas de base radar fournie ni de cartographie hors ligne.
L’écran de référence reste un 10 pouces paysage, 1200 × 1080. Le navigateur, le tactile, le son et le kiosque relèvent de l’OS. L’accès GPS Web demande HTTPS ou localhost ; un départ manuel reste possible. Les fichiers musicaux doivent être resélectionnés après rechargement.
Organisation
ui/app.js: navigation, réglages et acquisition de télémétrie.ui/instruments.js: rendu SVG et projection des mesures.ui/music.js: bibliothèque, sélection et commandes audio partagées.ui/cockpit.js: disposition, lecteur immersif et pagination.ui/theme.js,applications.js,embeds.js,journey.js,geo.js: fonctions UI dédiées.server/: HTTP, rôles, fournisseurs et simulateur ; tests unitaires.tests/: tests navigateur ;docs/: contrats et guides.
WebControl/ a été supprimé par le propriétaire. Aucun composant actuel n’en dépend. La licence Leaflet reste dans ui/vendor/leaflet/LICENSE ; la licence globale du projet reste à définir.
Vérification
npm test
node tests/touch-browser.mjs
node tests/applications-browser.mjs
node tests/browser.mjs
Les tests navigateur nécessitent Playwright et Chromium dans l’environnement de test, et un serveur démarré. Variables : CARIA_URL, CHROME_PATH, PLAYWRIGHT_MODULE (URL file:///… si nécessaire). Aucune dépendance de test n’est installée dans les images. Fournisseurs et tuiles sont simulés pendant les tests.
Voir le contrat et l’architecture, les applications, la navigation et le bilan du nettoyage.