3 min read

TAB auf VNBdigital ab 01.01.2025

Die Technischen Anschlussbedingungen (TAB) im deutschen Stromverteilnetz sind zentrale Richtlinien, die die technischen und organisatorischen Anforderungen für den Anschluss von Anlagen an das Verteilnetz definieren. Ihr Hauptziel ist es, die Netzstabilität und -sicherheit zu gewährleisten und einen reibungslosen sowie sicheren Betrieb der angeschlossenen Anlagen sicherzustellen.

Um die Transparenz der TAB deutschlandweit zu erhöhen, sind schrittweise Verbesserungen vorgesehen. Ein wichtiger Schritt ist die einheitliche Veröffentlichung bzw. Bereitstellung über die gemeinsame Website der Verteilnetzbetreiber, VNBdigital.de[1].

Diese Veröffentlichung ist gemäß § 14e Abs. 2a EnWG2[2] ab dem 1. Januar 2025 verpflichtend. Aus Neugier habe ich stichprobenartig überprüft, ob alle VNB dieser Verpflichtung nachgekommen sind. Warum nur stichprobenartig?

Leider bietet VNBdigital keine offizielle API, sodass ich die derzeit 890 VNB nicht automatisiert prüfen konnte. Stattdessen habe ich am 1. Januar 2025 15 zufällig ausgewählte VNB geprüft:

Übersicht über zufällig geprüfte VNB

VNB Veröffentlicht?
Gemeindewerke Garmisch-Partenkirchen ✔️
Stadtwerke Freudenstadt GmbH & Co. KG ✔️
SSW Netz GmbH
Energie Waldeck-Frankenberg GmbH ✔️
Stadtwerke Olbernhau GmbH ✔️
MVV Netze GmbH
Markt Egloffstein
Elektrizitätsgenossenschaft Wolkersdorf und Umgebung eG ✔️
Stadtwerke Heilsbronn
Gemeindewerke Peißenberg KU
Gemeindewerke Markt Stockstadt am Main
SWE Netz GmbH (Ettlingen) ✔️
Stadtwerke Waren GmbH ✔️
Netzgesellschaft Schwerin mbH (NGS) ✔️
Stadtwerke Burg Energienetze GmbH ✔️

Wie sehen die Einträge aus?

In den von mir geprüften Fällen sind Links hinterlegt, die gezielt zu den Landing Pages der jeweiligen VNB führen, wo TAB und weitere Informationen, meist als PDF, hinterlegt sind.

Ein Eintrag mit Verweis auf TAB sieht so aus:

Screenshot from 2025-01-01 17-21-03.png

Ein Eintrag ohne Verweis auf TAB sieht so aus:

Screenshot from 2025-01-01 17-22-10.png

Erkenntnisse

Mehrere VNB sind ihrer Verpflichtung nach § 14e Abs. 2a EnWG noch nicht nachgekommen

Von meinen Stichproben haben bisher lediglich 40 % die Veröffentlichung vorgenommen. Es ist daher anzunehmen, dass eine beträchtliche Anzahl der heute laut Marktstammdatenregister 890 VNB bisher keine Veröffentlichung vorgenommen hat. Der Aufwand scheint überschaubar zu sein, weshalb ich über die Ursachen verwundert bin.

Abweichende Bezeichnungen der Marktakteure

Auf VNBdigital kann nicht nach eindeutigen Kennziffern (z.B. Marktpartner-ID oder ACER-Code) gesucht werden. Daher musste der Abgleich basierend auf der Marktpartnerbezeichnung erfolgen. Auffällig ist, dass die Marktpartner nicht immer gleich im Marktstammdatenregister und auf VNBdigital benannt sind.

Ein Beispiel: SNB931774737192

Bezeichnung im Marktstammdatenregister: "Markt Stockstadt - Gemeindewerke -"
Bezeichnung auf VNBdigital: "Gemeindewerke Markt Stockstadt am Main"

Zweifelhafter Mehrwert

Mir persönlich erschließt sich der Mehrwert der Verlinkung der existierenden TAB-Landing-Pages nicht vollständig. Diese sind derzeit nach wie vor bundesweit unterschiedlich und waren vorher nur eine Suche entfernt. Ich hoffe, dass dies nur der erste Schritt in der weiteren Digitalisierung und Standardisierung der Netzanschlussprozesse ist.

Bonus: Python Script zum zufälligen Aussuchen einer Zeile in einer CSV-Datei

Die Liste der Marktakteure[3] kann über das Marktstammdatenregister im CSV-Format heruntergeladen werden. Um den Prozess der zufälligen Auswahl relativ unvoreingenommen zu gestalten, habe ich ein kurzes Python-Skript erstellt, das ich über Jupyter verwendet habe, um zufällige Zeilen auszuwählen:

import pandas as pd
import random
from google.colab import files

def upload_csv():
    """Upload a CSV file using Google Colab's file uploader."""
    uploaded = files.upload()
    for file_name in uploaded.keys():
        print(f"File {file_name} uploaded successfully.")
        return file_name

def load_csv(file_name):
    """Load the uploaded CSV file into a DataFrame."""
    try:
        df = pd.read_csv(file_name)
        print("CSV file loaded successfully.")
        return df
    except Exception as e:
        print(f"Error loading CSV file: {e}")
        return None

def choose_random_row(df):
    """Select a random row from the DataFrame."""
    if df is not None:
        random_index = random.randint(0, len(df) - 1)
        random_row = df.iloc[random_index]
        print(f"Randomly selected row:\n{random_row}")
    else:
        print("No CSV file loaded.")

def main():
    file_name = upload_csv()
    df = load_csv(file_name)
    
    while df is not None:
        user_input = input("Press Enter to select a random row, or type 'exit' to quit: ").strip().lower()
        if user_input == 'exit':
            print("Exiting the random selector.")
            break
        choose_random_row(df)

if __name__ == "__main__":
    main()

  1. https://www.vnbdigital.de/ ↩︎

  2. https://www.gesetze-im-internet.de/enwg_2005/__14e.html ↩︎

  3. https://www.marktstammdatenregister.de/MaStR/Akteur/Marktakteur/IndexOeffentlich ↩︎