11 KiB
1|# Architecture Smart City Digital Twin - Martinique (État au 07 Mai 2026)
2|
3|## Architecture Validée : Simulateur → MQTT → IoT Agents → Context Brokers → Time-Series
4|
5|```
6|┌─────────────────────────────────────────────────────────────────────────────┐
7|│ Smart City Simulator (Python) │
8|│ Publie sur 3 brokers MQTT avec format IoT-Agent JSON (30 capteurs) │
9|└──────────┬────────────────────┬──────────────────────┬───────────────────┘
10| │ │ │
11| ▼ ▼ ▼
12|┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
13|│ EMQX Broker │ │ Mosquitto Broker │ │ BunkerM Broker │
14|│ (emqx_emqx_1)│ │ (smart-city- │ │ (mqtt.digitribe.│
15|│ :1883 (host │ │ mosquitto) │ │ fr:1900) │
16|│ 11883) │ │ :1883 (host │ │ ⏳ À tester │
17|│ ✅ Fonctionnel │ │ 1883) │ │ mosquitto2 │
18|│ │ │ ✅ Fonctionnel │ │ │
19|└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
20| │ │ │
21| ▼ ▼ ▼
22|┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
23|│ IoT-Agent-EMQX │ │IoT-Agent-Mosquitto│ │IoT-Agent-BunkerM │
24|│ (smart-city- │ │ (smart-city- │ │ (smart-city- │
25|│ iot-agent-emqx)│ │ iot-agent- │ │ iot-agent- │
26|│ :4041 │ │ mosquitto) │ │ bunkerm) │
27|│ Apikey: smart- │ │ :4042 │ │ :4043 │
28|│ city-api-key │ │ Apikey: smart- │ │ Apikey: bunker-│
29|│ │ │ city-api-key │ │ m-api-key │
30|└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
31| └───────────────────────┴──────────────────────┘
32| │
33| ▼
34| ┌───────────────┴───────────────┐
35| │ │
36| ▼ ▼
37|┌─────────────────────┐ ┌─────────────────────┐
38|│ Orion-LD │ │ Stellio │
39|│ (smart-city- │ │ (stellio-api- │
40|│ orion-ld) │ │ gateway) │
41|│ Port: 1026 │ │ Port: 8080 │
42|│ ✅ Fonctionnel │ │ ✅ Fonctionnel │
43|│ MongoDB backend │ │ Kafka backend │
44|└─────────┬───────────┘ └─────────┬───────────┘
45| │ │
46| ▼ ▼
47|┌─────────────────────┐ ┌─────────────────────┐
48|│ QuantumLeap-Orion │ │ QuantumLeap-Stellio │
49|│ (smart-city- │ │ (smart-city- │
50|│ quantumleap) │ │ quantumleap) │
51|│ Port: 8668 │ │ Port: 8668? │
52|│ ✅ Fonctionnel │ │ (à vérifier) │
53|│ → CrateDB-Orion │ │ → CrateDB-Stellio │
54|└─────────┬───────────┘ └─────────┬───────────┘
55| │ │
56| ▼ ▼
57|┌─────────────────────┐ ┌─────────────────────┐
58|│ CrateDB-Orion │ │ CrateDB-Stellio │
59|│ (smart-city- │ │ (smart-city- │
60|│ cratedb) │ │ cratedb) │
61|│ Port: 5432/4200 │ │ Port: 5432/4200 │
62|│ DB: quantumleap │ │ DB: quantumleap │
63|│ ✅ Données présentes│ │ (à vérifier) │
64|└─────────┬───────────┘ └─────────┬───────────┘
65| │ │
66| └───────────────────────┬─────────┘
67| │
68| ▼
69| ┌─────────────────────┐
70| │ Grafana │
71| │ (digital-twin- │
72| │ grafana) │
73| │ Port: 3000 │
74| │ https:// │
75| │ grafana.digitribe│
76| │ .fr │
77| │ 2 Datasources: │
78| │ - CrateDB-Orion │
79| │ - CrateDB-Stellio│
80| └─────────────────────┘
81|```
82|
83|## Flux de Données Validés (07 Mai 2026)
84|
85|### Pipeline 1 : Orion-LD ✅ (Opérationnel Complet)
86|1. **Simulateur** → Publie sur EMQX & Mosquitto (topics `smartcity-api-key/{sid}/attrs`) ✅
87|2. **IoT Agents** (EMQX & Mosquitto) → Transfèrent vers Orion-LD ✅
88|3. **Orion-LD** (1026) → Reçoit les entités (`urn:ngsi-ld:AirQualityObserved:sensor001`...) ✅
89|4. **QuantumLeap-Orion** (8668) → Reçoit notifications Orion-LD ✅
90|5. **CrateDB-Orion** (5432) → Persistance dans `quantumleap.etairqualityobserved` ✅
91| - Données vérifiées : `sensor005` (NO2=72.1, temp=31.5°C, humidité=92%)
92|6. **Grafana** ← Visualise données CrateDB ✅
93|
94|### Pipeline 2 : Stellio 🔄 (À finaliser)
95|1. **Simulateur** → Publie sur EMQX & Mosquitto ✅
96|2. **IoT Agents** → Transfèrent vers Stellio (à configurer) ⏳
97|3. **Stellio** (8080) → Reçoit les entités NGSI-LD ✅
98|4. **QuantumLeap-Stellio** → Reçoit notifications Stellio (à configurer) ⏳
99|5. **CrateDB-Stellio** → Persistance (même CrateDB?) ⏳
100|6. Grafana ← Visualise données ⏳
101|
102|## États des Services (07 Mai 2026 - 21h30)
103|
104|| Service | Container | Ports | Statut | Notes |
105||---------|-----------|--------|--------|-------|
106|| Simulateur | smart-city-simulator | - | ✅ UP | Publie sur 2/3 brokers (EMQX ✅, Mosquitto ✅, BunkerM ❌) |
107|| EMQX Broker | emqx_emqx_1 | 1883 (host 11883) | ✅ UP | Messages reçus, topics smartcity-api-key/# ✅ |
108|| Mosquitto Broker | smart-city-mosquitto | 1883 (host 1883) | ✅ UP | Messages reçus ✅ |
109|| BunkerM Broker | smart-city-bunkerm | 1900 | ❌ Inaccessible | mosquitto2.digitribe.fr:1900 ne répond pas au simulateur |
110|| IoT Agent EMQX | smart-city-iot-agent-emqx | 4041 | ✅ UP | Reçoit et transfère vers Orion-LD/Stellio ✅ |
111|| IoT Agent Mosquitto | smart-city-iot-agent-mosquitto | 4042 | ✅ UP | Idem ✅ |
112|| IoT Agent BunkerM | smart-city-iot-agent-bunkerm | 4043 | ⚠️ UP | Mais pas de messages (BunkerM inaccessible) |
113|| Orion-LD | smart-city-orion-ld | 1026 | ✅ UP | Entités créées, subscriptions actives ✅ |
114|| Stellio | stellio-api-gateway | 8080 | ✅ UP | Prêt pour intégration IoT Agent ⏳ |
115|| QuantumLeap | smart-city-quantumleap | 8668 | ✅ UP | Notifications traitées ✅ |
116|| CrateDB | smart-city-cratedb | 5432/4200 | ✅ UP | Table quantumleap.etairqualityobserved ✅ |
117|| Grafana | digital-twin-grafana | 3000 | ✅ UP | https://grafana.digitribe.fr ✅ |
118|| OpenRemote | openremote-manager-1 | 8080/8443 | ✅ UP | Pas encore connecté aux brokers MQTT ⏳ |
119|| ThingsBoard | smart-city-thingsboard | 8080 | ❌ CRASH | Manque /config/thingsboard.conf |
120|
121|## Prochaines Étapes
122|
123|1. ✅ Corriger le simulateur pour publier sur les topics IoT Agent (FAIT)
124|2. ⏳ Configurer Stellio pour recevoir les données des IoT Agents
125|3. ⏳ Finaliser QuantumLeap-Stellio (subscriptions)
126|4. ⏳ Connecter OpenRemote aux brokers MQTT (via MQTT Client assets)
127|5. ⏳ Réparer BunkerM (rendre accessible mosquitto2lateur)
128|6. ⏳ Finaliser Grafana (dashboards avec données CrateDB)
129|7. ❌ Réparer ThingsBoard (créer fichier configuration)
130|
131|## Notes Importantes
132|
133|- Architecture Validée : Le flux Simulateur → Brokers MQTT → IoT Agents → Orion-LD → QuantumLeap → CrateDB est opérationnel.
134|- Format des données : IoT Agent utilise smartcity-api-key/{sid}/attrs (EMQX), smartcity-api-key-mosquitto/{sid}/attrs (Mosquitto), bunkerm-api-key/{sid}/attrs (BunkerM).
135|- Credentials :
136| - Orion-LD : http://smart-city-orion-ld:1026
137| - QuantumLeap : http://smart-city-quantumleap:8668
138| - CrateDB : user crate, pas de mot de passe, port 5432
139| - Grafana : admin / Digitribe972
140| - OpenRemote : admin / Digitribe972
141|- Gitea : https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique
142|
143|---
144|Dernière mise à jour : 07 Mai 2026, 21h30 - Architecture validée Orion-LD pipeline complet