Files
smart-city-digital-twin-mar…/RESUME_FINAL_2026-05-06.md

3.5 KiB

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 :

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

# 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).