diff --git a/data-flow-diagram.md b/data-flow-diagram.md index 80bcd910..6d4383f5 100644 --- a/data-flow-diagram.md +++ b/data-flow-diagram.md @@ -13,6 +13,7 @@ graph TB %% ===== COUCHE 1 : SOURCES DE DONNÉES ===== subgraph Sources["📡 COUCHE 1 : SOURCES DE DONNÉES"] SIM[Smart City Simulator
Python • 10 capteurs
MQTT + REST API] + SENSORS[Capteurs IoT Réels
MQTT/HTTP] end %% ===== COUCHE 2 : MQTT BROKERS ===== @@ -50,46 +51,54 @@ graph TB end %% ===== FLUX DE DONNÉES ===== - - %% Simulator → MQTT Brokers + + %% 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| OR + %% MQTT Brokers → Context Brokers EMQX -->|NGSI-LD| ORION EMQX -->|NGSI-LD| STELLIO EMQX -->|SensorThings| FROST - - %% Simulator → OpenRemote (REST) - SIM -.->|REST API| OR + + %% MQTT Brokers → OpenRemote (via MQTT Agent) + EMQX -->|MQTT (Agent)| OR + MOSQ -->|MQTT (Agent)| OR + BUNKER -->|MQTT (Agent)| OR + + %% OpenRemote → Keycloak OR -.-> KC - - %% Simulator → InfluxDB + + %% 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 OR -->|API Query| GRAF - + %% All → Prometheus (Metrics) EMQX -.->|Metrics| PROM ORION -.->|Metrics| PROM STELLIO -.->|Metrics| PROM OR -.->|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 @@ -97,8 +106,8 @@ graph TB 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 simulator + + class SIM,SENSORS simulator class EMQX,MOSQ,BUNKER broker class ORION,STELLIO,FROST context class OR,KC iot @@ -113,7 +122,8 @@ graph TB ### 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 + REST API +- 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 @@ -135,6 +145,8 @@ graph TB - **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`