diff --git a/architecture-multi-cb.md b/architecture-multi-cb.md index f553868c..5624884e 100644 --- a/architecture-multi-cb.md +++ b/architecture-multi-cb.md @@ -1,144 +1,144 @@ -# Architecture Smart City Digital Twin - Martinique (État au 07 Mai 2026) - -## Architecture Validée : Simulateur → MQTT → IoT Agents → Context Brokers → Time-Series - -``` -┌─────────────────────────────────────────────────────────────────────────────┐ -│ Smart City Simulator (Python) │ -│ Publie sur 3 brokers MQTT avec format IoT-Agent JSON (30 capteurs) │ -└──────────┬────────────────────┬──────────────────────┬───────────────────┘ - │ │ │ - ▼ ▼ ▼ -┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ -│ EMQX Broker │ │ Mosquitto Broker │ │ BunkerM Broker │ -│ (emqx_emqx_1)│ │ (smart-city- │ │ (mqtt.digitribe.│ -│ :1883 (host │ │ mosquitto) │ │ fr:1900) │ -│ 11883) │ │ :1883 (host │ │ ❌ Inaccessible │ -│ ✅ Fonctionnel │ │ 1883) │ │ depuis simu │ -│ │ │ ✅ Fonctionnel │ │ │ -└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ - │ │ │ - ▼ ▼ ▼ -┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐ -│ IoT-Agent-EMQX │ │IoT-Agent-Mosquitto│ │IoT-Agent-BunkerM │ -│ (smart-city- │ │ (smart-city- │ │ (smart-city- │ -│ iot-agent-emqx)│ │ iot-agent- │ │ iot-agent- │ -│ :4041 │ │ mosquitto) │ │ bunkerm) │ -│ Apikey: smart- │ │ :4042 │ │ :4043 │ -│ city-api-key │ │ Apikey: smart- │ │ Apikey: bunker-│ -│ │ │ city-api-key │ │ m-api-key │ -└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘ - └───────────────────────┴──────────────────────┘ - │ - ▼ - ┌───────────────┴───────────────┐ - │ │ - ▼ ▼ -┌─────────────────────┐ ┌─────────────────────┐ -│ Orion-LD │ │ Stellio │ -│ (smart-city- │ │ (stellio-api- │ -│ orion-ld) │ │ gateway) │ -│ Port: 1026 │ │ Port: 8080 │ -│ ✅ Fonctionnel │ │ ✅ Fonctionnel │ -│ MongoDB backend │ │ Kafka backend │ -└─────────┬───────────┘ └─────────┬───────────┘ - │ │ - ▼ ▼ -┌─────────────────────┐ ┌─────────────────────┐ -│ QuantumLeap-Orion │ │ QuantumLeap-Stellio │ -│ (smart-city- │ │ (smart-city- │ -│ quantumleap) │ │ quantumleap) │ -│ Port: 8668 │ │ Port: 8668? │ -│ ✅ Fonctionnel │ │ (à vérifier) │ -│ → CrateDB-Orion │ │ → CrateDB-Stellio │ -└─────────┬───────────┘ └─────────┬───────────┘ - │ │ - ▼ ▼ -┌─────────────────────┐ ┌─────────────────────┐ -│ CrateDB-Orion │ │ CrateDB-Stellio │ -│ (smart-city- │ │ (smart-city- │ -│ cratedb) │ │ cratedb) │ -│ Port: 5432/4200 │ │ Port: 5432/4200 │ -│ DB: quantumleap │ │ DB: quantumleap │ -│ ✅ Données présentes│ │ (à vérifier) │ -└─────────┬───────────┘ └─────────┬───────────┘ - │ │ - └───────────────────────┬─────────┘ - │ - ▼ - ┌─────────────────────┐ - │ Grafana │ - │ (digital-twin- │ - │ grafana) │ - │ Port: 3000 │ - │ https:// │ - │ grafana.digitribe│ - │ .fr │ - │ 2 Datasources: │ - │ - CrateDB-Orion │ - │ - CrateDB-Stellio│ - └─────────────────────┘ -``` - -## Flux de Données Validés (07 Mai 2026) - -### Pipeline 1 : Orion-LD ✅ (Opérationnel Complet) -1. **Simulateur** → Publie sur EMQX & Mosquitto (topics `smartcity-api-key/{sid}/attrs`) ✅ -2. **IoT Agents** (EMQX & Mosquitto) → Transfèrent vers Orion-LD ✅ -3. **Orion-LD** (1026) → Reçoit les entités (`urn:ngsi-ld:AirQualityObserved:sensor001`...) ✅ -4. **QuantumLeap-Orion** (8668) → Reçoit notifications Orion-LD ✅ -5. **CrateDB-Orion** (5432) → Persistance dans `quantumleap.etairqualityobserved` ✅ - - Données vérifiées : `sensor005` (NO2=72.1, temp=31.5°C, humidité=92%) -6. **Grafana** ← Visualise données CrateDB ✅ - -### Pipeline 2 : Stellio 🔄 (À finaliser) -1. **Simulateur** → Publie sur EMQX & Mosquitto ✅ -2. **IoT Agents** → Transfèrent vers Stellio (à configurer) ⏳ -3. **Stellio** (8080) → Reçoit les entités NGSI-LD ✅ -4. **QuantumLeap-Stellio** → Reçoit notifications Stellio (à configurer) ⏳ -5. **CrateDB-Stellio** → Persistance (même CrateDB?) ⏳ -6. **Grafana** ← Visualise données ⏳ - -## États des Services (07 Mai 2026 - 21h30) - -| Service | Container | Ports | Statut | Notes | -|---------|-----------|--------|--------|-------| -| **Simulateur** | `smart-city-simulator` | - | ✅ **UP** | Publie sur 2/3 brokers (EMQX ✅, Mosquitto ✅, BunkerM ❌) | -| **EMQX Broker** | `emqx_emqx_1` | 1883 (host 11883) | ✅ **UP** | Messages reçus, topics `smartcity-api-key/#` ✅ | -| **Mosquitto Broker** | `smart-city-mosquitto` | 1883 (host 1883) | ✅ **UP** | Messages reçus ✅ | -| **BunkerM Broker** | `smart-city-bunkerm` | 1900 | ❌ **Inaccessible** | `mqtt.digitribe.fr:1900` ne répond pas au simulateur | -| **IoT Agent EMQX** | `smart-city-iot-agent-emqx` | 4041 | ✅ **UP** | Reçoit et transfère vers Orion-LD/Stellio ✅ | -| **IoT Agent Mosquitto** | `smart-city-iot-agent-mosquitto` | 4042 | ✅ **UP** | Idem ✅ | -| **IoT Agent BunkerM** | `smart-city-iot-agent-bunkerm` | 4043 | ⚠️ **UP** | Mais pas de messages (BunkerM inaccessible) | -| **Orion-LD** | `smart-city-orion-ld` | 1026 | ✅ **UP** | Entités créées, subscriptions actives ✅ | -| **Stellio** | `stellio-api-gateway` | 8080 | ✅ **UP** | Prêt pour intégration IoT Agent ⏳ | -| **QuantumLeap** | `smart-city-quantumleap` | 8668 | ✅ **UP** | Notifications traitées ✅ | -| **CrateDB** | `smart-city-cratedb` | 5432/4200 | ✅ **UP** | Table `quantumleap.etairqualityobserved` ✅ | -| **Grafana** | `digital-twin-grafana` | 3000 | ✅ **UP** | https://grafana.digitribe.fr ✅ | -| **OpenRemote** | `openremote-manager-1` | 8080/8443 | ✅ **UP** | Pas encore connecté aux brokers MQTT ⏳ | -| **ThingsBoard** | `smart-city-thingsboard` | 8080 | ❌ **CRASH** | Manque `/config/thingsboard.conf` | - -## Prochaines Étapes - -1. ✅ **Corriger le simulateur** pour publier sur les topics IoT Agent (FAIT) -2. ⏳ **Configurer Stellio** pour recevoir les données des IoT Agents -3. ⏳ **Finaliser QuantumLeap-Stellio** (subscriptions) -4. ⏳ **Connecter OpenRemote** aux brokers MQTT (via MQTT Client assets) -5. ⏳ **Réparer BunkerM** (rendre accessible depuis simulateur) -6. ⏳ **Finaliser Grafana** (dashboards avec données CrateDB) -7. ❌ **Réparer ThingsBoard** (créer fichier configuration) - -## Notes Importantes - -- **Architecture Validée** : Le flux Simulateur → Brokers MQTT → IoT Agents → Orion-LD → QuantumLeap → CrateDB est **opérationnel**. -- **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). -- **Credentials** : - - Orion-LD : `http://smart-city-orion-ld:1026` - - QuantumLeap : `http://smart-city-quantumleap:8668` - - CrateDB : user `crate`, pas de mot de passe, port 5432 - - Grafana : admin / Digitribe972 - - OpenRemote : admin / Digitribe972 -- **Gitea** : https://gitea.digitribe.fr/eric/smart-city-digital-twin-martinique - ---- -*Dernière mise à jour : 07 Mai 2026, 21h30 - Architecture validée Orion-LD pipeline complet* \ No newline at end of file + 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* \ No newline at end of file