TCPP 1.3.0
Spezifikation 1.3.0 · offen Entwurf

TCPP

Trusted Charge & Process Protocol

Ein offenes Protokoll, das Lade-, Mess- und Energieprozesse als signierte JSON-Datensätze festhält, damit das, was eine Ladesäule, ein Zähler oder ein Backend über einen Vorgang aussagt, später von jedem geprüft werden kann, der den Datensatz besitzt, ohne dem System vertrauen zu müssen, aus dem er stammt.

Offen
Schemas, Beispiele und Dokumentation sind frei verwendbar.
JSON Schema
Draft 2020-12, 27 Request/Response-Paare, ein gemeinsamer Rahmen.
ES384
Jeder Datensatz reist als Compact JWS über ECDSA P-384.
Nachvollziehbar
Datensätze verweisen auf die Datensätze, die sie beantworten.

Was TCPP ist

TCPP beschreibt, wie Geräte und Dienste im Energiesektor über einen Vorgang kommunizieren: einen Ladevorgang, die Selbstauskunft eines Zählers, eine Tarifabfrage, eine Statusänderung, ein archiviertes Dokument. Jede Nachricht ist ein JSON-Objekt mit demselben Rahmen (wer sie gesendet hat, an wen, zu welchem Vorgang, zu welchem Zeitpunkt, mit welchem Ergebnis) und einem record, den das Schema des jeweiligen Endpunkts festlegt.

Nachrichten sind signiert. Ein TCPP-Frame ist ein Compact JWS über genau die Bytes des JSON, sodass ein Datensatz weitergegeben, gespeichert und noch Jahre später gegen den öffentlichen Schlüssel der ausstellenden Stelle geprüft werden kann. Datensätze führen in references die Datensätze mit, auf die sie antworten; das macht aus einzelnen Nachrichten wieder einen nachvollziehbaren Prozess.

Die Spezifikation ist ein Entwurf. Version 1.3.0 ist vollständig genug, um dagegen zu entwickeln; Schemasatz, ausgearbeitete Beispiele und ein lauffähiger Referenzknoten sind hier veröffentlicht. Weiterentwickelt wird sie im Arbeitskreis „Reform Ladeinfrastruktur Germany & EU“ in Abstimmung mit den Bundesbehörden.

An wen sich TCPP richtet

An europäische Hersteller, Softwareentwickler, Betreiber und Verwender von:

Was TCPP erreichen soll

TCPP setzt Mittel moderner Informatik und geltende Standards (JSON Schema, JWS-Signaturen, HTTP) für Aufgaben ein, die der Energiesektor bisher proprietär oder gar nicht gelöst hat:

TCPP ist ein offenes Protokoll und als künftiger Standard angelegt. Schemas, Musterdaten und Dokumentationen stehen kostenlos zur Verfügung, Basis-Bibliotheken und eine Referenzimplementierung kommen hinzu, und beteiligte Unternehmen können die Weiterentwicklung aktiv mitgestalten.

Wie eine Nachricht aussieht

Der kleinste Endpunkt des Satzes, ping, zeigt den Rahmen, den alle anderen teilen. Von Endpunkt zu Endpunkt ändert sich allein das Objekt record.

ping_request · Beispiel ping_request.json
{
  "tcpp": "https://tcpp.digital/schema/1.3.0/",
  "head": {
    "record_type": "ping",
    "record_direction": "request",
    "record_udt": "2018-07-27T14:30:07+01:00",
    "record_pagination": 45330,
    "record_version": "1.3.0",
    "origin_type": "CSU",          // eine Ladeeinheit …
    "origin_id": "E:DE*PID*E*IWS*00100017",
    "target_type": "TMH",          // … fragt einen Trusted Management Host
    "target_id": "P:ECS-HOST",
    "context_type": "INF",
    "context_id": "G:90676293-fa28-49bd-81ba-1b58a0f62abd",
    "error_code": "000000"
  },
  "record": { "ping": "Check alive" },
  "participants": [],
  "references": []
}

Die Schema-Dokumentation geht den Rahmen Feld für Feld durch, dazu die dreibuchstabigen Modultypen, die Kennungspräfixe und das Schema der Fehlercodes.

Einstieg

Ausführen

Referenzknoten

Eine Binärdatei, keine Abhängigkeiten. Sie liefert eine schemagesteuerte Weboberfläche zum Erstellen und Prüfen von TCPP-Nachrichten, signiert sie und tauscht sie mit anderen Knoten aus. Veröffentlicht für Windows x86-64, weitere Plattformen auf Anfrage.

Downloads
Nachlesen

Handbuch

Jeder Bildschirm und jeder Arbeitsablauf des Knotens, mit Abbildungen aus einem laufenden Zwei-Knoten-Labor, dazu Kommandozeile, Dateien und HTTP-Schnittstelle.

Deutsch · English
Umsetzen

Schema 1.3.0

Alle 55 Schemadateien, hier durchsuchbar und als Archiv. Jede Datei wird unter der URL ausgeliefert, die ihre eigene $id nennt; Verweise lösen sich unverändert auf.

Schema-Dokumentation