Dieser Artikel soll erklären, wie digital signierte Messwerte an das be.ENERGISED Backend übermittelt werden sollten, damit diese korrekt verarbeitet werden können.
Einleitung
Die Übermittlung von digital signierten Messwerten ist eine Grundanforderung, welche eine Ladeeinrichtung unterstützen muss, um den Anforderungen des Eichrechts zu genügen. Mit unserem Leitfaden zur Erstellung von digitalen Signaturen für Messwerte haben wir ein Verfahren vorgestellt, welches eine Signaturbildung über einen Messwertdatensatz ermöglicht.
Mit der nachfolgenden Spezifikation stellen wir die Anforderungen klar, wie die digital signierten Messwerte durch die Ladestation an das Backend-System nachfolgend übermittelt werden. Die Übermittlung der Messwerte basiert dabei auf den folgenden Überlegungen: Die Datenübermittlung von Messwertinformationen sollte sparsam sein. Dies bedeutet, die Übermittlung von Daten zu einzelnen Ladevorgängen oder einzelnen Messwerten möglichst gering ausfallen soll, um Datenvolumen einzusparen. Um jedoch eine Automatisierung in der Prüfung von Messwerten zu ermöglichen, ist es erforderlich, dass dem Backend-System gewisse Parameter zugänglich gemacht werden. Um dies sicherzustellen, stellt die Ladestation diese Informationen dem Backend nach der ersten BootNotification zur Verfügung.
Im Folgenden sind die Anforderungen spezifiziert, welche die Datenübermittlung sicherstellen und eine automatisierte Datenverarbeitung und -prüfung ermöglichen.
Datenübermittlung von signierten Messwerten
Digital signierte Messwerte werden mit jedem Ladevorgang entweder in einer einzigen oder in mehreren verteilten Nachrichten von der Ladestation an das Backend-System übermittelt. Dabei werden die jeweiligen Daten in einem Messwertdatensatz zusammengefasst und anschließend durch die Messkapsel digital signiert. Die signierten Daten werden nachfolgend über das OCPP Protokoll an das Backend-System übermittelt.
Die be.ENERGISED Anwendung unterstützt die Annahme von digital signierten Messwerten sowohl über einzelne MeterValue Requests als auch gesammelt in Form des StopTransaction Requests zum Ende eines Ladevorgangs. Das Datenformat der digital signierten Messwerte ist dabei bei allen Übermittlungen jeweils identisch.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="urn://Ocpp/Cs/2015/10/">
<soap:Header>
<ns:chargeBoxIdentity>ABCDEF12345</ns:chargeBoxIdentity>
</soap:Header>
<soap:Body>
<ns:meterValuesRequest>
<ns:connectorId>1</ns:connectorId>
<ns:transactionId>1234567</ns:transactionId>
<ns:meterValue>
<ns:timestamp>2018-08-02T08:58:21Z</ns:timestamp>
<ns:sampledValue>
<ns:value>ENCODED STRING</ns:value>
<ns:context>Transaction.Begin</ns:context>
<ns:format>SignedData</ns:format>
<ns:measurand>Energy.Active.Import.Register</ns:measurand>
</ns:sampledValue>
</ns:meterValue>
</ns:meterValuesRequest>
</soap:Body>
</soap:Envelope>
{
"connectorId": 1,
"transactionId": 1234567,
"meterValue": [
{
"timestamp": "2018-08-02T08:58:21Z",
"sampledValue": [
{
"value": "ENCODED STRING",
"format": "SignedData",
"context": "Transaction.Begin",
"measurand": "Energy.Active.Import.Register"
}
]
}
]
}
OCPP 1.6 JSON: MeterValue request including digitally signed meter values
Das oben dargestellte Beispiel übermittelt einen einzigen Messwert für einen Ladevorgang an das zentrale Backend-System. Dabei wird der Messwert analog zur OCPP Spezifikation übertragen und mit dem richtigen Context versehen. Das Feld „value“ beinhaltet in diesem Fall den Hex-codierten String des Signaturdatensatzes ohne weitere Informationen.
Alternativ zur Umsetzung auf einzelnen MeterValue Messages ist es auch möglich, die digital signierten Messwerte mit der StopTransaction zum Ende eines Ladevorgangs an das Backend-System zu übermitteln. In diesem Fall erfolgt die Handhabung analog der zuvor ausgeführten Strukturen, lediglich werden diese in die relevante StopTransaction Message „verpackt“.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="urn://Ocpp/Cs/2015/10/">
<soap:Header>
<ns:chargeBoxIdentity>ABCDEF12345</ns:chargeBoxIdentity>
</soap:Header>
<soap:Body>
<ns:stopTransactionRequest>
<ns:transactionId>1234567</ns:transactionId>
<ns:timestamp>2018-08-02T08:58:21Z</ns:timestamp>
<ns:meterStop>2500</ns:meterStop>
<ns:transactionData>
<ns:timestamp>2018-08-02T08:58:21Z</ns:timestamp>
<!--1 or more repetitions:-->
<ns:sampledValue>
<ns:value>ENCODED STRING</ns:value>
<ns:context>Transaction.Begin</ns:context>
<ns:format>SignedData</ns:format>
<ns:measurand>Energy.Active.Import.Register</ns:measurand>
</ns:sampledValue>
<ns:sampledValue>
<ns:value>ENCODED STRING</ns:value>
<ns:context>Transaction.End</ns:context>
<ns:format>SignedData</ns:format>
<ns:measurand>Energy.Active.Import.Register</ns:measurand>
</ns:sampledValue>
</ns:transactionData>
</ns:stopTransactionRequest>
</soap:Body>
</soap:Envelope>
Auf dieser Basis ist zu beachten, dass der Timestamp für die Messwerte durch das Backend-System nicht verarbeitet wird, da jeweils der Zeitpunkt des Messwertes, welcher innerhalb der digitalen Signatur dokumentiert ist, für die weitere Verarbeitung verarbeitet wird. Wird ein Signaturformat eingesetzt, welches die Signatur von mehreren Messwerten in einem einzelnen Datensatz ermöglicht (beispielsweise OCMF), so ist es zulässig bei der StopTransaction lediglich einen einzelnen Datensatz mit einer übergreifenden Datensatzsignatur zu verwenden.
Datenübermittlung der Grunddaten einer Ladeeinrichtung
Für die automatisierte Datenverarbeitung im Backend ist es erforderlich, dass die Ladestation dem Backend-System gewisse Daten bereitstellt, welche eine automatisierte Datenverarbeitung in Folge ermöglichen. Bei diesen Daten handelt es sich um die grundlegenden Betriebsdaten, welche für die Umsetzung und Durchführung der Signaturverfahren erforderlich sind.
Die allgemeinen Daten zur Verarbeitung der Messwertsignatur müssen jeweils nur einmalig an das Backend-System übermittelt werden.
Zur Sicherstellung der Konsistenz empfiehlt es sich jedoch, die Daten jeweils unmittelbar nach dem Versand einer BootNotification an das Backend-System zu übermitteln. So kann sichergestellt werden, dass eine Übermittlung der Messwerte nachfolgend auf Basis der korrekten Daten erfolgen kann. Eine Ladestation darf keine digital signierten Messwerte an das Backend-System übermitteln, wenn nicht vorher die allgemeinen Daten zum Signaturverfahren an das Backend-System erfolgreich übermittelt wurden.
Im Zuge der Datenübermittlung an das Backend-System ist es vorgesehen, Mittels einer DataTransfer Message die relevanten Daten in einer strukturierten Form an das Backend-System zu übermitteln.
Dabei werden die folgenden Daten von der Ladeeinrichtung aufbereitet und an das Backend-System gesendet.
{
"meters": [
{
"connectorId" : 1,
"meterSerial" : "123456789",
"type": "SIGNATURE",
"publicKey": "887FABF407AC82782EEFFF2220C2F856AEB0BC22364BBCC6B55761911ED651D1A922BADA88818C9671AFEE7094D7F536",
}
]
}
Configuration dataset for setMeterConfiguration dataTransfer request
Mit einer einzigen DataTransfer Message können beliebig viele Informationen zu den eingesetzten Verfahren übermittelt werden. Mit der Formatumsetzung ist es zudem möglich, auf unterschiedlichen Ladeanschlüssen unterschiedliche eichrechtliche Anforderungen sicherzustellen. In diesem Datenformat werden die allgemeinen Informationen zusammengefasst, welche von einer Ladeeinrichtung bereitgestellt werden müssen. Die strukturierten Daten beinhalten dabei die folgenden Informationen:
Key |
Typ |
Beschreibung |
---|---|---|
connectorId |
erforderlich |
Definiert die connectorId analog zur OCPP Spezifikation zur Zuordnung der Messkapsel auf einen Ladeanschluss |
meterSerial |
optional |
Gibt die Seriennummer der Messkapsel an. Durch die Bereitstellung kann eine Historie geführt werden. |
type |
erforderlich |
Definiert den Typ des Rechtsrahmens zur Einhaltung der Eichrechtkonformität |
publicKey |
optional |
Beinhaltet den Public Key der Messkapsel, die Übermittlung muss Hex-encoded erfolgen. |
Die oben dargestellten strukturierten Daten werden in Folge durch die Ladeeinrichtung in eine DataTransfer Message „verpackt“ und an das Backend-System gesendet. Dabei erfolgt die Übertragung auf Basis der jeweiligen OCPP Spezifikation, die für die Anbindung der Ladeeinrichtung zum Einsatz gelangt. Die folgenden Beispiele zeigen die Übermittlung des zuvor gezeigten Datensatzes in Verbindung mit OCPP 1.6 auf SOAP und JSON.
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="urn://Ocpp/Cs/2015/10/">
<soap:Header>
<ns:chargeBoxIdentity>ABCDEF12345</ns:chargeBoxIdentity>
</soap:Header>
<soap:Body>
<ns:DataTransferRequest>
<ns:vendorId>generalConfiguration</ns:vendorId>
<ns:messageId>setMeterConfiguration</ns:messageId>
<ns:data>{"meters":[{"connectorId":1,"meterSerial":"123456789","type":"SIGNATURE","publicKey":"887FABF407AC82782EEFFF2220C2F856AEB0BC22364BBCC6B55761911ED651D1A922BADA88818C9671AFEE7094D7F536"}]}</ns:data>
</ns:DataTransferRequest>
</soap:Body>
</soap:Envelope>
{
"vendorId": "generalConfiguration",
"messageId": "setMeterConfiguration",
"data": "{\"meters\":[{\"connectorId\":1,\"meterSerial\":\"123456789\",\"type\":\"SIGNATURE\",\"publicKey\":\"887FABF407AC82782EEFFF2220C2F856AEB0BC22364BBCC6B55761911ED651D1A922BADA88818C9671AFEE7094D7F536\"}]}"
}
DataTransfer Request in order to submit meter configurations to the backend
Public Key
Es gibt mehrere Möglichkeiten, wie eine Ladestation den Public Key übermitteln kann. Diese werden im Folgenden angeführt:
1. Übermittlung des Public Key innerhalb der signierten Messwerte (bevorzugter Weg)
Der Public Key kann im Rahmen der signierten Messwerte weitergegeben werden. Dies ermöglicht es jeder Anwendung, den Public Key zu jedem Zeitpunkt zu kennen. Dies ist auch das Format, das die Ladestation in OCPP 2.0.1 implementieren muss. Aus diesem Grund ist dies unser bevorzugter Weg.
Ein Beispiel (hier Teil der StopTransaction, es kann auch ein regulärer MeterValue sein)
[2,"1234",
"StopTransaction",
{"reason":"Local","transactionId":123,"meterStop":500,"timestamp":"2022-08-27T12:34:56.000Z","transactionData":[
{"sampledValue":[
{"unit":"Wh","context":"Transaction.End","format":"SignedData","location":"Outlet","measurand":"Energy.Active.Import.Register",
"value":"
{
\"signedMeterValue\": \"<base64 encoded OCMF string>\",
\"encodingMethod\":\"OCMF\",
\"publicKey\":\"<public key>\"
}"
}],
"timestamp":"2022-08-27T12:34:56.000Z"}]}
]
2. Übermittlung über DataTransfer
Stationen können uns eine DataTransfer-Anfrage schicken. Jeder Connector erhält hier einen Public Key, der dann verwendet wird. Eine Station sollte diesen nach der BootNotification senden.
Payload via DataTransfer:
{
"vendorId": "generalConfiguration",
"messageId": "setMeterConfiguration",
"data": "{\"meters\":[{\"connectorId\":1,\"meterSerial\":\"123456789\",\"type\":\"SIGNATURE\",\"publicKey\":\"887FABF407AC82782EEFFF2220C2F856AEB0BC22364BBCC6B55761911ED651D1A922BADA88818C9671AFEE7094D7F536\"}]}"
}
3. Über die in der "GetConfiguration" Anfrage übermittelten "Config Keys"
Eine Station kann auch wählen, ob sie diesen über die "Config Keys" senden will. Die folgenden "Key-Strukturen" werden derzeit unterstützt:
- PublicKey{nr}
- PublicKey-EnergyMeter{nr}
- MeterPublicKey{nr}
- MeterPubKey{nr}
- publicKeyMeter{nr}
- EMOC_PublicKey_Conn_{nr}
- Meter{nr}PublicKey
- Meter_{nr}_PublicKey
- metergatewaycon{nr}publickey
- Keys where the public keys are separated via a “,” (e.g. key1, key2, key3)
- VWGC.DCMeterPublicKeys
- VWGC.DCMeterPublicKeys
- VWGC.DCMeterPublicKeysOcmf
- metersPublicKeys
- meterPublicKeys
- publicKey
Zulässige Rechtsrahmen zur Eichrechtkonformität
Im Zuge der Umsetzung der Anforderungen des Mess- und Eichrechts in Deutschland werden technisch verschiedene Verfahren unterstützt, welche eine Abrechnung von Ladevorgängen rechtlich zulässig werden lassen. Um eine automatisierbare Konfiguration der Backend-Systeme und eine damit verbundene Klarheit über die verwendeten Rechtsrahmen zu erhalten, ist vorgesehen, dass die Ladeeinrichtung die verwendete Art des Verfahrens übermittelt.
Insgesamt sind unserem aktuellen Kenntnisstand nach die die folgenden Verfahren rechtlich zulässig:
-
Digitale Signatur eines Messwertes einer Messeinrichtung in Verbindung mit der Bereitstellung einer konformitätsbewerteten Transparenzsoftware
-
Lokale Speicherung und Anzeige von Messwerten direkt an der Ladeeinrichtung
-
Keine eichrechtskonforme Ausführung und damit Möglichkeit der Abrechnung nach Pauschalen
Basierend auf diesen Grundlagen können in der aktuellen Umsetzung die folgenden Typen für die Umsetzung des Rechtsrahmens durch die Ladeeinrichtung an das Backend-System übermittelt werden:
Typ |
Verfahren |
---|---|
SIGNATURE |
Durchführung einer digitalen Signatur für Messwerte in Verbindung mit einer Transparenzsoftware |
LOCAL |
Lokales Speicher- und Anzeigemodul, welches die Anforderungen des Eichrechts an der Station ansich umsetzt |
NONE |
Keine eichrechtskonforme Ausführung, ermöglicht die Abrechnung nach Pauschalen |
Version: 2023-03-08 10:07:26 UTC