Files
smart-city-digital-twin-mar…/architecture-multi-cb.md

137 lines
7.6 KiB
Markdown

# Architecture Finale Smart City - 2 Pipelines Isolées (CORRIGÉ 18h05)
## Principe : Chaque Context Broker a sa propre pipeline
```
┌─────────────────────────────────────────────────────────────────────────────┐
│ Smart City Simulator (Python) │
│ Publie sur 3 brokers MQTT avec format IoT-Agent JSON │
└──────────┬────────────────────┬──────────────────────┬───────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ EMQX Broker │ │ Mosquitto Broker │ │ BunkerM Broker │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
│ │ │
▼ ▼ ▼
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│ IoT-Agent-EMQX │ │IoT-Agent-Mosquitto│ │IoT-Agent-BunkerM │
│ Port: 4041 │ │ Port: 4042 │ │ Port: 4043 │
│ Apikey: smart- │ │ Apikey: smart- │ │ Apikey: smart- │
│ city-api-key │ │ city-api-key │ │ city-api-key │
└────────┬─────────┘ └────────┬─────────┘ └────────┬─────────┘
└───────────────────────┴──────────────────────┘
┌───────────────┴───────────────┐
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ Orion-LD │ │ Stellio │
│ (port 1026) │ │ (port 8080) │
│ MongoDB backend │ │ (API Gateway) │
└─────────┬───────────┘ └─────────┬───────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ QuantumLeap-Orion │ │ QuantumLeap-Stellio │
│ (port 8668) │ │ (port 8669) │
│ → CrateDB-Orion │ │ → CrateDB-Stellio │
└─────────┬───────────┘ └─────────┬───────────┘
│ │
▼ ▼
┌─────────────────────┐ ┌─────────────────────┐
│ CrateDB-Orion │ │ CrateDB-Stellio │
│ (port 5432/4200) │ │ (port 5433/4201) │
│ DB: quantumleap │ │ DB: quantumleap_ │
│ │ │ stellio │
└─────────┬───────────┘ └─────────┬───────────┘
│ │
└───────────────────────┬─────────┘
┌─────────────────────┐
│ Grafana │
│ (port 3001) │
│ 2 Datasources: │
│ - CrateDB-Orion │
│ - CrateDB-Stellio│
└─────────────────────┘
```
## Pipelines Complètes
### Pipeline 1 : Orion-LD ✅ (Opérationnel)
1. Simulateur → 3 MQTT Brokers
2. 3 IoT-Agents → Orion-LD (1026)
3. **Orion-LD Subscription** → QuantumLeap-Orion (8668) ✅
4. QuantumLeap-Orion → CrateDB-Orion (5432) ✅
5. Grafana ← CrateDB-Orion ✅
### Pipeline 2 : Stellio 🔄 (En cours)
1. Simulateur → 3 MQTT Brokers
2. 3 IoT-Agents → Stellio (8080) *(à configurer)*
3. **Stellio Subscription** → QuantumLeap-Stellio (8669) *(en cours)*
4. QuantumLeap-Stellio → CrateDB-Stellio (5433) ✅
5. Grafana ← CrateDB-Stellio ✅
## Configuration des Subscriptions
### Pour Orion-LD (déjà fait) ✅
```bash
curl -X POST http://localhost:1026/v2/subscriptions \
-H 'Content-Type: application/json' \
-d '{
"description": "Orion-LD to QuantumLeap-Orion",
"subject": {"entities": [{"idPattern": ".*", "type": "AirQualityObserved"}]},
"notification": {
"http": {"url": "http://smart-city-quantumleap:8668/v2/op/notify"}
}
}'
```
### Pour Stellio (à faire) 🔄
```bash
# Stellio utilise l'API NGSI-LD pour les subscriptions
curl -X POST http://localhost:8080/ngsi-ld/v1/subscriptions \
-H 'Content-Type: application/ld+json' \
-d '{
"description": "Stellio to QuantumLeap-Stellio",
"type": "Subscription",
"entities": [{"type": "AirQualityObserved"}],
"notification": {
"endpoint": {"uri": "http://smart-city-quantumleap-stellio:8668/v2/op/notify"}
}
}'
```
## États des Services
| Service | Container | Port | Statut |
|---------|-----------|------|--------|
| **Orion-LD** | smart-city-orion-ld | 1026 | ✅ Up |
| **QuantumLeap-Orion** | smart-city-quantumleap | 8668 | ✅ Up |
| **CrateDB-Orion** | smart-city-cratedb | 5432/4200 | ✅ Up |
| **Stellio** | stellio-api-gateway | 8080 | ✅ Up |
| **QuantumLeap-Stellio** | smart-city-quantumleap-stellio | 8669 | ✅ Up |
| **CrateDB-Stellio** | smart-city-cratedb-stellio | 5433/4201 | ✅ Up |
| **3 IoT-Agents** | smart-city-iot-agent-* | 4041-4043 | ✅ Up |
| **Grafana** | smart-city-grafana | 3001 | ✅ Up |
## Prochaines Étapes
1.**Orion-LD → QuantumLeap-Orion** (Déjà configuré et opérationnel)
2. 🔄 **Stellio → QuantumLeap-Stellio** (En cours de configuration)
3.**Configurer IoT-Agents** pour envoyer aussi à Stellio
4.**Tester le flux complet** avec Stellio
5.**Créer les dashboards Grafana** (2 sources)
## Notes Importantes
- **Orion-LD** : Utilise l'API NGSI-v2 (`/v2/...`)
- **Stellio** : Utilise l'API NGSI-LD (`/ngsi-ld/v1/...`)
- **QuantumLeap** : Reçoit les notifications et stocke dans CrateDB
- **Grafana** : Visualise les données des 2 CrateDB
---
*Dernière mise à jour : 06 Mai 2026, 18h05 - Correction architecture (Orion→QL-Orion, Stellio→QL-Stellio)*