# Résumé Final - Smart City Digital Twin (06 Mai 2026 - 19h30) ## ✅ Ce qui fonctionne 1. **MQTT Brokers** : EMQX (11883), Mosquitto (1883), BunkerM (1900) - OK 2. **IoT-Agents** : Reçoivent les données MQTT et mettent à jour Orion-LD - OK 3. **Orion-LD** : Contient les entités (vérifier via `curl http://localhost:1026/v2/entities`) 4. **CrateDB** : Fonctionne parfaitement (INSERT manuel OK) 5. **Grafana** : Datasources CrateDB configurées (IDs 23, 24) 6. **Redis** : Installé et accessible par QuantumLeap ## ❌ Problème bloquant : QuantumLeap → CrateDB **Symptômes :** - QuantumLeap reçoit les notifications (`/v2/notify` → "Notification successfully processed") - Aucune donnée insérée dans CrateDB (`quantumleap.etairqualityobserved`) - La queue Redis reste vide (`rq:queue:default` n'existe pas) - `WQ_OFFLOAD_WORK=True` est activé mais les tâches ne sont pas ajoutées à la queue **Investigation :** - `offload_to_work_queue()` retourne `True` ✅ - `redis_connection()` utilise `REDIS_HOST=smart-city-redis` et `REDIS_PORT=6379` ✅ - Worker RQ lancé et connecté ✅ - Mais `InsertAction.enqueue()` n'ajoute rien à la queue Redis **Hypothèses :** 1. `InsertAction` n'est pas picklable (échec silencieux de `q.enqueue()`) 2. Problème de connexion Redis dans `enqueue()` 3. La méthode `trans.insert()` échoue silencieusement 4. Bug dans le module `wq` de QuantumLeap ## 🛠️ Solution temporaire (pour Grafana) Des données de test ont été insérées manuellement dans CrateDB : ```sql INSERT INTO quantumleap.etairqualityobserved (entity_id, time_index, no2, temperature, humidity) VALUES ('urn:ngsi-ld:AirQualityObserved:sensor001', 1778112000000, 45.5, 28.0, 85.0), ... ``` **Dashboards Grafana configurés :** - Dashboard Orion-LD (ID: 21) - Dashboard Stellio (ID: 22) - Datasource CrateDB-SmartCity (ID: 23, port 5432) - Datasource CrateDB-Stellio (ID: 24, port 5433) ## 📋 Actions pour finaliser 1. **Stellio Pipeline** : - Corriger `docker-compose.quantumleap-stellio.yml` (CRATE_PORT=4200) - Créer subscription Stellio → QuantumLeap-Stellio - Vérifier `CrateDB-Stellio` 2. **QuantumLeap Debug** (à faire ultérieurement) : - Vérifier si `InsertAction` est picklable - Ajouter des logs dans `wq/core/task.py` (`enqueue()`) - Tester `trans.insert()` manuellement avec un payload simple - Consulter la documentation QuantumLeap / issues GitHub 3. **Simulateur** : - `simulator.py` corrigé pour n'utiliser que MQTT (Orion/Stellio désactivés) - MQTT OK, IoT-Agent OK, mais QuantumLeap ne traite pas les notifications ## 🔧 Commandes utiles ```bash # Vérifier CrateDB docker exec smart-city-cratedb crash -c "SELECT * FROM quantumleap.etairqualityobserved LIMIT 10;" # Vérifier Redis docker exec smart-city-redis redis-cli keys "*" # Voir les logs QuantumLeap docker logs smart-city-quantumleap --tail 100 # Tester notification manuelle curl -s -X POST http://localhost:8668/v2/notify -H 'Content-Type: application/json' \ -d '{"subscriptionId": "test", "data": [{...}]}' ``` ## 📊 Fichiers modifiés - `docker-compose.quantumleap.yml` : +Redis, +healthcheck CrateDB, +variables environnement - `simulator.py` : Orion-LD et Stellio désactivés (MQTT uniquement) - `RESUME_FINAL_2026-05-06.md` : Ce fichier --- **Prochaine étape** : Configurer la pipeline Stellio et finaliser les dashboards Grafana avec les données de test. Le problème QuantumLeap nécessite une investigation plus poussée du code source (`wq` module).