Patrick Schurig 209e2d441b docs(optimiseur): section Optimiseur et partie technique en trois sections (fr)
Navigation : « EMS — moteur à règles » (pages de fonctionnalités, précédées
de « Comment le moteur décide »), « Optimiseur » (Présentation, Protocole,
Contrat, Écrire un optimiseur), « API » (ex-« Référence »). Aucun fichier
existant déplacé : les URL publiées restent valides.

Protocole : prose courte qui renvoie à OPTIMIZER_PROTOCOL.md du moteur
pour le sens ; tableaux, listes fermées et règles nommées générés depuis
le contrat. Contrat servi tel quel (copie octet pour octet).
reference.md, resté un bouchon, devient l'accueil de la section API.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 13:06:04 +02:00

55 lines
2.7 KiB
Markdown

# Contrat
Le **contrat machine** décrit la forme de chaque message du [protocole](protocole.md) :
un document [OpenRPC](https://spec.open-rpc.org/) dont les messages sont en JSON Schema,
complété par des extensions `x-etm-…` pour ce qu'OpenRPC ne sait pas dire — transport,
machine de repli, règles de validation nommées, tolérances, listes fermées.
Le moteur l'embarque, et ses tests comme ceux de la suite de conformité le vérifient des
deux côtés. Les tableaux de la page [Protocole](protocole.md) en sont générés.
## Télécharger le contrat {#telecharger}
[:material-download: Télécharger `etm-powersync-optimizer-protocol.openrpc.json`](etm-powersync-optimizer-protocol.openrpc.json){ .md-button }
Le site sert le fichier **tel quel**, octet pour octet, depuis la branche par défaut du
dépôt du moteur. Sa fiche :
<!-- BEGIN GENERATED: __optimizer_contract__ -->
| | Contract |
|---|---|
| Title | etm-powersync — protocole moteur ↔ optimiseur |
| Protocol version | `1.1` |
| Format | OpenRPC `1.3.2`, JSON Schema in `components.schemas` |
| License | GPL-3.0-or-later |
| File | [`etm-powersync-optimizer-protocol.openrpc.json`](etm-powersync-optimizer-protocol.openrpc.json) |
| Size | 67215 bytes |
| SHA-256 | `29dfe5a3c94a06e94e95042c0ceefd4d6264fcca44265faa676a06fac1c07ded` |
| Methods | `Handshake` · `GetPlan` · `UpdateLearned` |
| Schemas | 47 |
| Semantic rules | 19 |
| Extensions (document) | `x-etm-fallback-machine` · `x-etm-generated` · `x-etm-reason-params` · `x-etm-semantic-rules` · `x-etm-tolerances` · `x-etm-transport` |
| Extensions (methods) | `x-etm-direction` · `x-etm-notification` · `x-etm-timeout-s` |
<!-- END GENERATED -->
## Le contrat de votre box : `NymeaEnergy.GetOptimizerProtocol` {#getoptimizerprotocol}
Le contrat publié ici suit le développement du moteur ; votre box peut porter une version
antérieure. Pour connaître **le** contrat du moteur installé, demandez-le à la box : la
méthode JSON-RPC `NymeaEnergy.GetOptimizerProtocol` rend celui qu'elle embarque. C'est
celui-là qui fait foi pour un optimiseur branché sur cette box.
La méthode est décrite dans
[`INTERFACE.md`](https://github.com/etmschurig/etm-powersync-energy-plugin-etm/blob/main/INTERFACE.md),
dans le dépôt du moteur, avec les autres méthodes `NymeaEnergy.*` de l'optimiseur
(point de connexion, secret partagé, état). La connexion à l'API est décrite sur la page
[API JSON-RPC](../integrations/jsonrpc-api.md).
## Valider des messages {#valider}
Le dépôt du moteur fournit un validateur, `tools/etm-powersync-schema-check` (Python,
bibliothèque standard) : il juge un message, une session complète enregistrée ou des
traces contre le contrat, et applique sur demande les règles de validation nommées.