Raspberry Pi Pico W: Gasspeicher-Füllstand in Deutschland auslesen und anzeigen (GIE-AGSI-API)

Mit dem Krieg zwischen der Ukraine und Russland sind die Gasspeicher-Füllstände in Deutschland in den medialen Fokus gerückt.
Wegen Sanktionen gegen Russland vielen die Lieferungen von russischem Gas aus. Da Gas aus Russland einen großen Teil unseres Verbrauchs deckt, stand mehrere Monate lang die Befürchtung im Raum, das Gas könnte nicht über den Winter reichen. Um die Abhängigkeit von russischem Gas und die sich daraus ergebende Erpressbarkeit zu reduzieren, wurde Gas von anderen Lieferanten bezogen. Die Frage war, ob das reichen würde, um die Gasspeicher aufzufüllen. Der Gasspeicher-Füllstand wurde so zum Indikator, ob wir es über einen kalten Winter schaffen oder nicht.

Wie steht es um die deutschen Gasreserven?

Das ist kein Geheimnis, sondern eine öffentlich verfügbare Information, die man von der Gas Infrastructure Europe (GIE) bekommen kann. Die GIE ist ein Zusammenschluss der Betreiberfirmen von Gasspeichern in der EU. Die melden ihre jeweiligen Speicherstände an das Aggregated Gas Storage Inventory (AGSI). Und für Flüssiggasspeicher (Speicher für LNG, liquefied natural gas) an das Aggregated LNG Storage Inventory (ALSI).
Diese Daten werden von einer API maschinenlesbar bereitgestellt. Somit ist es möglich, den Gesamtfüllstand der deutschen Gasspeicher und auch für andere Länder zu ermitteln.

AGSI-API

Die GIE stellt für AGSI und ALSI jeweils eine API bereit, die kostenlos genutzt werden dürfen. Es gibt nur zwei Bedingungen:

  1. Registrierung für einen API-Schlüssel erforderlich.
  2. Nennung der Quelle: GIE/AGSI

Wenn Du Dir noch nicht sicher bist, ob Du Dich registrieren möchtest, dann kannst Du die API erst einmal im Browser aufrufen und Dir die Daten ohne API-Key ansehen.

Das Ergebnis ist ein JSON-Datensatz, der im Browser strukturiert und damit leichter lesbar dargestellt wird. Trotzdem müssen die Felder und Daten richtig interpretiert werden.

Für die Registrierung wird nach Name, E-Mail-Adresse, Firmenname, ein Passwort gefragt. Nach der Registrierung bekommt man den API-Key per E-Mail zugeschickt und auf der Bestätigungsseite angezeigt.

Dort findest Du auch eine PDF-Datei verlinkt, in der beschrieben ist, wie man mit der API an die gewünschten Daten kommt.

Hinweis: Die API liefert die Daten oft ein oder zwei Tage verzögert.

Programmcode

Im folgenden Programmcode müssen die Zugangsdaten für das WLAN und der API-Key der GIE eingetragen werden. Die URL für die Abfrage ist schon korrekt gewählt (begrenzt auf Deutschland und die letzten 5 Datensätze).

Nach dem WLAN-Verbindungsaufbau werden die Daten per HTTP-Request abgefragt. Die Daten liegen dann als JSON-Datensatz vor. Aus diesem kann man verschiedene Daten auslesen. Der Programmcode beschränkt sich auf den letzten aktuellen Füllstand, die Veränderung zum Vortag (Trend) und das Datum dieses Datensatzes.

Der Programmcode sendet einmal einen HTTP-Request an die AGSI-API und gibt dann die Daten in der Kommandozeile/Shell aus. Der Programmcode wird danach automatisch beendet.

# Bibliotheken laden
import machine
import network
import urequests as requests
import time

# WLAN-Konfiguration
wlanSSID = 'WLANNAME'
wlanPW = 'WLANPASSWORD'
network.country('DE')

# GIE-AGSI-API
apiURL = 'https://agsi.gie.eu/api?country=DE&size=5'
apiKey = {"x-key": "APIKEY"}
apiData = ''

# Status-LED
led_onboard = machine.Pin('LED', machine.Pin.OUT, value=0)

# WLAN-Verbindung herstellen
wlan = network.WLAN(network.STA_IF)
if not wlan.isconnected():
    print('WLAN-Verbindung herstellen')
    wlan.active(True)
    wlan.connect(wlanSSID, wlanPW)
    for i in range(10):
        if wlan.status() < 0 or wlan.status() >= 3:
            break
        led_onboard.toggle()
        print('.')
        time.sleep(1)

# WLAN-Verbindung prüfen
if wlan.isconnected():
    print('WLAN-Verbindung hergestellt / WLAN-Status:', wlan.status())
    led_onboard.on()
    ipconfig = wlan.ifconfig()
    print('IPv4-Adresse:', ipconfig[0])
else:
    led_onboard.off()
    print('WLAN-Status:', wlan.status())
    raise RuntimeError('Keine WLAN-Verbindung')

# API-Daten abrufen
print()
print('HTTP-Request an', apiURL)
response = requests.get(apiURL, headers=apiKey)
print('Status-Code:', response.status_code)
if response.status_code == 200:
    # JSON-Datensatz umwandeln
    apiData = response.json()
# Verbindung schließen
response.close()

# Daten verarbeiten und ausgeben
if (len(apiData) > 0):
    # Daten lesen
    fuellstand = apiData['data'][0]['full']
    trend = apiData['data'][0]['trend']
    datum = apiData['data'][0]['gasDayStart']
    #print(apiData)
    # Daten-Ausgabe
    print()
    print('Füllstand: ' + fuellstand + '% / Trend: ' + trend)
    print('Stand vom: ' + datum + ' / Quelle: GIE/AGSI')
else:
    print()
    print('Keine Daten vorhanden!')

Erweiterungen

Die Ausgabe auf der Kommandozeile ist natürlich nicht besonders attraktiv. Wenn jemand ein Display hat, kann man das zur Ausgabe der Daten verwenden und die Abfrage einmal am Tag durchführen lassen.

Denkbar wäre es, die abgefragten Daten zu speichern und zu archivieren. Desweiteren könnte man noch eine Auswertung der Daten über mehrere Tage vorsehen.

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren