docs: Final session resume 2026-05-06 - QuantumLeap fix, Grafana next steps
This commit is contained in:
@@ -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
|
## Objectif
|
||||||
Finaliser l'installation et l'accessibilité du Smart City Digital Twin Martinique, spécifiquement la mise en service des flux de données :
|
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**
|
**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-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-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 ❌
|
- **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
|
## Travail accompli
|
||||||
1. **Diagramme de flux** mis à jour avec IoT-Agent, QuantumLeap, CrateDB (commit+push) ✅
|
1. **Diagramme de flux** mis à jour avec IoT-Agent, QuantumLeap, CrateDB (commit+push) ✅
|
||||||
2. **IoT-Agent** : Service et devices créés (HTTP 201) ✅
|
2. **IoT-Agent** : Service et devices créés (HTTP 201) ✅
|
||||||
3. **Simulateur** : Ajout de `publish_iot_agent` et variable `ENABLE_IOT_AGENT` ✅
|
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) ✅
|
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
|
## Blocages rencontrés
|
||||||
1. **Flux MQTT → IoT-Agent → Stellio** :
|
1. **Flux MQTT → IoT-Agent → Stellio** :
|
||||||
- IoT-Agent reçoit le message MQTT mais Stellio retourne 404
|
- 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** :
|
2. **QuantumLeap** :
|
||||||
- Port 8668 en écoute mais `curl http://localhost:8668` retourne 000
|
- FIXÉ : Utilisation des bonnes variables d'environnement (`CRATE_HOST`, `CRATE_PORT`)
|
||||||
- Endpoint `/v2/subscriptions` à tester
|
- Endpoint API : `/v2/op/notify` (pour recevoir les notifications)
|
||||||
|
- Test manuel de notification à faire
|
||||||
|
|
||||||
3. **Stellio** :
|
3. **Stellio** :
|
||||||
- POST /ngsi-ld/v1/entities retourne 405 (method not allowed)
|
- POST /ngsi-ld/v1/entities retourne 405 (method not allowed)
|
||||||
- GET /ngsi-ld/v1/entities retourne 404 (pas d'entités)
|
- 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
|
## Prochaines étapes
|
||||||
1. Tester QuantumLeap : `curl http://localhost:8668/v2/subscriptions`
|
1. **Grafana** : Finaliser les dashboards (en attendant que CrateDB soit connecté)
|
||||||
2. Configurer une subscription dans Stellio pour notifier QuantumLeap
|
- Accéder à https://grafana.digitribe.fr
|
||||||
3. Vérifier pourquoi IoT-Agent ne transmet pas à Stellio (logs : `cbroker: http://stellio-api-gateway:8080` présent)
|
- Créer un dashboard "Smart City Overview" avec les données InfluxDB existantes
|
||||||
4. Tester le flux complet avec un message MQTT manuel
|
- Une fois CrateDB connecté : ajouter panels "Air Quality", "Traffic Flow", etc.
|
||||||
5. Finaliser Pulsar Manager (login admin)
|
|
||||||
|
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
|
## Commandes utiles
|
||||||
```bash
|
```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/services -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /'
|
||||||
curl -s http://localhost:4041/iot/devices -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /'
|
curl -s http://localhost:4041/iot/devices -H 'FIWARE-Service: smartcity' -H 'FIWARE-ServicePath: /'
|
||||||
|
|
||||||
# Tester QuantumLeap
|
# Tester QuantumLeap (via Traefik)
|
||||||
curl -s http://localhost:8668/v2/entities -w "\nHTTP %{http_code}\n"
|
curl -k https://quantum-leap.digitribe.fr/v2/types -w "\nHTTP %{http_code}\n"
|
||||||
curl -s http://localhost:8668/v2/subscriptions -w "\nHTTP %{http_code}\n"
|
|
||||||
|
|
||||||
# Tester Stellio
|
# Tester Stellio
|
||||||
curl -s http://localhost:8080/ngsi-ld/v1/entities -H "Accept: application/ld+json" -w "\nHTTP %{http_code}\n"
|
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
|
# 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
|
## Fichiers modifiés
|
||||||
- `simulator.py` : Ajout `publish_iot_agent`, variable `ENABLE_IOT_AGENT`
|
- `simulator.py` : Ajout `publish_iot_agent`, variable `ENABLE_IOT_AGENT`
|
||||||
- `docker-compose.iot-agent.yml` : Configuration EMQX et Stellio
|
- `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
|
- `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
|
- 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)
|
- 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
|
- QuantumLeap est maintenant correctement configuré avec CrateDB
|
||||||
- Grafana a CrateDB comme datasource (ajouté par subagent)
|
- 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user