Diagramme de flux: OpenRemote via brokers+MQTT Agent, pas de REST direct du simulateur

This commit is contained in:
Eric FELIXINE
2026-05-04 19:09:59 -04:00
parent 6c05a3b5e4
commit 8bf872ccbf

View File

@@ -13,6 +13,7 @@ graph TB
%% ===== COUCHE 1 : SOURCES DE DONNÉES ===== %% ===== COUCHE 1 : SOURCES DE DONNÉES =====
subgraph Sources["📡 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] SIM[Smart City Simulator<br/>Python • 10 capteurs<br/>MQTT + REST API]
SENSORS[Capteurs IoT Réels<br/>MQTT/HTTP]
end end
%% ===== COUCHE 2 : MQTT BROKERS ===== %% ===== COUCHE 2 : MQTT BROKERS =====
@@ -50,46 +51,54 @@ graph TB
end end
%% ===== FLUX DE DONNÉES ===== %% ===== FLUX DE DONNÉES =====
%% Simulator → MQTT Brokers %% Simulator → MQTT Brokers (NO direct to OpenRemote)
SIM -->|MQTT| EMQX SIM -->|MQTT| EMQX
SIM -->|MQTT| MOSQ SIM -->|MQTT| MOSQ
SIM -->|MQTTS| BUNKER SIM -->|MQTTS| BUNKER
%% Real sensors → Brokers + direct to OpenRemote
SENSORS -->|MQTT| EMQX
SENSORS -.->|MQTT direct| OR
%% MQTT Brokers → Context Brokers %% MQTT Brokers → Context Brokers
EMQX -->|NGSI-LD| ORION EMQX -->|NGSI-LD| ORION
EMQX -->|NGSI-LD| STELLIO EMQX -->|NGSI-LD| STELLIO
EMQX -->|SensorThings| FROST EMQX -->|SensorThings| FROST
%% Simulator → OpenRemote (REST) %% MQTT Brokers → OpenRemote (via MQTT Agent)
SIM -.->|REST API| OR EMQX -->|MQTT (Agent)| OR
MOSQ -->|MQTT (Agent)| OR
BUNKER -->|MQTT (Agent)| OR
%% OpenRemote → Keycloak
OR -.-> KC OR -.-> KC
%% Simulator → InfluxDB %% Simulator → InfluxDB (direct)
SIM -->|HTTP| INFLUX SIM -->|HTTP| INFLUX
%% Context Brokers → Visualization %% Context Brokers → Visualization
ORION -->|Query| GRAF ORION -->|Query| GRAF
STELLIO -->|Query| GRAF STELLIO -->|Query| GRAF
FROST -->|Query| GRAF FROST -->|Query| GRAF
%% Context Brokers → GeoServer (DB Sync) %% Context Brokers → GeoServer (DB Sync)
ORION -.->|PostGIS| GEO ORION -.->|PostGIS| GEO
STELLIO -.->|PostGIS| GEO STELLIO -.->|PostGIS| GEO
FROST -.->|PostGIS| GEO FROST -.->|PostGIS| GEO
%% GeoServer → MapStore %% GeoServer → MapStore
GEO -->|WMS/WFS| MAP GEO -->|WMS/WFS| MAP
%% OpenRemote → Grafana %% OpenRemote → Grafana
OR -->|API Query| GRAF OR -->|API Query| GRAF
%% All → Prometheus (Metrics) %% All → Prometheus (Metrics)
EMQX -.->|Metrics| PROM EMQX -.->|Metrics| PROM
ORION -.->|Metrics| PROM ORION -.->|Metrics| PROM
STELLIO -.->|Metrics| PROM STELLIO -.->|Metrics| PROM
OR -.->|Metrics| PROM OR -.->|Metrics| PROM
%% Style %% Style
classDef simulator fill:#1e293b,stroke:#fb923c,stroke-width:2px,color:#fff classDef simulator fill:#1e293b,stroke:#fb923c,stroke-width:2px,color:#fff
classDef broker fill:#0f172a,stroke:#22d3ee,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 iot fill:#0f172a,stroke:#a78bfa,stroke-width:2px,color:#fff
classDef storage fill:#0f172a,stroke:#fbbf24,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 classDef viz fill:#0f172a,stroke:#22d3ee,stroke-width:2px,color:#fff
class SIM simulator class SIM,SENSORS simulator
class EMQX,MOSQ,BUNKER broker class EMQX,MOSQ,BUNKER broker
class ORION,STELLIO,FROST context class ORION,STELLIO,FROST context
class OR,KC iot class OR,KC iot
@@ -113,7 +122,8 @@ graph TB
### 1. **Génération des données (Simulator)** ### 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) - **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 - 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)** ### 2. **Ingestion MQTT (Brokers)**
- **EMQX** (port 11883) : Broker public, reçoit tous les capteurs - **EMQX** (port 11883) : Broker public, reçoit tous les capteurs
@@ -135,6 +145,8 @@ graph TB
- **OpenRemote Manager** (realm `smartcity`) - **OpenRemote Manager** (realm `smartcity`)
- 33 assets IoT configurés - 33 assets IoT configurés
- Carte Martinique (mapsettings.json) - 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 - **Keycloak** : Authentification OpenID Connect
- Client `openremote` avec Service Account - Client `openremote` avec Service Account
- Token endpoint : `/auth/realms/smartcity/protocol/openid-connect/token` - Token endpoint : `/auth/realms/smartcity/protocol/openid-connect/token`