Files
smart-city-digital-twin-mar…/data-flow-diagram.md

174 lines
5.4 KiB
Markdown

# 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
subgraph S1["COUCHE 1 SOURCES"]
SIM[Smart City Simulator]
SENS[Capteurs IoT Reels]
end
subgraph S2["COUCHE 2 MQTT BROKERS"]
EMQ[EMQX]
MOS[Mosquitto]
BUN[BunkerM]
end
subgraph S3["COUCHE 3 CONTEXT BROKERS"]
ORI[Orion-LD]
STE[Stellio]
FRO[FROST-Server]
end
subgraph S4["COUCHE 4 IoT OpenRemote"]
ORM[OpenRemote Manager]
KC[Keycloak]
end
subgraph S5["COUCHE 5 STOCKAGE"]
INF[InfluxDB]
PRO[Prometheus]
GEO[GeoServer]
end
subgraph S6["COUCHE 6 VISUALISATION"]
GRA[Grafana]
MAP[MapStore]
UI[OpenRemote UI]
end
SIM -->|MQTT| EMQ
SIM -->|MQTT| MOS
SIM -->|MQTTS| BUN
SENS -->|MQTT| EMQ
SENS -.->|MQTT direct| ORM
EMQ -->|NGSI-LD| ORI
EMQ -->|NGSI-LD| STE
EMQ -->|SensorThings| FRO
EMQ -->|MQTT Agent| ORM
MOS -->|MQTT Agent| ORM
BUN -->|MQTT Agent| ORM
ORM -.-> KC
SIM -->|HTTP| INF
ORI -->|Query| GRA
STE -->|Query| GRA
FRO -->|Query| GRA
ORI -.->|PostGIS| GEO
STE -.->|PostGIS| GEO
FRO -.->|PostGIS| GEO
GEO -->|WMS/WFS| MAP
ORM -->|API Query| GRA
EMQ -.->|Metrics| PRO
ORI -.->|Metrics| PRO
STE -.->|Metrics| PRO
ORM -.->|Metrics| PRO
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,SENS simulator
class EMQ,MOS,BUN broker
class ORI,STE,FRO context
class ORM,KC iot
class INF,PRO,GEO storage
class GRA,MAP,UI 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 `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