Le système fonctionne en boucle automatique toutes les 15 minutes, sans intervention humaine. Il collecte les données publiques, effectue les calculs et diffuse les résultats en temps réel aux navigateurs connectés.
n8n est un orchestrateur de workflows open source auto-hébergé. Un cron déclenche le pipeline toutes les 15 minutes. Il exécute le script Python, puis publie une notification vers Mercure si le calcul réussit.
Un script Python interroge l'API Hub'Eau Hydrométrie (BRGM) pour récupérer les 48 dernières heures de mesures sur les 13 stations surveillées. Il effectue ensuite :
Le résultat est écrit dans un fichier JSON statique servi directement par le serveur web.
Mercure est un protocole et serveur de push open source basé sur Server-Sent Events (SSE). Quand de nouvelles données sont disponibles, n8n publie un événement sur un topic Mercure. Tous les navigateurs abonnés reçoivent instantanément la notification et rechargent les données.
Un mécanisme de polling de secours (60 secondes) prend le relais si la connexion SSE est interrompue.
L'interface est une page HTML statique avec du JavaScript vanilla (aucun framework). Elle consomme le fichier JSON et dessine les cartes stations, les graphiques (Canvas 2D) et les indicateurs de tendance.
| Composant | Technologie | Rôle |
|---|---|---|
| Source de données | Hub'Eau API | Mesures hydrométriques temps réel (BRGM) |
| Orchestration | n8n | Planification cron, enchaînement des étapes |
| Calcul | Python 3, numpy, requests | Collecte API, traitement statistique, sortie JSON |
| Push temps réel | Mercure (SSE) | Notification instantanée des navigateurs |
| Serveur web | Nginx | Serveur de fichiers statiques, reverse proxy |
| Frontend | HTML, CSS, JS (vanilla) | Interface utilisateur, graphiques Canvas 2D |
| Analytique | Matomo | Statistiques anonymisées, sans cookies tiers |
| Hébergement | Serveur dédié | Auto-hébergé, Agen (47) |