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.
unknown Der Zustand ließ sich nicht zuordnen. Tritt im Normalbetrieb nicht auf; behandeln Sie ihn wie einen unbekannten Wert und pollen Sie weiter.

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
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:

Python
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"
Node.js
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 führt nicht dazu, dass der VNB schneller antwortet — es verbraucht nur Ihr Stundenkontingent. Das Rate-Limit wird pro Stunde gezählt: 100 Anfragen im Community-Plan, 500 im Light-Plan, 2.000 im Plus-Plan und 5.000 im Pro-Plan. BYO Pro und Enterprise liegen darüber.

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.

Was als nächstes?