Tankstellenanzeige — Eigene API-URL
Diese Anleitung richtet sich an Nutzer, die eine eigene Datenquelle für die Preisanzeige verwenden möchten, anstatt die voreingestellte Live-Preisabfrage zu nutzen.
Inhalt
Überblick
Die Tankstellenanzeige ruft in regelmäßigen Abständen Preisdaten von einem Server ab. Standardmäßig wird der integrierte Preisservice verwendet. Du kannst aber auch eine eigene URL hinterlegen — zum Beispiel ein PHP-Script auf deinem eigenen Webserver.
URL im Webinterface eintragen
- Öffne das Webinterface der Tankstellenanzeige (siehe Einrichtung & Bedienung).
- Gehe auf Konfiguration.
- Trage deine URL im Feld API-URL ein (z.B.
http://meinserver.de/preise.php). - Trage eine Tankstellen-ID ein — diese wird bei jedem Abruf als Parameter übergeben. Auch wenn dein Script die ID nicht auswertet, muss das Feld gefüllt sein, damit der Abruf stattfindet.
- Klicke auf Konfiguration speichern.
Wie der Abruf funktioniert
Die Tankstellenanzeige unterstützt sowohl HTTP als auch HTTPS. Wenn dein Server ein gültiges SSL-Zertifikat hat (z.B. Let’s Encrypt), kannst du https:// verwenden. Bei selbstsignierten Zertifikaten oder im lokalen Netzwerk nutze http:// — beides funktioniert.
Die Tankstellenanzeige ruft deine URL per HTTP-GET auf und hängt die Tankstellen-ID als Parameter t an:
http://meinserver.de/preise.php?t=meine-id-123
Falls deine URL bereits Parameter enthält (z.B. http://meinserver.de/preise.php?format=json), wird die ID mit & angehängt:
http://meinserver.de/preise.php?format=json&t=meine-id-123
Erwartetes JSON-Format
Dein Server muss ein JSON-Objekt mit den Kraftstoffpreisen zurückgeben. Die drei Schlüssel e5, e10 und diesel werden erwartet:
{"e5": 2.15, "e10": 2.09, "diesel": 1.89}
Regeln
- Content-Type sollte
application/jsonsein - Die Preise sind Dezimalzahlen mit Punkt als Dezimaltrennzeichen (kein Komma)
- Die drei Schlüssel
e5,e10unddieselmüssen vorhanden sein — fehlt ein Schlüssel, behält die Anzeige den zuletzt bekannten Wert bei - Zusätzliche Schlüssel werden ignoriert
- Bei einem Fehler sollte der Server einen HTTP-Statuscode ungleich 200 zurückgeben (z.B. 400 oder 500) — die Tankstellenanzeige überspringt dann das Update
Beispiel: random.php
Dieses PHP-Script gibt bei jedem Aufruf zufällige Preise zurück. Praktisch zum Testen, ob die Tankstellenanzeige korrekt mit einer eigenen URL funktioniert.
<?php
header("Content-Type: application/json; charset=utf-8");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Pragma: no-cache");
// Komma zu Punkt normalisieren
$minRaw = isset($_GET['min']) ? str_replace(',', '.', $_GET['min']) : '1.50';
$maxRaw = isset($_GET['max']) ? str_replace(',', '.', $_GET['max']) : '2.50';
$min = floatval($minRaw);
$max = floatval($maxRaw);
if ($min <= 0 || $max <= 0 || $min >= $max) {
http_response_code(400);
exit(json_encode(["error" => "Invalid min/max range"]));
}
$minCent = (int)round($min * 100);
$maxCent = (int)round($max * 100);
$out = [
"e5" => rand($minCent, $maxCent) / 100,
"e10" => rand($minCent, $maxCent) / 100,
"diesel" => rand($minCent, $maxCent) / 100,
];
print(json_encode($out));
?>
Aufruf
http://meinserver.de/random.php?min=1.50&max=2.50&t=test-id
Der Parameter t wird vom Script nicht ausgewertet, muss aber in der Tankstellenanzeige eingetragen sein.
Beispielausgabe
{"e5": 1.87, "e10": 2.03, "diesel": 1.95}
Eigenes Script schreiben
Als Vorlage für ein eigenes Script brauchst du nur drei Dinge:
- Den Content-Type Header setzen (
application/json) - Die drei Preise ermitteln (aus einer Datenbank, einer Datei, einer anderen API, …)
- Das Ergebnis als JSON ausgeben
Minimalbeispiel (PHP)
<?php
header("Content-Type: application/json");
$out = [
"e5" => 2.15,
"e10" => 2.09,
"diesel" => 1.89,
];
print(json_encode($out));
?>
Das reicht bereits — die Tankstellenanzeige kann damit arbeiten.
Einfachste Variante: Statische JSON-Datei
Du brauchst nicht einmal ein Script. Eine einfache Textdatei mit dem Namen preise.json auf einem Webserver reicht:
{"e5": 2.15, "e10": 2.09, "diesel": 1.89}
Trage dann http://meinserver.de/preise.json als API-URL ein. Die Preise sind dann natürlich fest und ändern sich nur, wenn du die Datei manuell bearbeitest.