Files
smart-city-digital-twin-mar…/DATA_PERSISTENCE.md

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 capteur
  • OBSERVATIONS : 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 temporels
  • attribute_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