Eine kanonische kWh-Wahrheit.
Alle Pflicht-Formate.
Heterogene RZ-Quellsysteme münden in ein Energiemodell — und daraus erzeugt enerva EnEfG/RZReg-, EU- und Marktkommunikations-Formate. Kein Format-Wildwuchs, keine doppelte Datenhaltung.
{
"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) — führend
"power_w": 1649400.0, // optional: abgeleitete Leistung
"provenance": "measured", // measured|substituted|estimated
"quality": "ok", // ok|gap_filled|implausible|calibrating
"source": "janitza.umg604.modbus",
"boundary_version": "bg-2026.1"
}
Viele Quellen, ein Modell, alle Outputs.
Adapter normalisieren jede Quelle auf 15-min-kWh entlang der Messpunkt-Hierarchie. Daraus speist enerva die geforderten Pflicht- und Marktformate — verlustfrei nachvollziehbar.
Quellsysteme
kWh · 15-min · Messpunkt‑Hierarchie
Normalisierte Wirkenergie pro Messpunkt, eindeutig adressiert über site › room › ups › pdu. Quality-Flag trennt gemessen von geschätzt.
Pflicht- & Markt-Outputs
Unterstützte Formate.
Eingänge werden adaptiert, Ausgänge generiert. Beide Seiten sind versioniert und gegen eine offene Spezifikation dokumentiert.
EINGÄNGE
AUSGÄNGE
Kein Auto-Submit. enerva erzeugt vollständige RZReg- und EU-Datensätze und führt durch einen Einreich-Assistenten — die finale Übermittlung über den nationalen Meldeweg erfolgt durch dich (Behörden-Login). EDIFACT/MaKo wird gegen die jeweils gültigen BDEW-Prüfidentifikatoren validiert.
Ein schmales Interface — kein Protokoll-Sumpf.
Ein Adapter implementiert drei Methoden — discover, read und optional subscribe. Den Rest — Hierarchie, Plausibilisierung, Persistenz, Output-Generierung — übernimmt der kanonische Kern.
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)
- Integrate, don't build. ~120 Zeilen gegen ein dokumentiertes Interface statt gegen neun proprietäre Protokolle.
- Offene Spezifikation. Datensatz-Schema, Hierarchie-Adressierung und Quality-Modell sind versioniert (SemVer) und öffentlich.
- Build vs. Integrate. Standard-Adapter liefern wir; spezifische Quellen baust du selbst oder gibst sie als Open-Core zurück.
- Test-Harness inklusive. Golden-Files prüfen jeden Adapter gegen erwartete kanonische Records.
Ein kWh-Wert. Drei Verbraucher.
Compliance, FinOps und CO₂ rechnen nicht auf je eigenen Datentöpfen, sondern auf demselben Messwert. Das eliminiert Drift zwischen Meldung, Verrechnung und Bilanz.
Pflicht-Meldewert
Nur gemessene Energie (MID-konforme Zähler) fließt in RZReg/EU-Datensätze. Schätzungen sind explizit als solche markiert und ausgeschlossen.
Energie-Chargeback
Derselbe kWh-Wert je Messpunkt erlaubt energie-basiertes Showback (kWh → €) — best available, intern, nicht eichrechtlich abrechenbar.
CO₂-Bilanz
kWh × Emissionsfaktor (ENTSO-E/UBA) ergibt CUE und Scope-2. Eine Quelle, konsistent über alle Zeiträume.
Trennlinie Messwert / Schätzung. Software-Schätzer wie RAPL oder Modell-Hochrechnungen sind für Betrieb und FinOps nützlich, gehen aber nie in Meldewerte ein. Das Quality-Flag macht die Herkunft jedes Wertes nachprüfbar.
Lies die Spezifikation. Bring deinen Adapter ein.
Das Format-Schema und das Adapter-SDK sind offen. Standard-Outputs sind Teil des Kerns.