7.2 KiB
7.2 KiB
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
graph TB
%% ===== COUCHE 1 : SOURCES DE DONNÉES =====
subgraph Sources["📡 COUCHE 1 : SOURCES DE DONNÉES"]
SIM[Smart City Simulator<br/>Python • 10 capteurs<br/>MQTT + REST API]
SENSORS[Capteurs IoT Réels<br/>MQTT/HTTP]
end
%% ===== COUCHE 2 : MQTT BROKERS =====
subgraph Brokers["📡 COUCHE 2 : MQTT BROKERS"]
EMQX[EMQX<br/>Port 11883<br/>MQTT]
MOSQ[Mosquitto<br/>Port 1883<br/>MQTT]
BUNKER[BunkerM<br/>Port 1900<br/>MQTTS]
end
%% ===== COUCHE 3 : CONTEXT BROKERS (NGSI-LD) =====
subgraph Context["🔄 COUCHE 3 : CONTEXT BROKERS (NGSI-LD)"]
ORION[Orion-LD<br/>NGSI-LD<br/>Port 1026<br/>10 entités]
STELLIO[Stellio<br/>NGSI-LD<br/>Port 8080<br/>14 payloads]
FROST[FROST-Server<br/>SensorThings API<br/>Port 8080<br/>21k+ observations]
end
%% ===== COUCHE 4 : PLATEFORME IoT =====
subgraph IoT["🏠 COUCHE 4 : PLATEFORME IoT (OpenRemote)"]
OPENREMOTE[OpenRemote Manager<br/>Realm: Smart City<br/>33 assets IoT<br/>Port 8080]
KEYCLOAK[Keycloak<br/>Auth OpenID<br/>Token endpoint]
end
%% ===== COUCHE 5 : STOCKAGE & MÉTRIQUES =====
subgraph Storage["💾 COUCHE 5 : STOCKAGE & MÉTRIQUES"]
INFLUX[InfluxDB<br/>IoT Data Bucket<br/>Port 8086]
PROM[Prometheus<br/>Metrics + Alerting<br/>Port 9090]
GEO[GeoServer<br/>WMS/WFS + PostGIS<br/>Port 8080]
end
%% ===== COUCHE 6 : VISUALISATION & ANALYSE =====
subgraph Viz["📊 COUCHE 6 : VISUALISATION & ANALYSE"]
GRAF[Grafana<br/>Dashboards<br/>Port 3001<br/>Datasources: InfluxDB, FROST, Orion]
MAP[MapStore<br/>Cartographie<br/>WMS/WFS<br/>GeoServer]
ORUI[OpenRemote UI<br/>Manager Interface<br/>Realm: Smart City]
end
%% ===== FLUX DE DONNÉES =====
%% Simulator → MQTT Brokers (NO direct to OpenRemote)
SIM -->|MQTT| EMQX
SIM -->|MQTT| MOSQ
SIM -->|MQTTS| BUNKER
%% Real sensors → Brokers + direct to OpenRemote
SENSORS -->|MQTT| EMQX
SENSORS -.->|MQTT direct| OPENREMOTE
%% MQTT Brokers → Context Brokers
EMQX -->|NGSI-LD| ORION
EMQX -->|NGSI-LD| STELLIO
EMQX -->|SensorThings| FROST
%% MQTT Brokers → OpenRemote (via MQTT Agent)
EMQX -->|MQTT (Agent)| OPENREMOTE
MOSQ -->|MQTT (Agent)| OPENREMOTE
BUNKER -->|MQTT (Agent)| OPENREMOTE
%% OpenRemote → Keycloak
OPENREMOTE -.-> KEYCLOAK
%% Simulator → InfluxDB (direct)
SIM -->|HTTP| INFLUX
%% Context Brokers → Visualization
ORION -->|Query| GRAF
STELLIO -->|Query| GRAF
FROST -->|Query| GRAF
%% Context Brokers → GeoServer (DB Sync)
ORION -.->|PostGIS| GEO
STELLIO -.->|PostGIS| GEO
FROST -.->|PostGIS| GEO
%% GeoServer → MapStore
GEO -->|WMS/WFS| MAP
%% OpenRemote → Grafana
OPENREMOTE -->|API Query| GRAF
%% All → Prometheus (Metrics)
EMQX -.->|Metrics| PROM
ORION -.->|Metrics| PROM
STELLIO -.->|Metrics| PROM
OPENREMOTE -.->|Metrics| PROM
%% Style
classDef simulator fill:#1e293b,stroke:#fb923c,stroke-width:2px,color:#fff
classDef broker fill:#0f172a,stroke:#22d3ee,stroke-width:2px,color:#fff
classDef context fill:#0f172a,stroke:#34d399,stroke-width:2px,color:#fff
classDef iot fill:#0f172a,stroke:#a78bfa,stroke-width:2px,color:#fff
classDef storage fill:#0f172a,stroke:#fbbf24,stroke-width:2px,color:#fff
classDef viz fill:#0f172a,stroke:#22d3ee,stroke-width:2px,color:#fff
class SIM,SENSORS simulator
class EMQX,MOSQ,BUNKER broker
class ORION,STELLIO,FROST context
class OPENREMOTE,KEYCLOAK iot
class INFLUX,PROM,GEO storage
class GRAF,MAP,ORUI viz
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
openremoteavec Service Account - Token endpoint :
/auth/realms/smartcity/protocol/openid-connect/token
- Client
5. Stockage & Métriques
- InfluxDB : Stockage temporel pour Grafana
- Bucket :
iot_data - Datasource dans Grafana
- Bucket :
- 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
- Dashboard :
- 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