From ff4cd349b684a1061f0d178be59fd939e1dd6df2 Mon Sep 17 00:00:00 2001 From: Eric FELIXINE Date: Wed, 6 May 2026 17:02:36 -0400 Subject: [PATCH] docs: Final session resume 2026-05-06 - QuantumLeap fix, Grafana next steps --- session_resume_2026-05-06.md | 80 ++++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 21 deletions(-) diff --git a/session_resume_2026-05-06.md b/session_resume_2026-05-06.md index e732820c..7f0afd8a 100644 --- a/session_resume_2026-05-06.md +++ b/session_resume_2026-05-06.md @@ -1,43 +1,66 @@ -# Session Resume - Smart City Digital Twin Martinique (2026-05-06) +# 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 (16h35) +## État des conteneurs (17h00) - **smart-city-iot-agent** : Up (port 4041) - Service et devices créés ✅ -- **smart-city-quantumleap** : Up (port 8668) - Écoute mais ne répond pas en HTTP simple ⚠️ +- **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) - CrateDB ajouté comme datasource via subagent ✅ +- **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 ✅ (commit & push) +- **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** : Lancer via `docker-compose.quantumleap.yml` ✅ +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 (configuration cbroker) + - Problème probable : IoT-Agent ne transmet pas correctement à Stellio (timeout/connexion) 2. **QuantumLeap** : - - Port 8668 en écoute mais `curl http://localhost:8668` retourne 000 - - Endpoint `/v2/subscriptions` à tester + - 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. Tester QuantumLeap : `curl http://localhost:8668/v2/subscriptions` -2. Configurer une subscription dans Stellio pour notifier QuantumLeap -3. Vérifier pourquoi IoT-Agent ne transmet pas à Stellio (logs : `cbroker: http://stellio-api-gateway:8080` présent) -4. Tester le flux complet avec un message MQTT manuel -5. Finaliser Pulsar Manager (login admin) +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 + ```bash + 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 ```bash @@ -45,24 +68,39 @@ Finaliser l'installation et l'accessibilité du Smart City Digital Twin Martiniq 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 -curl -s http://localhost:8668/v2/entities -w "\nHTTP %{http_code}\n" -curl -s http://localhost:8668/v2/subscriptions -w "\nHTTP %{http_code}\n" +# 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}' +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 +## 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) -- CrateDB est accessible et QuantumLeap devrait y écrire les séries temporelles -- Grafana a CrateDB comme datasource (ajouté par subagent) +- 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)