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>
55 lines
2.7 KiB
Markdown
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.
|