# Smart City Digital Twin — Diagramme des Flux de Données ## Vue d'ensemble Ce diagramme illustre le flux complet des données IoT du simulateur vers les différentes couches de traitement, de stockage et de visualisation. --- ## Diagramme Mermaid ```mermaid graph TB SIM[Smart City Simulator] SENS[Capteurs IoT Reels] EMQ[EMQX] MOS[Mosquitto] BUN[BunkerM] ORI[Orion-LD] STE[Stellio] FRO[FROST-Server] ORM[OpenRemote Manager] KC[Keycloak] INF[InfluxDB] PRO[Prometheus] GEO[GeoServer] GRA[Grafana] MAP[MapStore] UI[OpenRemote UI] SIM --> EMQ SIM --> MOS SIM --> BUN SENS --> EMQ SENS -.-> ORM EMQ --> ORI EMQ --> STE EMQ --> FRO EMQ --> ORM MOS --> ORM BUN --> ORM ORM -.-> KC SIM --> INF ORI --> GRA STE --> GRA FRO --> GRA ORI -.-> GEO STE -.-> GEO FRO -.-> GEO GEO --> MAP ORM --> GRA EMQ -.-> PRO ORI -.-> PRO STE -.-> PRO ORM -.-> PRO ``` --- ## Description des flux ### 1. **Génération des données (Simulator)** - **Smart City Simulator** (Python) génère des données pour 10 capteurs (Traffic, Air Quality, Parking, Noise, Weather, Light) - Intervalle de publication : 10 secondes - Protocoles : MQTT (vers brokers uniquement) - **⚠️ Projet** : Le simulateur n'envoie PAS directement à OpenRemote (pas de REST API) ### 2. **Ingestion MQTT (Brokers)** - **EMQX** (port 11883) : Broker public, reçoit tous les capteurs - **Mosquitto** (port 1883) : Via Traefik, accès externe - **BunkerM** (port 1900) : MQTTS (TLS), accès sécurisé ### 3. **Context Brokers (NGSI-LD & SensorThings)** - **Orion-LD** : Reçoit les données au format NGSI-LD - 10 entités (TrafficFlowObserved, AirQualityObserved, etc.) - Smart Data Models utilisés - **Stellio** : Alternative NGSI-LD - 14 payloads entités - Contexte : `https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld` - **FROST-Server** : SensorThings API - 21 256+ observations - PostgreSQL + TimescaleDB ### 4. **Plateforme IoT (OpenRemote)** - **OpenRemote Manager** (realm `smartcity`) - 33 assets IoT configurés - Carte Martinique (mapsettings.json) - Réception via **MQTT Agent** depuis les brokers (EMQX, Mosquitto, BunkerM) - Peut aussi recevoir directement des capteurs IoT (via MQTT) - **Keycloak** : Authentification OpenID Connect - Client `openremote` avec Service Account - Token endpoint : `/auth/realms/smartcity/protocol/openid-connect/token` ### 5. **Stockage & Métriques** - **InfluxDB** : Stockage temporel pour Grafana - Bucket : `iot_data` - Datasource dans Grafana - **Prometheus** : Collecte des métriques - MQTT brokers, Context brokers, OpenRemote - **GeoServer** : Données géospatiales - PostGIS pour centralisation - WMS/WFS pour MapStore ### 6. **Visualisation & Analyse** - **Grafana** (port 3001) - Dashboard : `smartcity-martinique-2026` - Datasources : InfluxDB, FROST, Orion-LD - **MapStore** : Cartographie - Sources WMS/WFS depuis GeoServer - **OpenRemote UI** : Manager Interface - Visualisation des assets realm Smart City --- ## Technologies clés | Composant | Technologie | Port | Statut | |-----------|-------------|------|--------| | Simulator | Python + paho-mqtt | Interne | ✅ Actif | | EMQX | MQTT Broker | 11883 | ✅ Connecté | | Orion-LD | NGSI-LD Broker | 1026 | ⚠️ À vérifier | | Stellio | NGSI-LD Broker | 8080 | ⚠️ À vérifier | | FROST-Server | SensorThings API | 8080 | ⚠️ À vérifier | | OpenRemote | IoT Platform | 8080 | ⚠️ 403 (Service Account) | | InfluxDB | Time Series DB | 8086 | ✅ Configuré | | Grafana | Visualization | 3001 | ✅ Dashboard créé | | GeoServer | GeoServer | 8080 | ⚠️ À intégrer | | Prometheus | Metrics | 9090 | ✅ En cours | --- ## Fichiers associés - **Simulator** : `~/smart-city-digital-twin-martinique/simulator.py` - **Dashboard Grafana** : `~/smart-city-digital-twin-martinique/grafana_dashboard_smartcity.json` - **Ce diagramme** : `~/smart-city-digital-twin-martinique/data-flow-diagram.md` - **Session Resume** : `~/smart-city-digital-twin-martinique/session_resume_2026-05-04.md` --- **Dernière mise à jour :** 04 Mai 2026 **Projet :** Smart City Digital Twin Martinique **URL Grafana :** http://localhost:3001/d/smartcity-martinique-2026