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

5.5 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 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)

{
  "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

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

curl -s http://localhost:1026/v2/entities?type=AirQualityObserved
docker logs smart-city-orion-ld --tail 50

Tester le flux complet

# 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