Benzinpreis im smartHome
Es gibt sehr viele Webseiten und Apps, die die aktuellen Benzinpreise anzeigen. Aber es hat auch einen gewissen Charme die Tankstellen in der Umgebung der eigenen Wohnung direkt im smartHome anzuzeigen. Mit Hilfe einer freien bereitgestellten API ist die Lösung schnell realisiert.
Die API von https://creativecommons.tankerkoenig.de/ erfüllt da genau unseren Zweck, eine oder mehrere Tankstellen abzurufen. Sie enthält die Echtzeit-Daten von der Markttransparenzstelle für Kraftstoffe (MTS-K).
Nur eine Tankstelle:
https://creativecommons.tankerkoenig.de/json/prices.php?ids=IDDERTANKSTELLE&apikey=APIKEY

Es ist bei dieser API zwar auch möglich sich die Tankstellen im Umkreis einer bestimmten GPS-Position anzuzeigen, doch da das zuhause üblicherweise sicht nicht bewegt, habe ich darauf verzichtet und die Tankstellen, die ich sehen will explizipt im Aufruf genannt um nur diese zu bekommen:
https://creativecommons.tankerkoenig.de/json/prices.php?ids=IDDER1.TANKSTELLE%2CIDDER2.TANKSTELLE%2CIDDER2.TANKSTELLE&apikey=APIKEY

Gründe für eine Vorauswahl der Tankstellen könnten sein:
- mehrere Tankstellen im Umkreis , die vielleicht eh immer den gleichen Preis haben
- Vergleich von Marken und daher Ausblenden von zwei gleicher Marke
- man hat eine Lieblingstankstelle, die vielleicht gar nicht unter den fünf nächstgelegenenden liegt
- es soll auch die angezeigt werden, die sich auf dem Weg zur Arbeit oder Nahe der Arbeitsstelle liegt

Das Ergebnis des Aufrufs sieht dann zum Beispiel so aus:
{"ok":true,
"license":"CC BY 4.0 - https:\/\/creativecommons.tankerkoenig.de",
"data":"MTS-K",
"prices":{
"IDDER1.TANKSTELLE": {"status":"open", "e5":1.294, "e10":1.274, "diesel":1.099},
"IDDER2.TANKSTELLE": {"status":"open", "e5":1.294, "e10":1.274, "diesel":1.099},
"IDDER3.TANKSTELLE": {"status":"open", "e5":1.339, "e10":1.319, "diesel":1.139}
}}


Den API-Aufruf natürlich nicht minütlich durchführen, sondern nur alle 20-30 Minuten, netterweise nicht zur vollen Stunde (ein Cronjob hilft da), und das Ergebnis in eine Datei speichern. Diese Datei kann dann beliebig oft vom smartHome abgerufen werden. Das Parsen des JSON-Objekts übernimmt dabei jq ganz einfach:
jq -r DATEI '.prices.\IDDER1.TANKSTELLE"."e10"'

So erhält man den Preis für E10 der 1. Tankstelle.