Aller au contenu

Architecture

Vue d'ensemble

flowchart LR
    subgraph Simulateurs
        SIM[Simulateur IoT<br/>télémétrie baies]
    end
    subgraph Transport
        BRK[Broker MQTT<br/>Mosquitto mTLS]
    end
    subgraph Intelligence
        WRK[Worker Sécurité<br/>analyse + DeepSeek]
    end
    subgraph Présentation
        DASH[Dashboard<br/>FastAPI + WS]
    end
    DOCS[Documentation<br/>MkDocs]

    SIM -->|publie telemetry| BRK
    BRK -->|souscrit| WRK
    BRK -->|souscrit| DASH
    WRK -->|publie alerts / commands| BRK
    BRK -->|commands| SIM
    DASH -->|WebSocket / REST| NGNX[Nginx + Let's Encrypt]
    NGNX --> WEB[Client web]
    DOCS --> NGNX

Flux de données

  1. Le simulateur publie la télémétrie sur racks/{id}/telemetry (mTLS, QoS 1).
  2. Le worker consomme le flux, constitue une fenêtre glissante par baie et la soumet à l'API DeepSeek (ou à des règles heuristiques locales).
  3. En cas d'anomalie, le worker publie une alerte sur alerts/{id}/security et, si critique, une commande de remédiation sur racks/{id}/commands.
  4. Le dashboard s'abonne à la télémétrie et aux alertes, et les expose en temps réel au navigateur via WebSocket.
  5. Le simulateur applique les commandes de remédiation (réduction de charge, accélération des ventilateurs, cycle d'alimentation).

Conteneurisation

La stack est orchestrée par docker-compose.yml avec un réseau dédié iot-net. Le broker n'est jamais exposé publiquement : seul le dashboard (127.0.0.1:8400) et la documentation (127.0.0.1:8401) sont accessibles via le reverse proxy nginx en HTTPS.

Exposition réseau

Domaine Service Port interne
iot.belghali.org Dashboard 127.0.0.1:8400
docs.iot.belghali.org Documentation 127.0.0.1:8401

Le chiffrement TLS est assuré par Let's Encrypt (Certbot) avec renouvellement automatique.