84 lines
3.5 KiB
Markdown
84 lines
3.5 KiB
Markdown
# 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 :
|
|
```sql
|
|
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
|
|
```bash
|
|
# 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).
|