NEWS
IoBroker.tankerkoenig | Spritpreis-Adapter
-
Ich glaube der Adapter aktualisiert nicht nach Zeit. Wahrscheinlich nur beim Stop/Start des Adapters.
Als Zeitstempel steht in den Daten noch die Zeit von gestern.
Dann ist mir noch aufgefallen, dass beim Anlegen der Tankstellen 0-9 nur die 0 als Channel angelegt wird, siehe Grafik:
P.S.: ich bin schwer begeistert vom Adapter und das Pix so Gas gibt bei der Apapterentwicklung. Wenn er jetzt noch mit Webstorm arbeitet… :twisted:
-
Als Zeitstempel steht in den Daten noch die Zeit von gestern. `
Hab ich auch gesehen.@Pix:
Nochmals Chapeau !!!
Ein Verbesserungsvorschlag noch:
Wie wäre es mit einem Datenpunkt "Zeitstempel" auf oberster Ebene?
Dieser Datenpunkt enthält dann die Uhrzeit (ggf. auch mit Datum) der letzten Aktualisierung. Habe ich mir in meinem Node-Red-Flow auch mit eingebaut und auch in der VIS-View mit anzeigen lassen.
Gruß,
Eric
-
kann ich bestätigen
tankerkoenig JSON {"ok":true,"license":"CC BY 4.0 - http:\/\/creativecommons.tankerkoenig.de","data":"MTS-K","prices":{"0aa11ce1-2f76-4ad6-a685-7d045176e1ca":{"status":"open","e5":1.309,"e10":1.289,"diesel":1.069},"51d4b6b0-a095-1aa0-e100-80009459e03a":{"status":"open","e5":1.309,"e10":1.289,"diesel":1.069},"c08cad20-ea69-4a5a-1a0b-d84b7f109c7b":{"status":"closed"},"2d4b0fee-65f0-4959-bad8-ba2dd558e841":{"status":"open","e5":1.349,"e10":1.329,"diesel":1.109}}} true tankerkoenig.0 2016-06-02 20:55:29.359 2016-06-02 20:14:27.470
Gruß
Jürgen
-
Hallo zusammen,
vielen Dank für das Feedback.
Ich habe bei den schedule - gesteuerten Adaptern immer wieder das Problem, dass sie nicht gestartet werden
warn instance system.adapter.tankerkoenig.0 does not started, because just executed
Ich habe keine Ahnung, wie ich das in den Griff bekommen soll.
Wie wäre es mit einem Datenpunkt "Zeitstempel" auf oberster Ebene?
Dieser Datenpunkt enthält dann die Uhrzeit (ggf. auch mit Datum) der letzten Aktualisierung. `
Das ist eine gute Idee. In welchem Format soll der Stempel angelegt werden? * JJJJ-MM-TT HH:MM:SS-
HH:MM:SS TT-MM-JJJJ
-
XXXXXXXXXXms seit 1970
Wenn er jetzt noch mit Webstorm arbeitet… `
Webstorm habe ich erstmal wieder zu Seite gelegt. Zuviele Baustellen :roll:Dann ist mir noch aufgefallen, dass beim Anlegen der Tankstellen 0-9 nur die 0 als Channel angelegt wird, siehe Grafik:
filename="tankerkoenig.jpg" index="0">~~ `
Ist das nicht korrekt? Schließlich liegen innnerhalb der Channels erst die States mit den Werten. Die Channels haben logischerweise keine Werte.könnte hier nicht bei "tankerkoenig.de" direkt ein anklickbarer Link erscheinen? Und ein Hinweiß zum erhalt des API-Key `
Jau, wird gemacht. In der Readme ist der Link schon vorhanden. Schließlich geht es ja auch zu creativecommons.tankerkoenig.de und nicht zu tankerkoenig.de, das findet sonst keiner.Könnte hier nicht der selbst vergebene Name stehen? `
Ich habe bewusst darauf verzichtet, den selbst vergeben Namen hier in den Objektpfad einzubauen.Nachteil:
-
Lesbarkeit
Vorteil: -
Keine Prüfung auf unzulässige Zeichen im Text notwendig
-
In VIS müssen Widgets beim Wechsel der Tankstelle nicht editiert werden. Man legt sich einmalig ein Widget(-set) für Tankstellenposition 1 an und das funktioniert auch beim Wechsel der Tankstelle. So ist auch die Möglichkeit zum Austausch der Widgets unter den Nutzern einfacher (und anonymer).
Dann ist mir im DebugLOG noch aufgefallen das immer 10 Tankstellen abgefragt werden. `
Ja, das ist sogar der Sinn des neuen Skripts! Tankerkönig hat neben der Möglichkeit mit detail.php (Detaillierte Infos zu einer Station) und list.php (Liste, nach Preis oder Entfernung sortiert) auch die prices.php geschaffen. Damit können bis zu 10 Station auf einmal abgefragt werden. Der gelieferten Daten sind weniger (Preise aller Sorten, Öffnungszustand, aber kein Name). Das sparte enorm Bandbreite. Pro Nutzer wird nun alle 5min eine Abfrage gestartet. Vorher war es alle 5min für jede gewünschte Tankstelle eine Abfrage/Nutzer mit viel mehr Inhaltsdaten.Die Strings sind auch unterschiedlich lang.
Muss das so ? `
Das ist nur eine debug Ausgabe, die ich jetzt mal rausnehmen kann. Die Ausgabe war zur Kontrolle, ob die Funktion zur Reihung der verschiedenen ID kommasepariert funktioniert (kein Komma am Ende, welches ist das letzte Feld, das ausgefüllt wurde? etc…). Man kann in den Einstellungen des Adapters ja auch Felder in der Mitte freilassen. ZB Feld1 Aral, Feld 3 Shell Feld 9 ESSO. Die Felder dazwischen werden als leer erkannt und nicht mit in den String aufgenommen. Das hat bei der Programmierung etwas Ausprobieren verlangt, daher die debug-Ausgabe. Für die Nutzung in VIS ist das einfacher. So kann ich sagen: "Feld 1 ist immer ARAL und Feld 9 immer ESSO"Ich habe die Tage leider keine Zeit für Änderungen. Vielleicht Sa etwas, mal sehen.
Bitte melden, wenn Euch noch was auffällt.
Gruß
Pix
-
-
Hi pix,
ich weiß, man quotet keinen Quote, aber ohne geht es machmal nicht
@pix:Wie wäre es mit einem Datenpunkt "Zeitstempel" auf oberster Ebene?
Dieser Datenpunkt enthält dann die Uhrzeit (ggf. auch mit Datum) der letzten Aktualisierung. `
Das ist eine gute Idee. In welchem Format soll der Stempel angelegt werden? * JJJJ-MM-TT HH:MM:SS-
HH:MM:SS TT-MM-JJJJ
-
XXXXXXXXXXms seit 1970 `
Wenn zwei Datenpunkte machbar sind, dann zwei:
- HH:MM:SS
TT:MM:JJJJ
Dann sind alle Möglichkeiten offen.
@pix:Ich habe die Tage leider keine Zeit für Änderungen. Vielleicht Sa etwas, mal sehen. `
Das geht ja gar nicht :lol:Nee, quatsch - Scherz!!!
Gruß,
Eric
-
-
@pix:Hallo zusammen,
vielen Dank für das Feedback.
Ich habe bei den schedule - gesteuerten Adaptern immer wieder das Problem, dass sie nicht gestartet werden
warn instance system.adapter.tankerkoenig.0 does not started, because just executed
Ich habe keine Ahnung, wie ich das in den Griff bekommen soll. `
Code, der diese Meldung produziert sieht so aus.// After sleep of PC all scheduled runs come together. There is no need to run it X times in one second. Just the last. if (procs[id].lastStart && (new Date()).getTime() - procs[id].lastStart < 2000) { logger.warn('host.' + hostname + ' instance ' + instance._id + ' does not started, because just executed'); return; } // Remember the last run procs[id].lastStart = (new Date()).getTime();
Wie oft startest du Adapter (cron)?
-
Alle 5 Minuten
Gruß
Rainer
-
Dann ist mir noch aufgefallen, dass beim Anlegen der Tankstellen 0-9 nur die 0 als Channel angelegt wird, siehe Grafik:
filename="tankerkoenig.jpg" index="0">~~ `
Ist das nicht korrekt? Schließlich liegen innnerhalb der Channels erst die States mit den Werten. Die Channels haben logischerweise keine Werte.Es ist nicht falsch.
Es ist aber auch nicht falsch Channels anzulegen.
Dem CHANNEL kann ich Namen geben, so wie bei der Tankstelle 0 in meinem Screenshot.
Nur die 0 als CHANNEL anzulegen und 1-9 dann nicht, ist zu mindestens nicht einheitlich
Gesendet von iPad mit Tapatalk
-
Hallo pix,
ich habe den schedule von /5*** geändert in 3,13,23,33,43,53****
Seitdem aktualisiert der Adapter die Werte automatisch.
Gruß
Rainer
-
Das müsste sich auch kürzer als "3/10 * * * *" schreiben lassen.
Ich teste das gerade mal.
-
Das müsste sich auch kürzer als "3/10 * * * *" schreiben lassen. `
ich weiß, aber ich wollte genau diese Schreibweise vermeidenWenn es bei dir dann läuft, liegt es entweder an der runden "5 Minuten ab der ganzen Stunde", an denen alle aktualisieren, oder an den 5 Minuten Abstand.
Gruß
Rainer
-
In einem anderen Thread wurde ein Zufallsgenerator vorgeschlagen. Das schau ich mir nochmal an.
Gesendet mit Tapatalk
-
Was für diesen Punkt sprechen könnte, wäre, dass es bis zur Version 0.0.2 noch funktionierte.
BTW auf Github ist die 0.0.4 noch nicht in der Versionshistorie drn.
Gruß
Rainer
-
Hallo,
ich habe heute etwas Zeit gefunden, den Adapter weiterzuentwickeln. Es gibt aber noch keine neue Version.
Die fehlenden Channels habe ich eingefügt. Der Fehler kam zustande, weil ich nur für die erste Tankstelle explizit eine Channel "station.0" angelegt hatte und für die weiteren Tankstellen nicht. Nachdem aber andere Channels und States zB mit dem Pfad "station.1.e5" angelegt wurden, erscheint nun "station.1" nicht als channel. Lange Rede … es muss vor dem Update (das es ja noch nicht gibt) vor dem Update die Instanz gelöscht werden, damit die Channels korrekt angelegt werden können.
Da komme ich gleich zum nächsten Datenpunkt. Es gab den Wunsch, einen Datenpunkt mir der Aktualisierungszeit zu erstellen. Ich habe mich jetzt wieder dagegen entschieden. Die Aktualisierungszeit wird von Tankerkönig in diesem Feed nicht geliefert. Die Zeit würde nur wiedergeben, wann der Adapter bei tankerkoenig.de was abeholt hat. Er gibt keinen Hinweis auf die tatsächliche Zeit der Aktualisierung der Daten bei tankerkoenig.de. Wer dennoch für VIS einen solche Anzeige möchte, kann das Timestmp Widget auf den Datenpunkt JSON (oder zB jeden "Preis-Datenpunkt") nutzen.
Beispiel:
[{"tpl":"tplValueTimestamp","data":{"oid":"tankerkoenig.0.json","visibility-cond":"==","visibility-val":1,"gestures-offsetX":0,"gestures-offsetY":0,"format_date":"DD.MM.YYYY hh:mm:ss","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_prepend":"Adapter-Aktualisierung: ","html_append":" Uhr","name":"Adapter Timestamp"},"style":{"left":"35px","top":"1209px","z-index":"22","color":"rgba(250,250,250,1)","font-size":"12px","width":"239px","height":"50px"},"widgetSet":"basic"}]
Die immernoch schleppende Aktualisierung habe ich noch nicht korrigieren können. Die Zufallszeit ist noch nicht umgesetzt.
Bis bald
Pix
-
Jetzt gibt es doch ein Update über Github :lol: 0.0.5 (bitte alten Adapter vorher löschen).
-
Noch ein kleines Update auf 0.0.6
Die Datenpunkte short sind nun ein String, damit Preise wie 1.20 oder 1.10 mit nachfolgender Null korrekt dargestellt werden (und nicht als 1.2 oder 1.1). History oder SQL-History sollte auf die Datenpunkte feed eingestellt sein (für Diagramme).
Es ist leider wieder das Löschen und Neuanlegen der Instanz nötig, da die Datenpunkte sonst nicht korrekt geschrieben werden.
Gruß
Pix
-
Nächstes Update (etwas größer): 0.0.7 8-)
Jetzt werden zusätzlich unter den eingestellten Tankstellen jeweils die bis zu drei billigsten Tankstellen für E5, E10 und Diesel gefunden und ausgegeben. Also die billigste Dieseltankstelle, die billigste E10-Station und die billigste E5-Tanke. Das sind selten drei verschiedene Tankstellen. Dafür gibt es jetzt den Channel "cheapest" mit den Unterkanälen E5, E10 und Diesel.
War etwas aufwendiger, da die Einträge in den Settings nicht zwangsläufig bei Feld 1 starten, es können ja Zeilen leer gelassen werden.
Gruß
Pix
-
Kleine Update 0.0.8
Adapter Stop korrigiert. Jetzt sollte der Adapter nicht nur anzeigen, dass er Daten schriebt, sondern es auch tun :lol: :lol:
Langsam ist er fertig. Fällt noch jemandem was ein? Sonst kommt Version 0.1 und ich kann ihn auf npm stellen.
Gruß
Pix
-
Hallo Pix,
Ich habe heute eine Mail von Tankerkönig bekommen
Hallo, mit Deinem API-Key werden regelmäßig per detail.php Updates zu ca. 10 Tankstellen geholt. Da dieses Skript relativ aufwändig ist sollte der Einsatz vermieden werden, wenn nur Preise geholt werden. Im Log sehe ich, dass bereits auch das dafür vorgesehene prices.phh-Skript verwendet wird. Möglicherweise ist der Aufruf von detail.php ja ein Bug auf deiner Seite.
Kannst du damit eventuell was anfangen?
Gruß
Silvio
-
Hallo Silvio,
hast du außer dem Adapter auch noch das Takerkönig-Skript oder den node-red Flow laufen?
Dann deaktiviere diese oder andere "alte" Tankerkönig-Abfragen bitte und nutze nur noch den Adapter.
Gruß
Rainer