🇩🇪 Dieser Adapter liefert die Spritpreise für 10 festgelegte Tankstellen über den JSON Feed der Internetseite tankerkoenig.de. Die Daten werden in Objekte gespeichert, um in ioBroker.vis verarbeitet zu werden.
Der Adapter verwendet die Seite prices.php
, welche beim Quellserver von tankerkoenig.de durch die gleichzeitige Abfrage vieler Stationen und die Rückgabe von nur wenigen Daten insgesamt sehr viel weniger Datenverkehr verursacht, als die Abfrage über list.php
(Umkreissuche) oder detail.php
(Einzelabfrage einer Tankstelle). Auf die beiden anderen Formen der Abfrage wurde bewusst verzichtet. Somit ist keine Umkreissuche (zB sortiert nach Preis) und keine Lieferung genauerer Daten (Straße, Marke, Hausnummer, etc.) möglich. Die jeweils günstigste Tankstelle für die drei Spritsorten E5, E10 und Diesel werden in einem separaten Kanal gespeichert.
Der API Schlüssel ist auf der Seite von Tankerkönig erhältlich. Die 36-stellige Zeichenkette muss hier eingetragen werden.
Es können bis zu 10 Tankstellen abgefragt werden. Dazu ist die Eingabe der Tankstellen ID nötig. Die ID für jede Tankstelle erhält man auf tankerkoenig.de. Sie ist ebenfalls 36-stellig. Zusätzlich kann ein eigener Name für die Station hinterlegt werden.
Über dieses Fenster werden die neuen Stationen hinzugefügt, man kann direkt in der Karte darunter die Stadions-ID auslesen und in das Feld oben kopieren. Es gibt 2 Möglichkeiten, die ID in das Feld zu kopieren:
- Du markierst die ID und kopierst sie mit Strg+C oder du klickst mit der rechten Maustaste auf Kopieren und fügst sie dann in das Feld ein.
- Du kannst auch auf die Schaltfläche
Copy
klicken, dann wird der gesamte Inhalt kopiert, und du kannst ihn dann entweder direkt in das Feld einfügen. Oder du klickst auf die SchaltflächePaste
, dann wird nur die ID in das Feld eingefügt.
Dazu muss man aber zulassen, dass der Browser auf die Zwischenablage zugreifen darf. (dies funktioniert nur, wenn Ihr Admin mit https läuft und Sie die Seite mit https aufrufen)
Unter der Rabatt Optionen kann man zwischen den Rabatt Varianten ⇨ Euro / Prozent auswählen und für welchen Kraftstoffart der Rabatt gilt (Standard sind alle ausgewählt)
Aktivieren Sie diese Funktion, wenn die Preise auf 0 gesetzt werden sollen, wenn die Tankstelle geschlossen ist.
Wenn die Funktion ausgeschaltet ist, werden die Preise als ungültig gesetzt, siehe unten.
Wenn eine Tankstelle keine Preise für E5, E10 oder Diesel liefert, z. B. bei einer geschlossenen Station, wird der Preis sich nicht ändern stattdessen wird die state Qualität auf Qualitätscode 0x40 => Ersatzwert aus Gerät
gesetzt, der state wird dann orange angezeigt.
Der Adapter läuft als Daemon (nicht im Schedule Modus) und startet regulär alle fünf Minuten. Die Daten des Quellfeeds werden vom Server bei tankerkoenig.de nur alle 4min aktualisiert, daher macht eine häufigere Abfrage der Daten keinen Sinn und verursacht nur überflüssigen Datenverkehr und kostet Ressourcen. Größere Intervalle sind jederzeit einstellbar.
Die Datenpunkte werden dynamisch erstellt, das heißt, wen man eine Station anlegt werden Datenpunkte dazu angelegt (Maximal 10 Stationen) Unter den verschiedenen Kraftstoffart werden die folgenden Datenpunkte:
feed
(Preis mit drei Dezimalstellen als Number)short
(Preis mit zwei Dezimalstellen (ungerundet) als String)3rd
(dritte Dezimalstelle des Preises zur Darstellung der Hochzahl in VIS)combined
(fertig HTML formatiert mit Preis und hochgestellter dritter Dezimalstelle oder ggf. Öffnungsstatus [closed
/not found
] zur einfachen Darstellung mit VIS HTML Widget)
Unter jeder Kraftstoffart gibt es noch einen weiteren Ordner minmax
in dem die Datenpunkte für die Min und Max Preise der Tankstelle angelegt werden. Sie werden nur für den
einen Tag gespeichert und werden am nächsten Tag wieder auf 0 gesetzt und neu befüllt.
Außerdem werden noch fünf Datenpunkte auf in der jeweiligen Station erstellt:
discount
(Rabatt in Euro / Prozent als Number)discounted
(Zeigt an, ob ein Rabatt aktiv ist oder nicht)status
(Station geöffnet?)name
(vom Nutzer vergebener Name der Tankstelle)station_id
(Tankerkönig ID der Tankstelle)
Zusätzlich werden noch den die günstigsten Tankstellen aus der Liste in die Kanäle ermittelt
cheapest.E5
chepest.E10
cheapest.diesel
Auf der Stations ebenen werden weitere fünf Datenpunkte erstellt:
adapterStatus
(zeigt den status vom adapter an mögliche Werte:idle / automatic request / manual request / detail request / requet timeout 1min / write states / request Error / offline
)json
(JSON Daten der Tankstelle)jsonTable
(json Tabelle für die visnur die json Daten kein Widget
)
lastUpdate
(Zeitpunkt der letzten Aktualisierung)refresh
(Dies ist ein Button, mit dem man die Daten manuell aktualisieren kannACHTUNG
nach einmaligen auslösen ist es für 1 minute nicht mehr möglich die manuelle Aktualisierung auszulösen)
Innerhalb dieser Kanäle ist die jeweils günstigste Tankstelle für die genannte Kraftstoffart angelegt. Bieten mehrere Tankstellen einen Treibstoff zum gleichen Preis an, wird die Station ausgegeben, die in den Einstellungen zuerst/ganz oben eingetragen wurde.
Der Datenpunkt combined lässt sich in VIS mit diesem Widget darstellen
[{"tpl":"tplHtml","data":{"visibility-cond":"==","visibility-val":1,"refreshInterval":"0","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"html":"<span style=\"font-size: 80%; padding: 0 20px 0 5px;\">Diesel</span>{tankerkoenig.0.stations.0.diesel.combined}"},"style":{"left":"634px","top":"745px","z-index":"20","width":"228px","height":"36px","background-color":"","color":"rgba(225,225,225,1)","font-size":"30px","text-align":"center","background":"rgba(250,0,0,0.1)"},"widgetSet":"basic"}]
Der Inhalt des Datenpunktes combined
wird mit einer CSS-Klasse übergeben. Die Klassen sind station_open
,station_closed
und station_notfound
. Durch die Verwendung von CSS-Definitionen im VIS Editor können so (nicht nur farblich) unterschiedliche Darstellungen für die Zustände "geöffnet" (zB normal), "geschlossen" (zB rote Schrift) und "nicht gefunden" (zB gelbe Schrift) erzielt werden.
.station_open {
color: blue;
}
.station_closed {
color: red !important; /* !important kann ggf. weggelassen werden */
}
.station_notfound {
color: yellow !important; /* !important kann ggf. weggelassen werden */
}
.station_no_prices {
color: yellow !important; /* !important kann ggf. weggelassen werden */
}
/* € sign */
.station_combined_euro {
font-family: Times;
font-size: 80%;
}