SimComm (ESP-NOW)
SimComm gère la communication sans fil entre les dispositifs via le protocole ESP-NOW d’Espressif. Latence typique : < 10 ms.
Protocole binaire
Section intitulée « Protocole binaire »Chaque message ESP-NOW est structuré ainsi :
struct SimCommHeader { uint8_t magic; // 0x53 ('S' pour KerSim) uint8_t version; // Version protocole (1) uint8_t type; // Type de message (SimMsgType) uint8_t group; // Group ID (0 = broadcast global)};
struct SimCommMessage { SimCommHeader header; char payload[246]; // JSON compact, null-terminated uint8_t payloadLen;};Taille max : 250 octets (limitation ESP-NOW hardware).
Types de messages
Section intitulée « Types de messages »Coordinateur → Dispositifs
Section intitulée « Coordinateur → Dispositifs »| Type | Code | Usage |
|---|---|---|
SCENARIO_LOAD | 0x10 | Charger un scénario |
SCENARIO_START | 0x11 | Démarrer le scénario |
SCENARIO_PAUSE | 0x12 | Mettre en pause |
STATE_CHANGE | 0x13 | Forcer un changement d’état |
PARAM_UPDATE | 0x14 | Modifier les paramètres vitaux |
Dispositifs → Coordinateur
Section intitulée « Dispositifs → Coordinateur »| Type | Code | Usage |
|---|---|---|
DEVICE_ANNOUNCE | 0x20 | Annonce de mise en ligne |
DEVICE_STATUS | 0x21 | Rapport de statut périodique |
DEVICE_EVENT | 0x22 | Événement utilisateur (bouton) |
DEVICE_ERROR | 0x23 | Rapport d’erreur |
| Type | Code | Usage |
|---|---|---|
PING | 0xF0 | Keepalive |
PONG | 0xF1 | Réponse keepalive |
OTA_BEGIN | 0xFE | Début mise à jour OTA |
OTA_DATA | 0xFF | Données OTA |
Utilisation
Section intitulée « Utilisation »#include <SimComm.h>
SimComm comm;
void setup() { comm.begin(1, 1); // Canal WiFi 1, Groupe 1 comm.announce("DAE", "1.0.0"); comm.onMessage(onMessage);}
void onMessage(const SimCommMessage& msg, const uint8_t* mac) { // Traiter le message reçu}Isolation multi-kits
Section intitulée « Isolation multi-kits »Pour plusieurs kits simultanément dans la même salle :
| Kit | Canal WiFi | Group ID |
|---|---|---|
| Kit 1 | 1 | 1 |
| Kit 2 | 6 | 2 |
| Kit 3 | 11 | 3 |
Les canaux 1, 6, 11 sont non-chevauchants en WiFi 2.4 GHz.
- Toujours valider le magic byte (0x53) à la réception
- Group 0 = broadcast global (découverte)
- Payload JSON compact — pas d’espaces, clés courtes
- Max 250 octets par message
- Pas de garantie de livraison — répéter les messages critiques
- Callbacks ESP-NOW sur Core 0 — ne pas bloquer