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

5.1 KiB

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 des flux de données : MQTT → IoT-Agent → Context Brokers (Stellio) → QuantumLeap → CrateDB → Grafana

État des conteneurs (17h00)

  • smart-city-iot-agent : Up (port 4041) - Service et devices créés
  • smart-city-quantumleap : Up (port 8668) - FIXÉ (variables CRATE_HOST/PORT au lieu de QL_CRATEDB_*)
  • smart-city-cratedb : Up (ports 5432/4200) - Accessible
  • smart-city-grafana : Up (port 3001) - Prêt mais datasource CrateDB à finaliser ⚠️
  • stellio-api-gateway : Up (port 8080) - Mais retourne 404 sur les entités
  • smart-city-simulator : Up - Modifié pour publier au format IoT-Agent

Travail accompli

  1. Diagramme de flux mis à jour avec IoT-Agent, QuantumLeap, CrateDB (commit+push)
  2. IoT-Agent : Service et devices créés (HTTP 201)
  3. Simulateur : Ajout de publish_iot_agent et variable ENABLE_IOT_AGENT
  4. QuantumLeap :
    • BUG FIX : Changé QL_CRATEDB_HOST/PORT vers CRATE_HOST/PORT (attendu par QuantumLeap)
    • Commit & push effectués
  5. CrateDB : Accessible via port 4200 (SQL interface)
  6. Grafana : Accessible, mais datasource CrateDB nécessite mise en réseau ⚠️
  7. Session resume mis à jour

Blocages rencontrés

  1. Flux MQTT → IoT-Agent → Stellio :

    • IoT-Agent reçoit le message MQTT mais Stellio retourne 404
    • Problème probable : IoT-Agent ne transmet pas correctement à Stellio (timeout/connexion)
  2. QuantumLeap :

    • FIXÉ : Utilisation des bonnes variables d'environnement (CRATE_HOST, CRATE_PORT)
    • Endpoint API : /v2/op/notify (pour recevoir les notifications)
    • Test manuel de notification à faire
  3. Stellio :

    • POST /ngsi-ld/v1/entities retourne 405 (method not allowed)
    • GET /ngsi-ld/v1/entities retourne 404 (pas d'entités)
    • Recommandation : Utiliser Orion-LD ou FROST-Server à la place
  4. Grafana ← CrateDB :

    • Grafana n'est pas sur le même réseau Docker que CrateDB (smartcity-shared)
    • Le port 5432 (PostgreSQL) timeout depuis Grafana
    • Solution : Ajouter networks: - smartcity-shared au service Grafana dans docker-compose.yml

Prochaines étapes

  1. Grafana : Finaliser les dashboards (en attendant que CrateDB soit connecté)

    • Accéder à https://grafana.digitribe.fr
    • Créer un dashboard "Smart City Overview" avec les données InfluxDB existantes
    • Une fois CrateDB connecté : ajouter panels "Air Quality", "Traffic Flow", etc.
  2. QuantumLeap : Tester avec une notification NGSI simulée

    docker exec smart-city-quantumleap curl -X POST http://localhost:8668/v2/op/notify \
      -H 'Content-Type: application/json' \
      -d '{"subscriptionId": "test", "data": [{...}]}'
    
  3. Flux complet : Utiliser Orion-LD au lieu de Stellio

    • Déployer Orion-LD avec -dbhost smart-city-mongodb
    • Créer une subscription Orion-LD → QuantumLeap
  4. Pulsar Manager : Résoudre le login admin (toujours inaccessible)

Commandes utiles

# Vérifier IoT-Agent
curl -s http://localhost:4041/iot/services -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /'
curl -s http://localhost:4041/iot/devices -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /'

# Tester QuantumLeap (via Traefik)
curl -k https://quantum-leap.digitribe.fr/v2/types -w "\nHTTP %{http_code}\n"

# Tester Stellio
curl -s http://localhost:8080/ngsi-ld/v1/entities -H "Accept: application/ld+json" -w "\nHTTP %{http_code}\n"

# Publier un message MQTT pour IoT-Agent
mosquitto_pub -h localhost -p 11883 -t "smartcity-api-key/airquality_001/attrs" \
  -m '{"NO2": 50.5, "temperature": 30.0, "humidity": 90.0}'

# Accéder à Grafana
https://grafana.digitribe.fr (admin / Digitribe972)

# Vérifier CrateDB
docker exec smart-city-cratedb crash -c "SELECT * FROM quantumleap.etairqualityobserved LIMIT 5;"

Fichiers modifiés

  • simulator.py : Ajout publish_iot_agent, variable ENABLE_IOT_AGENT
  • docker-compose.iot-agent.yml : Configuration EMQX et Stellio
  • docker-compose.quantumleap.yml : FIX variables CRATE_HOST/PORT
  • data-flow-diagram.md et .html : Mise à jour architecture
  • session_resume_2026-05-06.md : Ce fichier

Notes importantes

  • Le simulateur publie maintenant sur le topic smartcity-api-key/{device_id}/attrs via EMQX
  • IoT-Agent est configuré pour transmettre à Stellio (cbroker: http://stellio-api-gateway:8080)
  • QuantumLeap est maintenant correctement configuré avec CrateDB
  • CrateDB a des données de test insérées manuellement
  • Grafana a besoin que le réseau smartcity-shared soit ajouté à son service

Pour finaliser (prochaine session)

  1. Ajouter networks: - smartcity-shared à Grafana dans docker-compose.yml
  2. Connecter CrateDB comme datasource Postgres dans Grafana
  3. Créer les dashboards Grafana pour Smart City
  4. Tester le flux complet avec Orion-LD (plus stable que Stellio)