5.8 KiB
Smart City Digital Twin - Persistence de données
Documentation technique sur l'emplacement et la structure des données des capteurs dans la stack Smart City Martinique.
Vue d'ensemble
Les données des capteurs IoT sont persistées dans plusieurs bases de données selon le service consommateur. Le simulateur envoie les mêmes données vers trois systèmes principaux : FROST-Server, Orion-LD, et Stellio.
1. FROST-Server (Observations temporelles)
Technologie : PostgreSQL + PostGIS (OGC SensorThings API)
Container : frost_allinone-database-1
Credentials :
- User:
sensorthings - Password:
sensorthings - Database:
sensorthings
Schéma de données :
THINGS: Identité des capteurs (1 par capteur)SENSORS: Type de capteur (température, humidité, etc.)DATASTREAMS: Flux de données d'un capteurOBSERVATIONS: Valeurs mesurées avec timestamp
Accès direct :
docker exec frost_allinone-database-1 psql -U sensorthings -d sensorthings
Statut actuel : ✅ 21 256 observations enregistrées
Sauvegarde :
docker exec frost_allinone-database-1 pg_dump -U sensorthings sensorthings > frost_backup_$(date +%Y%m%d).sql
2. Orion-LD (Entités contextuelles NGSI-LD)
Technologie : MongoDB
Container : fiware-gis-quickstart-mongo-db-1
Base de données : orion (ou orionld)
Format : JSON-LD (NGSI-LD)
Structure :
- Collections MongoDB :
entities,csubs(subscriptions),registrations - Chaque entité représente un capteur avec ses attributs (temperature, humidity, etc.)
Accès direct :
docker exec fiware-gis-quickstart-mongo-db-1 mongo orion --eval "db.entities.find().pretty()"
Statut actuel : ✅ 10 entités (capteurs) créées
Sauvegarde :
docker exec fiware-gis-quickstart-mongo-db-1 mongodump --db orion --out /backup
3. Stellio (NGSI-LD + TimescaleDB)
Technologie : PostgreSQL + TimescaleDB + PostGIS
Container : stellio-postgres
Credentials :
- User:
stellio - Password:
stellio_password - Databases:
stellio_search,stellio_subscription
Tables principales :
entity_payload: Stockage des entités NGSI-LD (14 entités actuellement)temporal_entity_attribute: Attributs temporelsattribute_instance: Instances d'attributs avec historique
Accès direct :
docker exec -e PGPASSWORD=stellio_password stellio-postgres psql -h 127.0.0.1 -U stellio -d stellio_search
Statut actuel : ✅ 14 payloads d'entités enregistrés
Sauvegarde :
docker exec stellio-postgres pg_dump -U stellio stellio_search > stellio_backup_$(date +%Y%m%d).sql
4. OpenRemote (Assets IoT)
Technologie : PostgreSQL
Container : openremote-postgresql-1
Credentials :
- User:
openremote - Password: (défini dans docker-compose.yml, généralement
openremote) - Database:
manager
Données stockées :
- Assets (capteurs, zones géographiques)
- Attributs des assets (valeurs en temps réel)
- Règles et automatisations
- Historique des attributs
Statut actuel : ⚪ En attente de réactivation (403 Forbidden à résoudre)
Accès (quand réactivé) :
docker exec openremote-postgresql-1 psql -U openremote -d manager
5. Brokers MQTT (EMQX & Mosquitto)
EMQX (emqx_emqx_1) :
- Persistance : Mnesia (RAM) ou MongoDB externe si configuré
- Rôle : Routage des messages uniquement, pas de persistance long-terme
- Statut : ⚠️ Transit uniquement
Mosquitto (mosquitto-traefik) :
- Persistance : Fichier
mosquitto.db(si persistence activée) - Rôle : Routage des messages MQTT
- Statut : ⚠️ Transit uniquement
Note : Les brokers ne stockent pas les données de manière durable. Ils les transmettent aux consommateurs (FROST, Orion, Stellio).
6. BunkerM (Service HTTP)
Technologie : HTTP Service (détails à confirmer)
Container : bunkerm (ou similaire)
Authentification : Basic Auth avec gestion de session (redirection 307 suivie par le simulateur)
Statut : ⚠️ En cours d'investigation (auth 307)
Résumé des statistiques
| Service | Type de données | Nombre d'enregistrements | Statut |
|---|---|---|---|
| FROST-Server | Observations | 21 256 | ✅ Actif |
| Orion-LD | Entités NGSI-LD | 10 | ✅ Actif |
| Stellio | Entités NGSI-LD | 14 | ✅ Actif |
| OpenRemote | Assets IoT | 0 (non réactivé) | ⚪ Inactif |
| EMQX/Mosquitto | Messages MQTT | N/A (transit) | ✅ Routage |
Script de sauvegarde complet
#!/bin/bash
# backup_all.sh - Sauvegarde complète de la stack Smart City
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR=~/smart-city-backups/$DATE
mkdir -p $BACKUP_DIR
# FROST-Server
docker exec frost_allinone-database-1 pg_dump -U sensorthings sensorthings > $BACKUP_DIR/frost_$DATE.sql
# Orion-LD (MongoDB)
docker exec fiware-gis-quickstart-mongo-db-1 mongodump --db orion --out $BACKUP_DIR/mongo_backup_$DATE
# Stellio
docker exec stellio-postgres pg_dump -U stellio stellio_search > $BACKUP_DIR/stellio_$DATE.sql
# OpenRemote (quand réactivé)
# docker exec openremote-postgresql-1 pg_dump -U openremote manager > $BACKUP_DIR/openremote_$DATE.sql
echo "✅ Sauvegarde terminée dans $BACKUP_DIR"
Génération de diagramme de persistance
graph TD
A[Simulateur IoT] -->|MQTT| B[EMQX Broker]
A -->|MQTT| C[Mosquitto Broker]
B -->|Subscribe| D[FROST-Server]
B -->|Subscribe| E[Orion-LD]
B -->|Subscribe| F[Stellio]
C -->|Subscribe| E
C -->|Subscribe| F
D -->|PostgreSQL| G[(FROST DB: 21k+ obs)]
E -->|MongoDB| H[(Orion DB: 10 entités)]
F -->|PostgreSQL| I[(Stellio DB: 14 entités)]
A -->|HTTP| J[BunkerM]
Document généré le 3 mai 2026 pour le projet Smart City Digital Twin Martinique