Aller au contenu

SimComm (ESP-NOW)

SimComm gère la communication sans fil entre les dispositifs via le protocole ESP-NOW d’Espressif. Latence typique : < 10 ms.

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).

TypeCodeUsage
SCENARIO_LOAD0x10Charger un scénario
SCENARIO_START0x11Démarrer le scénario
SCENARIO_PAUSE0x12Mettre en pause
STATE_CHANGE0x13Forcer un changement d’état
PARAM_UPDATE0x14Modifier les paramètres vitaux
TypeCodeUsage
DEVICE_ANNOUNCE0x20Annonce de mise en ligne
DEVICE_STATUS0x21Rapport de statut périodique
DEVICE_EVENT0x22Événement utilisateur (bouton)
DEVICE_ERROR0x23Rapport d’erreur
TypeCodeUsage
PING0xF0Keepalive
PONG0xF1Réponse keepalive
OTA_BEGIN0xFEDébut mise à jour OTA
OTA_DATA0xFFDonnées OTA
#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
}

Pour plusieurs kits simultanément dans la même salle :

KitCanal WiFiGroup ID
Kit 111
Kit 262
Kit 3113

Les canaux 1, 6, 11 sont non-chevauchants en WiFi 2.4 GHz.

  1. Toujours valider le magic byte (0x53) à la réception
  2. Group 0 = broadcast global (découverte)
  3. Payload JSON compact — pas d’espaces, clés courtes
  4. Max 250 octets par message
  5. Pas de garantie de livraison — répéter les messages critiques
  6. Callbacks ESP-NOW sur Core 0 — ne pas bloquer