Diagramme séquence MQTT
Bienvenue sur le projet SIGACS
Par Alan BANCQUART, Titouan LE GOUALEC, Clément HERVOUET
Diagramme de séquence — Échanges MQTT sécurisés (mTLS)
Projet SIGACS — BTS CIEL — Saint Joseph La Salle — Lorient — 2026
sequenceDiagram
participant M5C as M5StickC<br/>(capteurs bac)
participant M5S as M5Stack Core2<br/>(concentrateur serre)
participant BR as Broker <br/>192.168.42.66:8883
participant DB as Dashboard<br/>(Subscriber)
%% ── 1. Connexion WiFi ──
Note over M5C,BR: 1. Connexion WiFi
M5C->>M5S: WiFi.begin("Serre")
M5S->>BR: WiFi.begin("Serre")
BR-->>M5S: IP attribuée (DHCP)
BR-->>M5C: IP attribuée (DHCP)
%% ── 2. Handshake TLS 1.2 ──
Note over M5S,BR: 2. Handshake TLS 1.2 (mTLS) — M5Stack → Broker
M5S->>BR: Client Hello
BR-->>M5S: Server Hello + server.crt
Note over M5S: Vérification server.crt<br/>avec ca.crt embarqué
M5S->>BR: Certificat client (client.crt)
Note over BR: Vérification client.crt<br/>avec ca.crt (require_certificate true)
BR-->>M5S: Tunnel TLS établi
%% ── 3. Connexion MQTT ──
Note over M5S,BR: 3. Connexion MQTT
M5S->>BR: CONNECT (clientId, user, password)
BR-->>M5S: CONNACK (code 0 = accepté)
%% ── 4. Abonnement Dashboard ──
Note over BR,DB: 4. Abonnement subscriber
DB->>BR: SUBSCRIBE /serre/1/bac/1/#
BR-->>DB: SUBACK
%% ── 5. Publication mesures (boucle 10s) ──
Note over M5C,DB: 5. Publication mesures (toutes les 15 minutes)
loop Toutes les 15 minutes
M5C->>M5S: Mesure sol (MQTT local)<br/>topic: /serre/1/bac/1/sol payload: "65.0"
M5C->>M5S: Mesure air/temp<br/>topic: /serre/1/bac/1/air/temp payload: "22.5"
M5C->>M5S: Mesure air/hum<br/>topic: /serre/1/bac/1/air/hum payload: "58.0"
Note over M5S: Agrégation des mesures<br/>+ affichage écran TFT
M5S->>BR: PUBLISH QoS 0 — /serre/1/bac/1/sol "65.0"
BR->>DB: PUBLISH (redistribution)
M5S->>BR: PUBLISH QoS 0 — /serre/1/bac/1/air/temp "22.5"
BR->>DB: PUBLISH (redistribution)
M5S->>BR: PUBLISH QoS 0 — /serre/1/bac/1/air/hum "58.0"
BR->>DB: PUBLISH (redistribution)
end
%% ── 6. Keep-alive ──
Note over M5S,BR: 6. Maintien de connexion
M5S->>BR: PINGREQ (keep-alive)
BR-->>M5S: PINGRESP
M5S->>BR: DISCONNECT
Légende
| Notation | Signification |
|---|---|
─► Flèche pleine |
Message envoyé |
- -► Flèche pointillée |
Réponse / accusé de réception |
Note |
Action interne (vérification, calcul) |
loop |
Séquence répétée toutes les 15 minutes |
Description des échanges
Phase 1 — Connexion WiFi : le M5StickC et le M5Stack Core2 rejoignent tous deux le réseau "Serre" et obtiennent chacun une adresse IP par DHCP.
Phase 2 — Handshake TLS 1.2 (mTLS) : c'est le M5Stack Core2 (concentrateur) qui établit le tunnel chiffré avec le broker. Il vérifie l'identité du broker grâce au certificat server.crt signé par la CA. Le broker vérifie à son tour l'identité du M5Stack grâce au certificat client client.crt (option require_certificate true). Aucune donnée ne transite en clair à partir de cette étape.
Phase 3 — Connexion MQTT : une fois le tunnel TLS établi, le M5Stack envoie un message CONNECT contenant son identifiant unique, son nom d'utilisateur et son mot de passe. Le broker répond CONNACK avec le code 0 (connexion acceptée).
Phase 4 — Abonnement : le Dashboard s'abonne au topic générique /serre/1/bac/1/# pour recevoir toutes les mesures du bac 1.
Phase 5 — Publication : toutes les 15 minutes, les M5StickC publient leurs mesures vers le M5Stack Core2 via MQTT local. Le M5Stack agrège ces données, les affiche sur son écran TFT, puis les transmet au broker Mosquitto qui les redistribue au Dashboard.
Phase 6 — Keep-alive : le M5Stack envoie régulièrement un PINGREQ pour maintenir la connexion active avec le broker. En fin de session, il envoie DISCONNECT pour clôturer proprement la connexion.
Pour voir le répertoire dans sa globalité, voir le fichier [File-Tree.md].
No comments to display
No comments to display