Die offene Spezifikation des kanonischen Energiemodells.
Schema und Adapter-Interface sind frei implementierbar. Das kanonische kWh-Modell ist die stabile eigene Schicht über wechselnden OSS-Bausteinen — eine Wahrheit für Compliance, FinOps und CO₂.
Schema enerva.energy/v0.1SemVer ab v1.0Lizenz Open-Core
Status: Entwurf v0.1 (2026-06). SemVer ab v1.0. Normbezüge: DIN EN 50600-4-x / ISO/IEC 30134-x (KPIs), Del-VO (EU) 2024/1364 (EU-Datenbank), EnEfG Anlage 3 (RZReg). Rechtsbezüge sind mit legal_status versioniert; Werte für Meldungen stammen ausschließlich aus dem legal-filing-Profil.
Designprinzipien
Fünf Regeln, an denen alles hängt.
Eine kWh-Wahrheit. Jeder Verbrauch/jede Erzeugung als kanonischer Record; Compliance, FinOps und CO₂ rechnen auf derselben Quelle.
Pflicht-Messwert ≠ Schätzung. Jeder Record trägt provenance. Software-/Modell-Schätzung (RAPL, Kepler, DCGM-abgeleitet) ist estimated und fließt nie in Meldewerte.
Zwei Berechnungsprofile.legal-filing (statische Anlage-3-Normausgaben) und operational (aktuelle ISO/IEC). Werte werden nie zwischen Profilen wiederverwendet.
Versioniert. Regelwerk, Emissionsfaktoren und Systemgrenzen sind versionierte Zeitreihen (valid_from/valid_to, legal_status).
Marktrollen-neutral & lokal. Keine Cloud-Pflicht; Daten verlassen das RZ nicht.
Kanonisches Energiemodell
Entitäten & Hierarchie.
Jeder Standort ist eine eigenständige Prüf-Einheit (eigenes Gebäude) — keine Aggregation über Gebäude hinweg. Messpunkte tragen ein Kategorie-Tag.
entities
Organisation ─< Standort/RZ// eigenes Gebäude = eigene Prüf-Einheit
├─< Zone// Whitespace, Facility, Abwärme
│ └─< Messpunkt (meter)
│ └─ Kategorie: IT | COOLING | UPS | TOTAL | REUSE | EE | GPU
└─< Asset// Rack, PDU, USV, GPU-Node, Kältemaschine
└─ ref → Messpunkt
Canonical Energy Record
Der Datensatz.
Energie (energy_wh) ist die führende Größe; power_w ist abgeleitet/optional. Monotone Counter-Quellen (z. B. DCGM Field 156) werden via Differenzbildung in Intervall-Energie überführt; Reset/Treiber-Reload erzeugt quality:"gap_filled".
Ein Adapter normalisiert eine Quellklasse auf Canonical Energy Records. Den Rest übernimmt der kanonische Kern.
enerva/sdk/adapter.py
class Adapter(Protocol):
defdiscover(self) -> list[AssetDescriptor]: ...
# [{asset_id, meter_id, category,# unit, source, hints:{brick_tag}}]defread(self, since, until) -> Iterable[EnergyRecord]: ...
# kanonische Records im Fenster (Pull)defsubscribe(self, on_record) -> Subscription: ...
# optional: Push/Stream (Live-Telemetrie)
Konformitäts-Regeln
Idempotentes read: gleiches Fenster → gleiche Records.
Zeit in UTC, Einheiten in SI (Wh / W).
provenance zwingend gesetzt — keine impliziten Defaults.
Fehler je Record isoliert: ein defekter Messpunkt bricht den Lauf nicht ab.
discover()read()subscribe()→ EnergyRecord
Unterstützte Formate
Eingänge & Ausgänge.
5.1 Eingänge (Adapter)
Quelle
Protokoll
OSS-Baustein
Reife
Janitza / GridVis Powermeter
Modbus/TCP·RTU
Telegraf inputs.modbus
hoch
PDU / USV / Netzwerk / Sensoren
SNMP v2c/v3
Telegraf inputs.snmp
hoch
GPU-Energie
DCGM (Field 156/155/164)
dcgm-exporter (Prometheus)
hoch
BMS / Niagara / Kühlung
BACnet/IP, oBIX/REST
oBIX/REST bevorzugt
mittel
moderne Server-OOB
Redfish
nativ
mittel
Robotron-/GridVis-DB
SQL-Polling / CDC
Debezium (Apache-2.0)
hoch
Asset-Stammdaten (SSoT)
REST/GraphQL
NetBox
hoch
Grid-Carbon
API
ENTSO-E + UBA (Default), Electricity Maps (BYOK)
mittel
5.2 Ausgänge (Outputs)
Ziel
Format
Bemerkung
RZReg (EnEfG Anlage 3)
Datensatz + PDF + CSV/JSON
Einreich-Assistent, kein Auto-Submit (Behörden-Login)
EU-Datenbank
Del-VO 2024/1364 · 24 KPI
DE: Single-Submission über BfEE (§14)
Marktkommunikation
EDIFACT MSCONS · UTILMD · APERAK/CONTRL
gegen gültige BDEW-Prüfidentifikatoren validiert
Reports
PDF · CSV · JSON
WeasyPrint/Jinja2, Grafana-unabhängig
Berechnungsprofile
legal-filing vs. operational.
Zwei strikt getrennte Profile. Werte werden nie zwischen Profilen wiederverwendet.
profile · legal-filing
Meldung
Exakt nach den in Anlage 3 referenzierten statischen Normausgaben. Nur measured/substituted. Speist RZReg, EU-Datenbank und Marktkommunikation.
statische Norm-AusgabenCalculation-Ledger
profile · operational
Betrieb
Aktuelle ISO/IEC-Ausgaben für Betrieb, FinOps und CO₂-intern. Darf estimated nutzen (z. B. RAPL/DCGM-abgeleitet) — niemals als Meldewert.
aktuelle ISO/IECShowback / FinOps
Versionierung & Konformität
Drei Konformitätsstufen.
Regelwerk-Profile (YAML) tragen valid_from und legal_status ∈ {geltend, entwurf, angekündigt}. Default = geltende §11-Werte; die Novelle existiert nur als Szenario-Profil. Emissionsfaktoren sind versionierte Zeitreihen (UBA korrigiert Vorjahre).
L1
Records validieren
Kanonische Records erfüllen Schema, Pflichtfelder und Einheiten-/Zeit-Konventionen.
L2
Ledger reproduzierbar
Calculation-Ledger erlaubt die exakte Reproduktion jeder KPI aus Summanden, Norm-Ausgabe und Boundary-Version.
L3
legal-filing deckungsgleich
Das legal-filing-Profil ist deckungsgleich mit dem Anlage-3-Leitfaden — meldefähig.
Open-Core. Schema und Adapter-Interface sind offen und frei implementierbar (siehe CONTRIBUTING.md). Das gepflegte Regelwerk/Mapping und die Compliance-Profile sind der kommerzielle Teil. Änderungen am Dokument: CHANGELOG.md.
Open-Core
Implementier gegen die Spec. Bring deinen Adapter ein.
Schema und Interface sind frei. Standard-Outputs sind Teil des Kerns.