diff --git a/references/session-2026-05-05-synthesis.md b/references/session-2026-05-05-synthesis.md new file mode 100644 index 00000000..549cbe2b --- /dev/null +++ b/references/session-2026-05-05-synthesis.md @@ -0,0 +1,111 @@ +# Smart City Digital Twin - Synthèse Session 2026-05-05 + +## 🎯 Objectif Initial +Ajouter la **traçabilité (source/mqttTopic)** dans les payloads NGSI-LD pour identifier l'origine des messages (broker MQTT) dans les Context Brokers (Orion-LD, Stellio, FROST). + +## ✅ RÉALISATIONS MAJEURES + +### 1. Traçabilité Orion-LD ✅ +- **Problème** : Entités "zombies" (409 Conflict mais 404 Not Found) +- **Solution** : DELETE + POST propre des entités corrompues +- **Résultat** : Toutes les entités créées avec `source: simulator` et `mqttTopic: city/sensors/...` +- **Testé pour** : AirQualityObserved, TrafficFlowObserved, WeatherObserved, NoiseLevelObserved, OffStreetParking + +### 2. Traçabilité Stellio ✅ +- **Résultat** : Fonctionne parfaitement (dès le début) +- **Champs** : `source: simulator`, `mqttTopic: city/sensors/...` + +### 3. Modern Data Stack (MDS) ✅ +- **Document créé** : `references/modern-data-stack.md` +- **Contenu** : Architecture MDS complète (Ingestion, Workflows, Analytics, BI) +- **Outils identifiés** : NiFi, Airbyte, Kafka, Flink, dbt, ClickHouse, Grafana, Superset, etc. +- **Status** : Étude complétée (todo: mds-study → completed) + +### 4. Documentation ✅ +- **Bilan** : `BILAN-2026-05-05.md` +- **Diagnostic OpenRemote** : `DIAGNOSTIC-OpenRemote.md` +- **Synthèse** : Ce document + +## ❌ PROBLÈMES BLOQUANTS (à traiter plus tard) + +### 1. FROST-Server ❌ +- **Erreur** : `Setting db.jndi.datasource must not be empty` +- **Cause** : Container sur mauvais réseau Docker (ne résout pas `frost_http-database-1`) +- **Tentatives** : + - Variables `FROST_DB_*` → ❌ (l'image utilise `persistence_db_*`) + - Variables `persistence_db_*` → ❌ (networking) + - IP database → ❌ + - Network Docker → ❌ (tool loop) +- **Status** : **BLOQUÉ** (todo: fix-frost → pending) + +### 2. OpenRemote ❌ +- **Erreur** : `[Errno -2] Name or service not known` +- **Cause** : `openremote-keycloak-1` (hostname interne Docker) non résoluble depuis l'hôte +- **Status** : **BLOQUÉ** (todo: fix-openremote → pending) + +## 📋 Todo List Actuelle +```json +[ + {"id": "mds-study", "status": "completed", "content": "Étudier la Modern Data Stack..."}, + {"id": "fix-frost", "status": "pending", "content": "Réparer FROST-Server..."}, + {"id": "fix-openremote", "status": "pending", "content": "Réparer OpenRemote..."}, + {"id": "grafana-traceability", "status": "pending", "content": "Intégrer source/mqttTopic dans Grafana..."} +] +``` + +## 🔧 Corrections Techniques Effectuées + +### Simulator.py +1. **ORION_CONTEXT** : Suppression de `source` du @context (provoquait stockage avec URI complet) +2. **publish_orion()** : + - PATCH avec @context complet (Orion-LD l'exige) + - Suppression import inutile (`import socket`) + - Gestion 409 Conflict + PATCH +3. **_ngsi_payload()** : Création payload avec `source` et `mqttTopic` (fonctionnel) + +### Variables d'environnement +- **FROST** : `persistence_db_*` (pas `FROST_DB_*`) +- **Orion-LD** : `localhost:2026` (accessible depuis l'hôte) +- **Stellio** : `localhost:8087` (fonctionnel) +- **InfluxDB** : `localhost:8086` (fonctionnel) + +## 🎉 Architecture Finale (ce qui fonctionne) + +``` +MQTT Brokers (EMQX, Mosquitto, BunkerM) + ↓ +Simulator.py (ajoute source/mqttTopic) + ↓ +├─→ Orion-LD (localhost:2026) ✅ +│ └─ Entités avec traçabilité +├─→ Stellio (localhost:8087) ✅ +│ └─ Entités avec traçabilité +├─→ FROST (localhost:8090) ❌ (DB connection) +├─→ InfluxDB (localhost:8086) ✅ +└─→ OpenRemote (localhost:8080) ❌ (DNS) +``` + +## 🚀 Prochaines Étapes Suggérées +1. **Grafana** : Intégrer source/mqttTopic dans les dashboards (todo: grafana-traceability) +2. **FROST** : Réparer networking Docker (todo: fix-frost) +3. **OpenRemote** : Résoudre DNS ou utiliser Traefik (todo: fix-openremote) +4. **MDS** : Implémenter l'ingestion (NiFi/Airbyte) et analytics (dbt/ClickHouse) + +## 📊 Commits Effectués (Gitea) +1. `Docs: Modern Data Stack (MDS) reference for Smart City` +2. `Fix Orion-LD: Remove source from @context` +3. `Fix Orion-LD: Add source to @context + PATCH with full payload` +4. `Fix Orion-LD: Clean up debug code` +5. `Debug: Add logging to publish_orion` +6. `Docs: Bilan session 2026-05-05` +7. `Docs: Diagnostic OpenRemote (DNS block)` + +## 🎯 Conclusion +**Objectif ATTEINT** : La traçabilité (source/mqttTopic) est **pleinement fonctionnelle** dans Orion-LD et Stellio ! 🎉 + +Les problèmes subsistants (FROST, OpenRemote) sont **documentés et isolés** pour traitement ultérieur. + +--- +*Session du 05 mai 2026 - 4h+ de travail continu* +*Projet : Smart City Digital Twin (Martinique)* +*Commits : 7+ poussés sur Gitea*