# Vertrag Der **maschinenlesbare Vertrag** beschreibt die Form jeder Nachricht des [Protokolls](protocole.md): ein [OpenRPC](https://spec.open-rpc.org/)-Dokument, dessen Nachrichten in JSON Schema beschrieben sind, ergänzt um `x-etm-…`-Erweiterungen für das, was OpenRPC nicht ausdrücken kann — Transport, Rückfall-Automat, benannte Prüfregeln, Toleranzen, geschlossene Listen. Die Engine bringt ihn mit, und ihre Tests wie die Konformitäts-Testsuite prüfen ihn auf beiden Seiten. Die Tabellen der Seite [Protokoll](protocole.md) werden daraus erzeugt. ## Den Vertrag herunterladen {#telecharger} [:material-download: `etm-powersync-optimizer-protocol.openrpc.json` herunterladen](etm-powersync-optimizer-protocol.openrpc.json){ .md-button } Die Website liefert die Datei **unverändert**, Byte für Byte, aus dem Standard-Branch des Engine-Repositorys. Ihr Steckbrief: | | 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` | ## Der Vertrag Ihrer Box: `NymeaEnergy.GetOptimizerProtocol` {#getoptimizerprotocol} Der hier veröffentlichte Vertrag folgt der Entwicklung der Engine; Ihre Box kann eine ältere Version tragen. Um **den** Vertrag der installierten Engine zu erfahren, fragen Sie die Box: Die JSON-RPC-Methode `NymeaEnergy.GetOptimizerProtocol` liefert den, den sie mitbringt. Dieser ist für einen an diese Box angebundenen Optimierer maßgeblich. Die Methode ist in [`INTERFACE.md`](https://github.com/etmschurig/etm-powersync-energy-plugin-etm/blob/main/INTERFACE.md) im Engine-Repository beschrieben, zusammen mit den übrigen `NymeaEnergy.*`-Methoden des Optimierers (Verbindungspunkt, gemeinsames Geheimnis, Zustand). Die Verbindung zur API beschreibt die Seite [JSON-RPC-API](../integrations/jsonrpc-api.md). ## Nachrichten prüfen {#valider} Das Engine-Repository enthält einen Validator, `tools/etm-powersync-schema-check` (Python, Standardbibliothek): Er prüft eine Nachricht, eine vollständig aufgezeichnete Sitzung oder Aufzeichnungen gegen den Vertrag und wendet auf Wunsch die benannten Prüfregeln an.