# Session Resume - Smart City Digital Twin Martinique (2026-05-06) - FINAL ## Objectif Finaliser l'installation et l'accessibilité du Smart City Digital Twin Martinique, spécifiquement la mise en service du flux complet : Simulator → 3 IoT-Agents → Orion-LD → QuantumLeap → CrateDB → Grafana. ## État d'avancement (17h30) ### ✅ Réalisé 1. **3 IoT-Agents déployés** : Un par broker MQTT (EMQX:4041, Mosquitto:4042, BunkerM:4043) 2. **Orion-LD opérationnel** : Port 1026, connecté à MongoDB existant 3. **QuantumLeap corrigé** : Variables CRATE_HOST/PORT (plus de QL_CRATEDB_*) 4. **CrateDB ↔ Grafana** : Datasource "CrateDB-SmartCity" (ID: 23) ajoutée 5. **Flux validé (logs)** : IoT-Agent → Orion-LD (message "Value updated successfully") 6. **Diagrammes mis à jour** : data-flow-diagram.md & .html (3 IoT-Agents architecture) 7. **Git commit & push** : Tous les changements sur Gitea ### ❌ Problèmes en cours 1. **Orion-LD vide** : `curl http://localhost:1026/v2/entities` retourne `[]` malgré les logs IoT-Agent positifs - Cause probable : Problème de résolution de nom (logs montrent `orion-ld` au lieu de `smart-city-orion-ld`) - Action : Corriger les aliases réseau dans docker-compose.orion-ld.yml (FAIT) 2. **Stellio** : Pas encore de flux de données (abonnement Orion-LD → Stellio à configurer) 3. **Simulateur** : Doit publier sur le topic avec préfixe `json/` (ex: `json/smartcity-api-key/airquality_001/attrs`) ## Architecture finale (3 IoT-Agents) ``` Simulateur (Python) ↓ (publie sur 3 brokers avec format IoT-Agent) ┌─────────────┬─────────────┬─────────────┐ │ EMQX │ Mosquitto │ BunkerM │ │ port 11883 │ port 1883 │ port 1900 │ └──────┬──────┴──────┬──────┴──────┬──────┘ ↓ ↓ ↓ ┌─────────────┬─────────────┬─────────────┐ │iot-agent-emqx│iot-agent- │iot-agent- │ │(port 4041) │mosquitto │bunkerm │ │ │(port 4042) │(port 4043) │ └──────┬──────┴──────┬──────┴──────┬──────┘ └──────────────┴──────────────┘ ↓ Orion-LD (port 1026) (http://smart-city-orion-ld:1026) ↓ Subscription (ID: 69fbb09af55b82cad2a38008) Forward to QuantumLeap ↓ QuantumLeap (port 8668) ↓ CrateDB (ports 5432/4200) ↓ Grafana (port 3001) ``` ## Configuration des IoT-Agents ### Services enregistrés (pour chaque IoT-Agent) ```json { "apikey": "smartcity-api-key", "cbroker": "http://smart-city-orion-ld:1026", "resource": "/", "type": "AirQualityObserved", "service": "smartcity", "subservice": "/" } ``` ### Devices enregistrés - **Device ID** : airquality_001 - **Entity Name** : urn:ngsi-ld:AirQualityObserved:airquality_001 - **Attributes** : NO2 (Number), temperature (Number), humidity (Number) ## Sous-domaines (Traefik) - `iot-agent-emqx.digitribe.fr` → Port 4041 - `iot-agent-mosquitto.digitribe.fr` → Port 4042 - `iot-agent-bunkerm.digitribe.fr` → Port 4043 - `orion-ld.digitribe.fr` → Port 1026 - `quantum-leap.digitribe.fr` → Port 8668 - `grafana.digitribe.fr` → Port 3001 ## Fichiers modifiés et commités 1. `docker-compose.iot-agent.yml` : 3 instances IoT-Agent 2. `docker-compose.orion-ld.yml` : Orion-LD avec MongoDB 3. `docker-compose.quantumleap.yml` : Variables CRATE_HOST/PORT 4. `simulator.py` : Publication sur 3 brokers 5. `data-flow-diagram.md` : Diagramme Mermaid mis à jour 6. `data-flow-diagram.html` : Version HTML pour Gitea 7. `session_resume_2026-05-06.md` : Ce fichier ## Commandes utiles pour debug ### Vérifier IoT-Agent ```bash curl -s http://localhost:4041/iot/devices -H 'FIWARE-Service: smartcity' docker logs smart-city-iot-agent-emqx --tail 50 | grep -i "update\|orion\|error" ``` ### Vérifier Orion-LD ```bash curl -s http://localhost:1026/v2/entities?type=AirQualityObserved docker logs smart-city-orion-ld --tail 50 ``` ### Tester le flux complet ```bash # Publication MQTT (avec préfixe json/) mosquitto_pub -h localhost -p 11883 \ -t "json/smartcity-api-key/airquality_001/attrs" \ -m '{"NO2": 70.5, "temperature": 31.0, "humidity": 88.0}' # Attendre 10s puis vérifier Orion-LD sleep 10 && curl -s http://localhost:1026/v2/entities ``` ## Prochaines étapes 1. **Valider le flux** : Vérifier qu'Orion-LD reçoit les entités (corriger le nom d'hôte) 2. **Configurer Stellio** : Abonnement Orion-LD → Stellio (port 8080) 3. **Créer les dashboards Grafana** : Utiliser la datasource CrateDB-SmartCity 4. **Mettre à jour le simulateur** : S'assurer qu'il publie sur le bon topic (`json/...`) 5. **Tester avec les 3 brokers** : Valider EMQX, Mosquitto et BunkerM ## Notes importantes - L'IoT-Agent écoute les topics avec préfixe `json/` (ex: `$share/json//+/+/attrs/+`) - Le simulateur doit publier sur `json/smartcity-api-key/{device_id}/attrs` - Pour Stellio, utiliser l'URL : `http://stellio-api-gateway:8080/ngsi-ld/v1/entityOperations/upsert` - QuantumLeap utilise CrateDB avec le schéma `quantumleap` --- *Dernière mise à jour : 06 Mai 2026, 17h30*