1.6 KiB
1.6 KiB
ESP-NOW API v1 (rtcbl/1)
Date: 2026-02-21
Scope: contrat d'échange entre RTC_BL_PHONE (A252) et la seconde carte.
1. Objectif
Normaliser les trames ESP-NOW pour:
- corréler requête/réponse,
- conserver compatibilité legacy,
- simplifier l'intégration du second repo.
2. Requête v1
{
"proto": "rtcbl/1",
"id": "req-001",
"ts": 1730000000,
"source": "a252",
"target": "peer|broadcast",
"cmd": "STATUS|CALL|WIFI_STATUS|BT_STATUS|...",
"args": {}
}
Règles:
protoobligatoire pour activer le mode v1.idrecommandé (corrélation réponse).cmdobligatoire.argsoptionnel. S'il est présent, il est sérialisé et transmis au dispatcher.
3. Réponse v1
{
"proto": "rtcbl/1",
"id": "req-001",
"ok": true,
"code": "STATUS",
"data": {},
"error": ""
}
Règles:
idreprend la requête.ok=false=>errornon vide.datacontient le JSON de la commande si disponible.- fallback possible
data_rawsi la réponse n'est pas JSON.
4. Compatibilité legacy
Le firmware continue d'accepter les formats existants:
{"cmd":"..."}{"raw":"..."}{"command":"..."}{"action":"..."}- variantes imbriquées via
event,message,payload
5. Commandes recommandées v1
STATUSCALLWIFI_STATUSMQTT_STATUSESPNOW_STATUSBT_STATUS
6. Intégration second repo
Checklist minimum côté seconde carte:
- Émettre
proto=rtcbl/1+idunique par requête. - Implémenter timeout de réponse (2-5s).
- Corréler sur
id. - Prévoir fallback legacy si
protoabsent en réponse.