Zustimmungsfluss im Detail
Nach dem Anlegen eines Zählers fließen keine Daten, bis Sie Zustimmung anfordern und der Netzbetreiber (VNB) sie erteilt. Dieser Artikel dokumentiert die status-Werte eines Zählers, das empfohlene Polling-Muster und externe Ereignisse, die eine bestehende Zustimmung beenden können.
status-Werte eines Zählers
Das status-Feld zeigt den aktuellen Stand der Zustimmung:
status |
Bedeutung |
|---|---|
not_connected |
Es wurde keine Zustimmung angefordert oder der Zähler wurde getrennt. |
pending |
Die Anfrage wurde an den VNB gesendet. Wir warten auf die erste Antwort. |
processing |
Der VNB hat die Anfrage bestätigt, der Kunde muss aber noch im Portal des VNB bestätigen. |
connected |
Zustimmung ist aktiv. Daten fließen. |
failed |
Der VNB hat abgelehnt oder der Kunde hat nicht rechtzeitig bestätigt. Korrigieren Sie den Zähler und versuchen Sie es erneut. |
disconnecting |
Eine Aufhebung wurde gesendet. Der VNB hat sie noch nicht bestätigt. |
Nur Zähler mit connected liefern Daten. processing ist normal: je nach Netzbetreiber hat der Kunde mehrere Tage Zeit, im Portal des VNB zu bestätigen.
Zustimmung anfordern
curl -X POST https://energiedaten.at/api/v1/smart-meters/«meter.id»/consent \
-H "Authorization: Bearer $API_TOKEN" \
-H "Energiedaten-Version: 2026-05-08" \
-H "Idempotency-Key: $(uuidgen)"
Der Aufruf ist asynchron. Die Antwort bestätigt, dass die Zustimmungsnachricht versendet wurde. Sie bestätigt nicht, dass Zustimmung erteilt wurde. Pollen Sie den status des Zählers, um den Fortschritt zu verfolgen.
Polling-Muster
Die meisten Zustimmungen sind innerhalb weniger Stunden abgeschlossen. Manche VNBs antworten innerhalb von Minuten; Fälle, in denen der Kunde im Portal des VNB bestätigen muss, können deutlich länger dauern. Verwenden Sie ein Backoff:
import time, requests
def wait_for_consent(meter_id: str, token: str, timeout_hours: int = 2):
url = f"https://energiedaten.at/api/v1/smart-meters/{meter_id}"
headers = {"Authorization": f"Bearer {token}"}
terminal = {"connected", "failed"}
elapsed = 0
interval = 10 # erste Minute: alle 10 Sekunden
while elapsed < timeout_hours * 3600:
meter = requests.get(url, headers=headers).json()["data"]
if meter["status"] in terminal:
return meter["status"]
time.sleep(interval)
elapsed += interval
if elapsed >= 60:
interval = 60
return "timeout"
async function waitForConsent(meterId, token, timeoutHours = 2) {
const url = `https://energiedaten.at/api/v1/smart-meters/${meterId}`;
const terminal = new Set(['connected', 'failed']);
let elapsed = 0;
let interval = 10_000;
while (elapsed < timeoutHours * 3_600_000) {
const res = await fetch(url, { headers: { 'Authorization': `Bearer ${token}` } });
const { data: meter } = await res.json();
if (terminal.has(meter.status)) return meter.status;
await new Promise(r => setTimeout(r, interval));
elapsed += interval;
if (elapsed >= 60_000) interval = 60_000;
}
return 'timeout';
}
Empfohlenes Backoff: alle 10 Sekunden in der ersten Minute, dann alle 60 Sekunden für eine Stunde, danach einmal pro Stunde. Schneller pollen verbraucht nur Ihr Rate-Limit und führt nicht dazu, dass der VNB schneller antwortet.
Externe Aufhebungen
Ein Zähler in connected kann ohne Zutun Ihrerseits zurück nach not_connected wechseln:
- Der Kunde widerruft die Zustimmung direkt beim VNB.
- Der VNB hebt die Zustimmung auf, etwa nach einem Zählerwechsel oder -ausbau.
Beobachten Sie zwischen den Polls Wechsel weg von connected. Wenn Ihre Anwendung auf den Datenstrom angewiesen ist, behandeln Sie jeden anderen Status als Unterbrechung und melden Sie ihn an die zuständige Stelle.
Webhooks (Phase 2)
Phase 2 bringt die Webhooks consent.granted, consent.rejected und consent.revoked. Sobald verfügbar, ist Polling nicht mehr nötig. Sie können sich unter Integrationen → Verbindungen anmelden.