Diagramme de flux: OpenRemote via brokers+MQTT Agent, pas de REST direct du simulateur
This commit is contained in:
@@ -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`
|
||||||
|
|||||||
Reference in New Issue
Block a user