enerva Exchange · Spezifikation v0.1 · Entwurf

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.1 SemVer ab v1.0 Lizenz 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".

canonical_energy_record.json
{
  "schema": "enerva.energy/v0.1",
  "site_id": "rz-hh-01",
  "meter_id": "nshv.total",
  "category": "TOTAL",        // IT|COOLING|UPS|TOTAL|REUSE|EE|GPU
  "ts_start": "2026-06-29T10:00:00Z",
  "interval_s": 900,          // 900 = 15-min; 60/1 = Betriebstelemetrie
  "energy_wh": 412350.0,     // Energie im Intervall (Wh) — primär
  "power_w": 1649400.0,     // optional: mittlere/akt. Leistung
  "provenance": "measured",   // measured|substituted|estimated
  "quality": "ok",            // ok|gap_filled|implausible|calibrating
  "source": "janitza.umg604.modbus",
  "boundary_version": "bg-2026.1"
}

Pflichtfelder: schema · site_id · meter_id · category · ts_start · interval_s · energy_wh · provenance · quality

Provenance & Quality

Was darf gemeldet werden?

Die Trennlinie zwischen physischem Messwert und Schätzung ist die wichtigste Guardrail des Modells.

provenanceBedeutungmeldefähig?
measured physischer Zähler (RLM / Janitza / PDU / USV) ja — legal-filing
substituted normkonforme Ersatzwertbildung bei Lücke ja, gekennzeichnet
estimated Software-/Modell-Schätzung (RAPL / Kepler / DCGM-abgeleitet) nein — nur operational / FinOps / CO₂-intern
KPI-Definitionen

Versionierte Kennzahlen.

Jede KPI-Berechnung schreibt ins Calculation-Ledger: Eingangs-Summanden, verwendete Norm-Ausgabe, Boundary-Version, Profil und Ergebnis — reproduzierbar und prüfbar.

KPIFormellegal-filing NormHinweis
PUEE_TOTAL / E_ITDIN EN 50600-4-2:2019-08Jahresmittel; Abwärme-Aufbereitungsstrom ausgenommen
ERFE_REUSE / E_TOTALDIN EN 50600-4-6:2020-11nur Neubau-Pflicht
WUEWasser_l / E_ITDIN EN 50600-4-9:2020-05l/kWh
CUE / CO₂CO₂_kg / E_ITISO/IEC 30134-8:2022Faktor versioniert (UBA / ENTSO-E)
EE-AnteilE_EE / E_TOTALEnEfG §11 Abs. 5HKN/PPA-Nachweis, Doppelzählungs-Sperre
Adapter-Interface

Schmal — drei Methoden.

Ein Adapter normalisiert eine Quellklasse auf Canonical Energy Records. Den Rest übernimmt der kanonische Kern.

enerva/sdk/adapter.py
class Adapter(Protocol):
    def discover(self) -> list[AssetDescriptor]: ...
        # [{asset_id, meter_id, category,
        #   unit, source, hints:{brick_tag}}]

    def read(self, since, until) -> Iterable[EnergyRecord]: ...
        # kanonische Records im Fenster (Pull)

    def subscribe(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)

QuelleProtokollOSS-BausteinReife
Janitza / GridVis PowermeterModbus/TCP·RTUTelegraf inputs.modbushoch
PDU / USV / Netzwerk / SensorenSNMP v2c/v3Telegraf inputs.snmphoch
GPU-EnergieDCGM (Field 156/155/164)dcgm-exporter (Prometheus)hoch
BMS / Niagara / KühlungBACnet/IP, oBIX/RESToBIX/REST bevorzugtmittel
moderne Server-OOBRedfishnativmittel
Robotron-/GridVis-DBSQL-Polling / CDCDebezium (Apache-2.0)hoch
Asset-Stammdaten (SSoT)REST/GraphQLNetBoxhoch
Grid-CarbonAPIENTSO-E + UBA (Default), Electricity Maps (BYOK)mittel

5.2 Ausgänge (Outputs)

ZielFormatBemerkung
RZReg (EnEfG Anlage 3)Datensatz + PDF + CSV/JSONEinreich-Assistent, kein Auto-Submit (Behörden-Login)
EU-DatenbankDel-VO 2024/1364 · 24 KPIDE: Single-Submission über BfEE (§14)
MarktkommunikationEDIFACT MSCONS · UTILMD · APERAK/CONTRLgegen gültige BDEW-Prüfidentifikatoren validiert
ReportsPDF · CSV · JSONWeasyPrint/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.