- Traceability SUCCESS for Orion-LD/Stellio - FROST/OpenRemote blocked (documented) - All technical fixes documented - 4+ hours of debugging captured
112 lines
4.6 KiB
Markdown
112 lines
4.6 KiB
Markdown
# 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*
|