docs: Update HTML diagram - 3 IoT Agents architecture
This commit is contained in:
@@ -1,408 +1,119 @@
|
|||||||
<h1
|
<!DOCTYPE html>
|
||||||
id="smart-city-digital-twin-martinique-diagramme-des-flux-de-données">Smart
|
<html>
|
||||||
City Digital Twin Martinique — Diagramme des Flux de Données</h1>
|
<head>
|
||||||
<p><strong>Dernière mise à jour :</strong> 06 Mai 2026<br />
|
<title>Smart City Data Flow Diagram</title>
|
||||||
<strong>Projet :</strong> Smart City Digital Twin Martinique<br />
|
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
|
||||||
<strong>Architecture :</strong> IoT-Agent intégré, QuantumLeap + CrateDB
|
<script>
|
||||||
pour l’analyse avancée</p>
|
mermaid.initialize({ startOnLoad: true, theme: 'dark' });
|
||||||
<hr />
|
</script>
|
||||||
<h2 id="architecture-globale-mise-à-jour-06052026">Architecture Globale
|
<style>
|
||||||
(Mise à jour 06/05/2026)</h2>
|
body {
|
||||||
<pre class="mermaid"><code>graph TB
|
background-color: #1a1a1a;
|
||||||
subgraph Simulateur["🖥️ Simulateur (Host Python)"]
|
color: white;
|
||||||
SIM[Smart City Simulator<br/>10 capteurs<br/>Intervalle: configurable]
|
font-family: Arial, sans-serif;
|
||||||
|
padding: 20px;
|
||||||
|
}
|
||||||
|
.mermaid {
|
||||||
|
background-color: #2a2a2a;
|
||||||
|
padding: 20px;
|
||||||
|
border-radius: 10px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Smart City Digital Twin - Data Flow Diagram</h1>
|
||||||
|
<p>Updated: 2026-05-06 - Architecture with 3 IoT Agents (one per MQTT broker)</p>
|
||||||
|
<div class="mermaid">
|
||||||
|
graph TB
|
||||||
|
subgraph Simulateur["🖥️ Simulateur (Host Python)"]
|
||||||
|
SIM[Smart City Simulator<br/>10 capteurs<br/>Intervalle: configurable]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph MQTT_Brokers["📡 MQTT Brokers"]
|
subgraph MQTT_Brokers["📡 MQTT Brokers"]
|
||||||
EMQ[EMQX<br/>port 11883]
|
EMQ[EMQX<br/>port 11883]
|
||||||
MOS[Mosquitto<br/>port 1883]
|
MOS[Mosquitto<br/>port 1883]
|
||||||
BUN[BunkerM<br/>port 1900<br/>MQTTS/TLS]
|
BUN[BunkerM<br/>port 1900<br/>MQTTS/TLS]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph IoT_Agent["🤖 IoT Agent (NGSI-LD)"]
|
subgraph IoT_Agent["🤖 3 IoT Agents (NGSI-LD)"]
|
||||||
IOTA[IoT Agent JSON<br/>port 4041<br/>Transforme MQTT → NGSI-LD]
|
IOTA_EMQ[IoT-Agent-EMQX<br/>port 4041<br/>Ecoute EMQX]
|
||||||
|
IOTA_MOS[IoT-Agent-Mosquitto<br/>port 4042<br/>Ecoute Mosquitto]
|
||||||
|
IOTA_BUN[IoT-Agent-BunkerM<br/>port 4043<br/>Ecoute BunkerM]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph CB["🔗 Context Brokers (NGSI-LD)"]
|
subgraph CB["🔗 Context Brokers (NGSI-LD)"]
|
||||||
ORI[Orion-LD<br/>NGSI-LD<br/>port 1026]
|
ORI[Orion-LD<br/>NGSI-v2<br/>port 1026]
|
||||||
STE[Stellio<br/>NGSI-LD<br/>port 8080]
|
STE[Stellio<br/>NGSI-LD<br/>port 8080]
|
||||||
FRO[FROST-Server<br/>SensorThings<br/>port 8080]
|
FRO[FROST-Server<br/>SensorThings<br/>port 8080]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph Analytics["📈 Analytics & Time-Series"]
|
subgraph Analytics["📈 Analytics & Time-Series"]
|
||||||
QL[QuantumLeap<br/>NGSI-LD → CrateDB<br/>port 8668]
|
QL[QuantumLeap<br/>NGSI-LD → CrateDB<br/>port 8668]
|
||||||
CRATEDB[CrateDB<br/>PostgreSQL-compatible<br/>port 4200/5432]
|
CRATEDB[CrateDB<br/>PostgreSQL-compatible<br/>port 4200/5432]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph Storage["💾 Stockage & Métriques"]
|
subgraph Storage["💾 Stockage & Métriques"]
|
||||||
INF[InfluxDB<br/>Bucket: iot_data<br/>port 8086]
|
INF[InfluxDB<br/>Bucket: iot_data<br/>port 8086]
|
||||||
PRO[Prometheus<br/>Scrape: /metrics<br/>port 9090]
|
PRO[Prometheus<br/>Scrape: /metrics<br/>port 9090]
|
||||||
GEO[GeoServer<br/>WMS/WFS/WMTS<br/>port 8080]
|
GEO[GeoServer<br/>WMS/WFS/WMTS<br/>port 8080]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph IoT_Platform["🏢 Plateforme IoT"]
|
subgraph IoT_Platform["🏢 Plateforme IoT"]
|
||||||
ORM[OpenRemote Manager<br/>MQTT Agent<br/>port 8080]
|
ORM[OpenRemote Manager<br/>MQTT Agent<br/>port 8080]
|
||||||
KC[Keycloak<br/>port 8080]
|
KC[Keycloak<br/>port 8080]
|
||||||
end
|
end
|
||||||
|
|
||||||
subgraph VIZ["📊 Visualisation"]
|
subgraph VIZ["📊 Visualisation"]
|
||||||
GRA[Grafana<br/>Dashboards<br/>port 3001]
|
GRA[Grafana<br/>Dashboards<br/>port 3001]
|
||||||
MAP[MapStore<br/>WMS/WFS<br/>port 8080]
|
MAP[MapStore<br/>WMS/WFS<br/>port 8080]
|
||||||
end
|
end
|
||||||
|
|
||||||
%% ── Flux Simulateur ──────────────────────────────────────────
|
%% ── Flux Simulateur ──────────────────────────────────────────
|
||||||
SIM -->|"1️⃣ MQTT publish<br/>city/sensors/{type}/{id}"| EMQ
|
SIM -->|"1️⃣ MQTT publish<br/>smartcity-api-key/{id}/attrs"| EMQ
|
||||||
SIM -->|"1️⃣ MQTT publish"| MOS
|
SIM -->|"1️⃣ MQTT publish"| MOS
|
||||||
SIM -->|"1️⃣ MQTT publish"| BUN
|
SIM -->|"1️⃣ MQTT publish"| BUN
|
||||||
SIM -->|"5️⃣ InfluxDB v2 API<br/>async non-bloquant"| INF
|
SIM -->|"5️⃣ InfluxDB v2 API<br/>async non-bloquant"| INF
|
||||||
|
|
||||||
%% ── Flux MQTT → IoT Agent ──────────────────────────────────
|
%% ── Flux MQTT → IoT Agents ──────────────────────────────────
|
||||||
EMQ -->|"MQTT subscribe<br/>city/sensors/#"| IOTA
|
EMQ -->|"MQTT subscribe<br/>smartcity-api-key/#"| IOTA_EMQ
|
||||||
MOS -->|"MQTT subscribe"| IOTA
|
MOS -->|"MQTT subscribe"| IOTA_MOS
|
||||||
BUN -->|"MQTT subscribe"| IOTA
|
BUN -->|"MQTT subscribe"| IOTA_BUN
|
||||||
|
|
||||||
%% ── Flux IoT Agent → Context Brokers ───────────────────────
|
%% ── Flux IoT Agents → Context Brokers ───────────────────────
|
||||||
IOTA -->|"2️⃣ NGSI-LD POST<br/>/ngsi-ld/v1/entities"| ORI
|
IOTA_EMQ -->|"2️⃣ NGSI-v2 POST<br/>/v2/entities"| ORI
|
||||||
IOTA -->|"2️⃣ NGSI-LD POST"| STE
|
IOTA_MOS -->|"2️⃣ NGSI-v2 POST"| ORI
|
||||||
|
IOTA_BUN -->|"2️⃣ NGSI-v2 POST"| ORI
|
||||||
|
|
||||||
%% ── Flux Context Brokers → QuantumLeap ───────────────────
|
%% ── Flux Context Brokers → QuantumLeap ───────────────────
|
||||||
ORI -->|"NGSI-LD Subscription<br/>→ QuantumLeap"| QL
|
ORI -->|"NGSI-v2 Subscription<br/>→ QuantumLeap"| QL
|
||||||
STE -->|"NGSI-LD Subscription<br/>→ QuantumLeap"| QL
|
|
||||||
|
|
||||||
%% ── Flux QuantumLeap → CrateDB ────────────────────────────
|
%% ── Flux QuantumLeap → CrateDB ────────────────────────────
|
||||||
QL -->|"Insert<br/>PostgreSQL wire"| CRATEDB
|
QL -->|"Insert<br/>PostgreSQL wire"| CRATEDB
|
||||||
|
|
||||||
%% ── Visualisation ───────────────────────────────────────────
|
%% ── Visualisation ───────────────────────────────────────────
|
||||||
CRATEDB -->|"PostgreSQL Datasource"| GRA
|
CRATEDB -->|"PostgreSQL Datasource"| GRA
|
||||||
INF -->|"Datasource Flux IoT"| GRA
|
INF -->|"Datasource Flux IoT"| GRA
|
||||||
ORI -->|"NGSI-LD Datasource"| GRA
|
ORI -->|"NGSI-v2 Datasource"| GRA
|
||||||
STE -->|"NGSI-LD Datasource"| GRA
|
GEO -->|"WMS/WMTS"| MAP
|
||||||
GEO -->|"WMS/WMTS"| MAP
|
ORM -->|MapSettings<br/>Martinique| MAP
|
||||||
ORM -->|MapSettings<br/>Martinique| MAP
|
ORM -->|"Live assets<br/>REST"| GRA
|
||||||
ORM -->|"Live assets<br/>REST"| GRA
|
|
||||||
|
|
||||||
%% ── OpenRemote MQTT Agent ───────────────────────────────────
|
%% ── OpenRemote MQTT Agent ───────────────────────────────────
|
||||||
EMQ -->|"6️⃣ Subscribe<br/>city/sensors/#"| ORM
|
EMQ -->|"6️⃣ Subscribe<br/>city/sensors/#"| ORM
|
||||||
MOS -->|"6️⃣ Subscribe"| ORM
|
MOS -->|"6️⃣ Subscribe"| ORM
|
||||||
BUN -->|"6️⃣ Subscribe"| ORM
|
BUN -->|"6️⃣ Subscribe"| ORM
|
||||||
|
|
||||||
%% ── Métriques Prometheus ────────────────────────────────────
|
%% ── Métriques Prometheus ───────────────────────────────────
|
||||||
SIM -->|"7️⃣ /metrics<br/>port 8001"| PRO
|
SIM -->|"7️⃣ /metrics<br/>port 8001"| PRO
|
||||||
EMQ -->|"/api/v5/metrics"| PRO
|
EMQ -->|"/api/v5/metrics"| PRO
|
||||||
STE -->|"/actuator/prometheus"| PRO
|
STE -->|"/actuator/prometheus"| PRO
|
||||||
INF -->|"/metrics"| PRO
|
INF -->|"/metrics"| PRO
|
||||||
ORM -->|"/actuator/prometheus"| PRO
|
ORM -->|"/actuator/prometheus"| PRO
|
||||||
GRA -->|"/metrics"| PRO
|
GRA -->|"/metrics"| PRO
|
||||||
IOTA -->|"/metrics"| PRO
|
IOTA_EMQ -->|"/metrics"| PRO
|
||||||
QL -->|"/metrics"| PRO</code></pre>
|
IOTA_MOS -->|"/metrics"| PRO
|
||||||
<hr />
|
IOTA_BUN -->|"/metrics"| PRO
|
||||||
<h2 id="flux-détaillés-mise-à-jour-06052026">Flux Détaillés (Mise à jour
|
QL -->|"/metrics"| PRO
|
||||||
06/05/2026)</h2>
|
</div>
|
||||||
<h3 id="flux-mqtt-brokers">1️⃣ Flux MQTT — Brokers</h3>
|
</body>
|
||||||
<table>
|
</html>
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Broker</th>
|
|
||||||
<th>Port</th>
|
|
||||||
<th>Protocol</th>
|
|
||||||
<th>Topics</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>EMQX</td>
|
|
||||||
<td>11883</td>
|
|
||||||
<td>MQTT</td>
|
|
||||||
<td><code>city/sensors/{type}/{id}</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Mosquitto</td>
|
|
||||||
<td>1883</td>
|
|
||||||
<td>MQTT</td>
|
|
||||||
<td><code>city/sensors/{type}/{id}</code></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BunkerM</td>
|
|
||||||
<td>1900</td>
|
|
||||||
<td>MQTTS (TLS)</td>
|
|
||||||
<td><code>city/sensors/{type}/{id}</code></td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<p>Le simulateur publie simultanément sur les 3 brokers vers <strong>IoT
|
|
||||||
Agent</strong>.</p>
|
|
||||||
<h3 id="flux-iot-agent-ngsi-ld">2️⃣ Flux IoT Agent — NGSI-LD</h3>
|
|
||||||
<ul>
|
|
||||||
<li><p><strong>IoT Agent JSON</strong> : Réception MQTT → Transformation
|
|
||||||
en entités NGSI-LD</p></li>
|
|
||||||
<li><p><strong>Port</strong> : <code>4041</code></p></li>
|
|
||||||
<li><p><strong>Configuration</strong> :</p>
|
|
||||||
<div class="sourceCode" id="cb2"><pre
|
|
||||||
class="sourceCode bash"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Enregistrement service</span></span>
|
|
||||||
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-X</span> POST http://localhost:4041/iot/services <span class="dt">\</span></span>
|
|
||||||
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> <span class="at">-H</span> <span class="st">'Content-Type: application/json'</span> <span class="dt">\</span></span>
|
|
||||||
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> <span class="at">-H</span> <span class="st">'fiware-service: smartcity'</span> <span class="dt">\</span></span>
|
|
||||||
<span id="cb2-5"><a href="#cb2-5" aria-hidden="true" tabindex="-1"></a> <span class="at">-d</span> <span class="st">'{"services": [{"apikey": "smartcity-api-key", "cbroker": "http://orion-ld:1026", "entity_type": "Device", "ngsi_version": "ld"}]}'</span></span></code></pre></div></li>
|
|
||||||
<li><p><strong>Entités créées dans</strong> : Orion-LD (port 1026) et
|
|
||||||
Stellio (port 8080)</p></li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="flux-context-brokers-quantumleap-cratedb">3️⃣ Flux Context
|
|
||||||
Brokers → QuantumLeap → CrateDB</h3>
|
|
||||||
<ol type="1">
|
|
||||||
<li><strong>Orion-LD</strong> / <strong>Stellio</strong> : Reçoivent les
|
|
||||||
entités NGSI-LD de IoT Agent</li>
|
|
||||||
<li><strong>QuantumLeap</strong> (port 8668) : Souscrit aux mises à jour
|
|
||||||
NGSI-LD via Subscription</li>
|
|
||||||
<li><strong>CrateDB</strong> (port 5432/4200) : Stockage temporel
|
|
||||||
PostgreSQL-compatible</li>
|
|
||||||
<li><strong>Grafana</strong> : Dashboards connectés à CrateDB
|
|
||||||
(PostgreSQL datasource)</li>
|
|
||||||
</ol>
|
|
||||||
<h3 id="flux-influxdb-temps-réel">4️⃣ Flux InfluxDB — Temps Réel</h3>
|
|
||||||
<ul>
|
|
||||||
<li><strong>API</strong> :
|
|
||||||
<code>http://localhost:8086/api/v2/write</code></li>
|
|
||||||
<li><strong>Bucket</strong> : <code>iot_data</code></li>
|
|
||||||
<li><strong>Org</strong> : <code>digitribe</code></li>
|
|
||||||
<li><strong>Mode</strong> : Asynchrone (thread daemon) pour ne pas
|
|
||||||
bloquer le publish MQTT</li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="openremote-mqtt-agent">5️⃣ OpenRemote — MQTT Agent</h3>
|
|
||||||
<p>L’agent MQTT d’OpenRemote souscrit aux topics
|
|
||||||
<code>city/sensors/#</code> sur les brokers MQTT. Les payloads sont
|
|
||||||
automatiquement parsés et les attributs des assets sont mis à jour.</p>
|
|
||||||
<h3 id="flux-prometheus-métriques">6️⃣ Flux Prometheus — Métriques</h3>
|
|
||||||
<table>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Service</th>
|
|
||||||
<th>Endpoint <code>/metrics</code></th>
|
|
||||||
<th>Statut</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>Simulator</td>
|
|
||||||
<td><code>localhost:8001</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>EMQX</td>
|
|
||||||
<td><code>emqx_emqx_1:8081/api/v5/metrics</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Stellio</td>
|
|
||||||
<td><code>stellio-api-gateway:8080/actuator/prometheus</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>InfluxDB</td>
|
|
||||||
<td><code>smart-city-influxdb:8086/metrics</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>OpenRemote</td>
|
|
||||||
<td><code>openremote-manager-1:8080/actuator/prometheus</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Grafana</td>
|
|
||||||
<td><code>smart-city-grafana:3000/metrics</code></td>
|
|
||||||
<td>✅</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>IoT Agent</td>
|
|
||||||
<td><code>iot-agent:4041/metrics</code></td>
|
|
||||||
<td>⚠️ À vérifier</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>QuantumLeap</td>
|
|
||||||
<td><code>quantum-leap:8668/metrics</code></td>
|
|
||||||
<td>⚠️ À vérifier</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<hr />
|
|
||||||
<h2 id="nouveaux-composants-06052026">Nouveaux Composants
|
|
||||||
(06/05/2026)</h2>
|
|
||||||
<h3 id="iot-agent-json">🤖 IoT Agent JSON</h3>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Rôle</strong> : Pont entre MQTT et NGSI-LD (Orion-LD /
|
|
||||||
Stellio)</li>
|
|
||||||
<li><strong>Port</strong> : 4041</li>
|
|
||||||
<li><strong>Statut</strong> : ❌ En cours de réparation (erreur
|
|
||||||
MongoDB)</li>
|
|
||||||
<li><strong>Correction</strong> : Fournir
|
|
||||||
<code>IOTA_MONGO_URL=mongodb://mongodb:27017/iotagent</code></li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="quantumleap">📈 QuantumLeap</h3>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Rôle</strong> : Analytics NGSI-LD → CrateDB</li>
|
|
||||||
<li><strong>Port</strong> : 8668</li>
|
|
||||||
<li><strong>Statut</strong> : ✅ Fonctionnel (interne), port non exposé
|
|
||||||
sur l’hôte</li>
|
|
||||||
<li><strong>Action</strong> : Exposer le port dans docker-compose</li>
|
|
||||||
</ul>
|
|
||||||
<h3 id="cratedb">🗄️ CrateDB</h3>
|
|
||||||
<ul>
|
|
||||||
<li><strong>Rôle</strong> : Base de données temporelle
|
|
||||||
PostgreSQL-compatible</li>
|
|
||||||
<li><strong>Port</strong> : 4200 (UI), 5432 (PostgreSQL)</li>
|
|
||||||
<li><strong>Statut</strong> : ✅ Opérationnel</li>
|
|
||||||
<li><strong>Usage</strong> : Stockage des séries temporelles depuis
|
|
||||||
QuantumLeap</li>
|
|
||||||
</ul>
|
|
||||||
<hr />
|
|
||||||
<h2 id="tableau-récapitulatif-mise-à-jour">Tableau Récapitulatif (Mise à
|
|
||||||
jour)</h2>
|
|
||||||
<table>
|
|
||||||
<colgroup>
|
|
||||||
<col style="width: 28%" />
|
|
||||||
<col style="width: 34%" />
|
|
||||||
<col style="width: 15%" />
|
|
||||||
<col style="width: 21%" />
|
|
||||||
</colgroup>
|
|
||||||
<thead>
|
|
||||||
<tr>
|
|
||||||
<th>Composant</th>
|
|
||||||
<th>Technologie</th>
|
|
||||||
<th>Port</th>
|
|
||||||
<th>Statut</th>
|
|
||||||
</tr>
|
|
||||||
</thead>
|
|
||||||
<tbody>
|
|
||||||
<tr>
|
|
||||||
<td>Simulator</td>
|
|
||||||
<td>Python + paho-mqtt</td>
|
|
||||||
<td>Host:8001 (metrics)</td>
|
|
||||||
<td>✅ Actif</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>EMQX</td>
|
|
||||||
<td>MQTT Broker</td>
|
|
||||||
<td>11883</td>
|
|
||||||
<td>✅ Connecté</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Mosquitto</td>
|
|
||||||
<td>MQTT Broker</td>
|
|
||||||
<td>1883</td>
|
|
||||||
<td>✅ Connecté</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>BunkerM</td>
|
|
||||||
<td>MQTTS Broker</td>
|
|
||||||
<td>1900</td>
|
|
||||||
<td>✅ Connecté</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>IoT Agent</strong></td>
|
|
||||||
<td><strong>NGSI-LD Bridge</strong></td>
|
|
||||||
<td><strong>4041</strong></td>
|
|
||||||
<td><strong>❌ Erreur MongoDB</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Orion-LD</td>
|
|
||||||
<td>NGSI-LD Broker</td>
|
|
||||||
<td>1026</td>
|
|
||||||
<td>⚠️ À vérifier</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Stellio</td>
|
|
||||||
<td>NGSI-LD Broker</td>
|
|
||||||
<td>8080</td>
|
|
||||||
<td>⚠️ Ports occupés par OpenRemote</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>FROST-Server</td>
|
|
||||||
<td>SensorThings API</td>
|
|
||||||
<td>8080</td>
|
|
||||||
<td>⚠️ À vérifier</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>QuantumLeap</strong></td>
|
|
||||||
<td><strong>NGSI-LD → CrateDB</strong></td>
|
|
||||||
<td><strong>8668</strong></td>
|
|
||||||
<td><strong>✅ Interne</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td><strong>CrateDB</strong></td>
|
|
||||||
<td><strong>PostgreSQL Time-Series</strong></td>
|
|
||||||
<td><strong>4200/5432</strong></td>
|
|
||||||
<td><strong>✅ Opérationnel</strong></td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>OpenRemote</td>
|
|
||||||
<td>IoT Platform</td>
|
|
||||||
<td>8080</td>
|
|
||||||
<td>⚠️ 403 (Service Account)</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>InfluxDB</td>
|
|
||||||
<td>Time Series DB</td>
|
|
||||||
<td>8086</td>
|
|
||||||
<td>✅ Bucket iot_data</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>Grafana</td>
|
|
||||||
<td>Visualisation</td>
|
|
||||||
<td>3001</td>
|
|
||||||
<td>✅ Dashboards + CrateDB</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>GeoServer</td>
|
|
||||||
<td>Geo Data</td>
|
|
||||||
<td>8080</td>
|
|
||||||
<td>✅ REST OK</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>MapStore</td>
|
|
||||||
<td>Cartographie</td>
|
|
||||||
<td>8080</td>
|
|
||||||
<td>✅ WMS/WMTS</td>
|
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
<hr />
|
|
||||||
<h2 id="actions-prioritaires">Actions Prioritaires</h2>
|
|
||||||
<ol type="1">
|
|
||||||
<li><strong>Corriger IoT Agent</strong> : Ajouter MongoDB et configurer
|
|
||||||
<code>IOTA_MONGO_URL</code></li>
|
|
||||||
<li><strong>Exposer QuantumLeap</strong> : Mapper le port 8668 dans
|
|
||||||
docker-compose</li>
|
|
||||||
<li><strong>Déployer Orion-LD</strong> : Créer le service s’il n’existe
|
|
||||||
pas</li>
|
|
||||||
<li><strong>Libérer les ports</strong> : Résoudre le conflit
|
|
||||||
Stellio/OpenRemote sur le port 8080</li>
|
|
||||||
<li><strong>Configurer CrateDB</strong> : Créer les tables pour
|
|
||||||
QuantumLeap</li>
|
|
||||||
<li><strong>Mettre à jour le simulateur</strong> :
|
|
||||||
<code>ENABLE_PULSAR=false</code> (recommandé)</li>
|
|
||||||
</ol>
|
|
||||||
<hr />
|
|
||||||
<h2 id="commandes-utiles">Commandes Utiles</h2>
|
|
||||||
<div class="sourceCode" id="cb3"><pre
|
|
||||||
class="sourceCode bash"><code class="sourceCode bash"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a><span class="co"># Vérifier IoT Agent</span></span>
|
|
||||||
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-s</span> http://localhost:4041/iot/services <span class="at">-H</span> <span class="st">'fiware-service: smartcity'</span></span>
|
|
||||||
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a></span>
|
|
||||||
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a><span class="co"># Vérifier QuantumLeap</span></span>
|
|
||||||
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-s</span> http://localhost:8668/version</span>
|
|
||||||
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a></span>
|
|
||||||
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a><span class="co"># Vérifier CrateDB</span></span>
|
|
||||||
<span id="cb3-8"><a href="#cb3-8" aria-hidden="true" tabindex="-1"></a><span class="ex">psql</span> <span class="at">-h</span> localhost <span class="at">-p</span> 5432 <span class="at">-U</span> crate <span class="at">-c</span> <span class="st">"SELECT * FROM ql_entities LIMIT 5;"</span></span>
|
|
||||||
<span id="cb3-9"><a href="#cb3-9" aria-hidden="true" tabindex="-1"></a></span>
|
|
||||||
<span id="cb3-10"><a href="#cb3-10" aria-hidden="true" tabindex="-1"></a><span class="co"># Vérifier Orion-LD</span></span>
|
|
||||||
<span id="cb3-11"><a href="#cb3-11" aria-hidden="true" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-s</span> http://localhost:1026/version</span>
|
|
||||||
<span id="cb3-12"><a href="#cb3-12" aria-hidden="true" tabindex="-1"></a></span>
|
|
||||||
<span id="cb3-13"><a href="#cb3-13" aria-hidden="true" tabindex="-1"></a><span class="co"># Voir les logs IoT Agent</span></span>
|
|
||||||
<span id="cb3-14"><a href="#cb3-14" aria-hidden="true" tabindex="-1"></a><span class="ex">docker</span> logs smart-city-iot-agent <span class="at">--tail</span> 30</span></code></pre></div>
|
|
||||||
<hr />
|
|
||||||
<p><strong>Fichiers associés :</strong> - Simulateur :
|
|
||||||
<code>~/smart-city-digital-twin-martinique/simulator.py</code> -
|
|
||||||
Dashboard Grafana :
|
|
||||||
<code>~/smart-city-digital-twin-martinique/grafana_dashboard_smartcity.json</code>
|
|
||||||
- Ce diagramme :
|
|
||||||
<code>~/smart-city-digital-twin-martinique/data-flow-diagram.md</code> -
|
|
||||||
Session Resume :
|
|
||||||
<code>~/smart-city-digital-twin-martinique/session_resume_2026-05-07.md</code></p>
|
|
||||||
|
|||||||
Reference in New Issue
Block a user