# 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*