# 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*