Das Problem
Ab dem 18. Februar 2027 verlangt die EU-Batterieverordnung (EU) 2023/1542 einen digitalen Batteriepass für Batterien von Elektrofahrzeugen, LMT-Batterien (E-Bikes, Roller) und Industriebatterien über 2 kWh. Jeder Pass ist ein strukturierter Datensatz mit 85 bis 120 Pflichtelementen, je nach Kategorie und Stufe.
Das BatteryPass-Ready-Konsortium veröffentlicht JSON-Schemas für diese Datensätze. Ein Unternehmen, das Pässe erstellen muss, hat die Daten meist in Tabellen oder in Exporten aus ERP- oder PLM-Systemen. Es muss diese Daten in das Schemaformat bringen, herausfinden, welche Pflichtelemente noch fehlen, und festlegen, welche Teile eines Passes welche Rolle lesen darf.
Wie es funktioniert
battery-passport-kit enthält
das BatteryPass-Ready-Datenmodell 2.0.1 und stellt den Befehl bpkit mit
diesen Unterbefehlen bereit:
templateschreibt eine CSV-Vorlage mit einer Spalte pro Datenelement.from-csverzeugt pro Zeile ein Pass-JSON, ergänzt Einheiten und andere feste Werte und validiert jeden Pass.validateprüft Pässe gegen das Schema, einschließlich Datumsangaben, URIs, ISO-8601-Dauern und Codelisten.reportlistet fehlende Pflichtelemente pro Datenelementgruppe und markiert leere Elemente, die die Verordnung nur für manche Batterien vorschreibt.viewgibt den Teil eines Passes aus, den eine Rolle (public,authorities,repairer, ...) lesen darf, auf Basis der Zugriffsangaben im Schema.qrerzeugt den QR-Code, der die physische Batterie mit ihrem Pass verbindet.
Abgedeckt sind alle fünf Batteriekategorien, jeweils in zwei Stufen: feb27
für die Anforderungen ab 18. Februar 2027 und full für alle Anforderungen,
einschließlich CO2-Fußabdruck und Sorgfaltspflichten in der Lieferkette, die
später gelten.
Das Repository enthält eine CSV-Datei mit zwei fiktiven EV-Batterien. In der zweiten Zeile sind die Batteriemasse und die Norm für den Zyklentest absichtlich leer. Lokal ausgeführt ergeben der Import und der Bericht diese Ausgabe:
$ bpkit from-csv examples/ev-feb27.csv --category ev -o passports
passports/EXC77-000001.json: valid
passports/EXC77-000002.json: 2 problem(s), see `bpkit report passports/EXC77-000002.json`
$ bpkit report passports/EXC77-000002.json
passports/EXC77-000002.json category ev, stage feb27, data model 2.0.1
Required elements: 100/102 filled, schema problems: 2
group required optional
dppHeader 7/7 0/2
batteryMaterialsAndComposition 9/9 2/3
circularityAndResourceEfficiency 16/16 7/14
identifiersAndProductData 15/16 1/6
performanceAndDurability 45/46 11/38
symbolsLabelsAndDocumentationOfConformity 8/8 5/12
Missing required elements:
batteryPassportData.identifiersAndProductData.batteryMass.gramKilogramValue
batteryPassportData.performanceAndDurability.cycleLifeReferenceTest
Empty elements that are mandatory for some batteries (check whether they apply):
batteryPassportData.identifiersAndProductData.warrantyPeriod
batteryPassportData.symbolsLabelsAndDocumentationOfConformity.symbolsForCadmiumAndLead
Schema problems:
batteryPassportData.identifiersAndProductData.batteryMass: 'gramKilogramValue' is a required property
batteryPassportData.performanceAndDurability: 'cycleLifeReferenceTest' is a required property
Tests
Für jede Kategorie und beide Stufen prüft ein Test, dass der vollständige
Platzhalter-Pass gültig ist, keine Pflichtelemente fehlen und die Kategorie
richtig erkannt wird. Weitere Tests prüfen, dass die Elemente von feb27 eine
Teilmenge der Elemente von full sind und dass ein entferntes Pflichtelement,
ein leeres Objekt, das mindestens ein Feld braucht, und ungültige Werte (das
Datum 2027-13-40, ein Kapazitätsverlust von 140 Prozent, ein unbekannter
Batteriestatus) gemeldet werden.
Der Rollentest prüft, dass die öffentliche Sicht die ID des Wirtschaftsakteurs verbirgt und die Sicht für Behörden sie enthält. Die CSV-Tests prüfen Listenwerte, Einträge zu gefährlichen Stoffen, ergänzte Konstanten und die Ablehnung unbekannter Spalten und nicht numerischer Werte. Ein End-to-End-Test führt Import, Validierung, Bericht, Sicht und QR-Code-Erzeugung über die Kommandozeile aus.
Es sind 23 Tests. Das CI führt sie auf Python 3.10, 3.11, 3.12 und 3.13 aus,
zusammen mit ruff check und ruff format --check, und danach das Beispiel aus
dem README, bei dem der Bericht für den zweiten Pass fehlschlagen muss.
Grenzen
- Die Schemas sind ein Vorschlag des Konsortiums und als laufende Arbeit gekennzeichnet. Sie sind kein offizielles EU-Format, und die delegierten Rechtsakte und Durchführungsrechtsakte sind noch in Arbeit. Ergebnisse sollten mit der aktuellen Data Attribute Longlist unter thebatterypass.eu abgeglichen werden.
- JSON Schema kann nicht ausdrücken, welche Elemente nur unter Bedingungen
Pflicht sind, zum Beispiel die Symbole für Blei und Cadmium.
reportlistet die leeren als Punkte zur Prüfung und entscheidet nicht selbst. - Das Werkzeug erstellt und prüft Passdaten. Es hostet keine Pässe und stellt weder das Register noch die Zugriffskontrolle oder den Datenträger bereit, die die Verordnung verlangt.
- Es ist keine Rechtsberatung.
Die enthaltenen Schemas stammen vom BatteryPass-Ready-Konsortium und stehen unter CC BY 4.0. Code und Installationsanleitung liegen unter github.com/Jwrede/battery-passport-kit.