Spritpreismonitor und Tankalarm – Spritpreise der Umgebung per FHEM überwachen

Jeder Autofahrer unter euch hatte bestimmt schonmal das Problem, nicht zu wissen, ob es sich nun lohnt tanken zu fahren oder nicht. Zwar gibt es schon einige Online-Portale oder Apps, die einen über den aktuellen Benzinpreis informieren.

Aber wäre es nicht entspannter, einfach nur einen Blick auf das Tablet im Flur werfen zu müssen und direkt die Benzinpreise der Tankstellen in der Umgebung ablesen zu können? Oder bei einem niedrigen Preisniveau eine Art „Tankalarm“ auf das Handy zu bekommen? Ich finde schon, deswegen werde ich euch in diesem Beitrag erklären, wie ihr die Preise der umliegenden Tankstellen in FHEM einbindet und übersichtlich darstellt. Des Weiteren zeige ich euch, wie ihr euch einen eigenen Tankalarm definiert und die Preise ansprechend in TabletUI anzeigen könnt.

Vorbereitung

Die Einbindung erfolgt über das Hilfsmodul HTTPMOD. Mit Hilfe dieses Moduls lassen sich Daten aus dem Internet abfragen und für FHEM in Readings umwandeln. Die benötigten Benzinpreise werden davon vom Portal www.clever-tanken.de abgerufen.

Damit man auch die richtigen Daten bekommt, ist es notwendig, sich die ID der gewünschten Tankstelle herauszusuchen. Dazu einfach das Portal besuchen und über das Suchfeld die gewünschte Tankstelle heraussuchen. In der URL findet ihr nun die Tankstellen-ID:

http://www.clever-tanken.de/tankstelle_details/11133

In diesem Fall ist die Tankstellen-ID 11133. Wollt ihr mehrere Tankstellen in FHEM einbinde, dann sucht euch nun alle benötigten IDs raus.

Definition in FHEM

Wie oben schon erwähnt, erfolgt die Definition über das Hilfsmodul HTTPMOD. Benötigt wird dazu die Tankstellen-ID bzw. die URL.

define TankstelleOWM HTTPMOD http://www.clever-tanken.de/tankstelle_details/11133 600

Das definierte Hilfsmodul HTTPMOP liefert jedoch zunächst keine Daten. Damit man nun die gewünschten Werte erhält, sind einige Attribute notwendig. Um genau zu sein, definiert man sich nun durch das Attribut „userReadings“ die Readings selbst.

attr TankstelleOWM group Benzinpreis;attr TankstelleOWM icon gasoline;
attr TankstelleOWM alias OWM;
attr TankstelleOWM room Spritpreise;
attr TankstelleOWM readingsName_Diesel Diesel;
attr TankstelleOWM readingsName_SuperE5 SuperE5;
attr TankstelleOWM readingsRegex_Diesel <span>Diesel</span>[^0-9]+([0-9.]+);
attr TankstelleOWM readingsRegex_SuperE5 <span>Super E5</span>[^0-9]+([0-9.]+);
attr TankstelleOWM timeout 5;

Sollte die Tankstelle noch weitere Kraftstoffe anbieten, so lassen sich diese ebenfalls durch ein userReading hinzufügen. INFO: Es lassen sich mit diesem Vorgehen nur Kraftstoffe hinzufügen, welche mit <span> bzw. </span> arbeiten. Gekennzeichnet mit MTS unter dem Kraftstoffnamen.

attr TankstelleOWM readingsName_SuperE10 SuperE10 attr TankstelleOWM readingsRegex_SuperE10 <span>Super E10</span>[^0-9]+([0-9.]+)

Nicht-MTS-Kraftstoffarten (wie zum Beispiel Total Excellium Diesel) sind mit <div> abgeschlossen. Dies erfordert eine andere Definition des Reading-Attributs.

attr TankstelleWB readingsName__Total_Excellium_Diesel _Total Excellium Diesel;
attr TankstelleWB readingRegex_Total_Excellium_Diesel <span>Total Excellium Diesel</div>[^0-9]+([0-9.]+)

Je nach Wunsch kann dann noch das stateFormat angepasst werden:

attr TankstelleOWM stateFormat {sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",ReadingsVal("TankstelleOWM","Diesel",0),ReadingsVal("TankstelleOWM","SuperE5",0),ReadingsVal("TankstelleOWM","SuperE10",0))}

Da die oben aufgezählten Anweisungen noch auf eine alte Version des HTTPMOD-Moduls basieren, ist das Umstellen auf die neue Struktur notwendig. Dies geschieht über das Setzen eines Attributes und das anschließende updaten der Readings:

attr TankstelleOWM enableControlSet 1 set TankstelleOWM upgradeAttributes

Nun sollten die Spritpreise als Reading angezeigt werden.

Zum Schluss dann noch das stateFormat anpassen, damit in der Device-Übersicht die Preise direkt abgelesen werden können. Hier könnt ihr natürlich auch nur den von euch getankten Kraftstoff anzeigen lassen. Folgendes Attribut zeigt den Literpreis aller drei definierten Kraftstoffe an:

attr TankstelleOWM stateFormat {sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",ReadingsVal("TankstelleOWM","Diesel",0),ReadingsVal("TankstelleOWM","SuperE5",0),ReadingsVal("TankstelleOWM","SuperE10",0))}

Um den Spritpreis vergleichen zu können, ist es natürlich sinnvoll sich mehrere Tankstellen aus der Umgebung zu definieren. Ich habe mir insgesamt vier Tankstellen in FHEM eingerichtet.

Einrichtung einer readingsGroup

Mit Hilfe einer readingsGroup lassen sich die Spritpreise noch ein bisschen komfortabler anzeigen. Dazu definieren wir uns eine readingsGroup mit vier Spalten – den Namen und je eine Spalte für Diesel, Super und E10.

define GroupSpritpreise readingsGroup <Tankstelle>,<Diesel>,<Super>,<E10> TankstelleOWM:Diesel,SuperE5,SuperE10 TankstelleREAL:Diesel,SuperE5,SuperE10 TankstelleESSO:Diesel,SuperE5,SuperE10 TankstelleARAL:Diesel,SuperE5,SuperE10;
attr GroupSpritpreise room Spritpreise

Anschließend kann man sich daran machen, diese readingsGroup etwas visuell aufzupeppen.

attr GroupSpritpreise valueFormat {"%.2f €"} attr GroupSpritpreise style style="font-size:18px"

Wer möchte kann dann noch über das Attribut „alias“ die Überschrift der readingsGroup anpassen.

attr GroupSpritpreise alias Spritpreise

Statistik über die Spritpreise

Das Anzeigen der Spritpreise ist alleine gesehen schon eine coole Sache, aber interessant wird es erst, wenn man sich zusätzlich eine Art Tankalarm definiert.

Die Idee ist, dass man die Spritpreise über einen längeren Zeitpunkt beobachtet und bei einem Preisniveau unter den Durchschnittswerten sich eine Nachricht auf das Hnady zukommen lässt.

define SpritpreiseStatistik statistics Tankstelle.*;
attr SpritpreiseStatistik minAvgMaxReadings Diesel,SuperE5,SuperE10

Absofort werden für die Readings Diesel, SuperE5 und SuperE10 der Minimal-, Maximal- und der Durchschnittswert von unterschiedlichen Zeiträumen ermittelt. Zur Verfügung steht ein Stunden-, Tages-, Monats- und Jahreszeitraum.


Diese Readings machen wir uns zu Nutzen und ermitteln daraus, ob es sich aktuell lohnt, tanken zu fahren. Damit wir jedoch mit diesen Readings arbeiten können, erstellen wir uns aus den Min-, Max- und Avg-Werten einzelne Readgings.

attr SpritpreiseStatistik singularReadings Tankstelle.*:.*:(Min|Avg|Max):(Hour|Day|Month)

Absofort erhält man nun einzelne Readings für die ermittelten statistischen Werte. Nach einer gewissen Zeit beinhalten diese auch sinnvolle Werte. Die Monats-Werte brauchen natürlich etwas länger um sinnvolle Werte liefern zu können.

Tankalarm

INFO: Ich habe mit der Version 2.0 einen verbesserten Spritalarm erstellt, der mehr Einstellmöglichkeiten bietet –> Spritmonitor 2.0

Mit den oben erstellen statistischen Werte kann man sich nun einen eigenen Tankalarm definieren. Ich habe mir dazu ein kleine SubRoutine erstellt und rufe sie mit Hilfe eines Notifys auf.

Für die SzbRoutine werden folgende statistische Readings benötigt:

Mit diesen drei Readings habe ich mir einen kleinen „Abfragemarathon“ erstellt um herauszufinden, ob es momentan sinvoll ist zu tanken. Dabei habe ich den aktuellen Spritpreis genommen und mit den Stunden-, Tages- und Monatsdurchschnittswerten verglichen. Um das Ergebnis dieser Abfrage zu bewerten, habe ich mir ein Bewertungssystem überlegt.

Im Grunde baut das Bewertungsystem auf eine unterschiedliche Bewertung der Durchschnittswerte auf. Ein aktueller Preis kleiner als der Stundendurchschnittswert ist nicht so viel wert, wie das Unterschreiten des Tagesdurchschnittswertes. Ein Unterschreiten des Monatsdurchschnittswertes ist dabei natürlich noch besser. Weiter besser wird es entsprechend bei einer Kombination.

Natürlich lässt sich auch ein anderes Bewertungssystem aufbauen. Des Weiteren lassen sich auch die Max- und Minwerte anstelle der Durchschnittswerte nehmen. Wer also ein anderes Bewertungssystem bevorzugt, kann dieses mir gerne in den Kommentaren wissen lassen. Ich bin für jede Möglichkeit offen.

Die dazu benötigte SubRoutine wird einfach in die „99_myUtils.pm“ eingetragen. Achtet beim Erstellen der Datei, dass sie in der richtigen Formatierung angelegt wird. Benötigt wird eine Datei im UTF-8 Format. Andernfalls gibt es Darstellungsfehler bei den Sternen und dem Euro-Zeichen.

sub Tankalarm($$) {
# Variablen definierenmy
($Tankstelle, $Kraftstoff) = @_;
my $ALIAS = AttrVal($Tankstelle,"alias",$Tankstelle);
my $aktuell = ReadingsVal("$Tankstelle","$Kraftstoff",0);
my $alt = ReadingsVal("$Tankstelle","Backup",0);
my $stunde = "stat".$Kraftstoff."HourAvg";
my $tag = "stat".$Kraftstoff."DayAvg";
my $monat = "stat".$Kraftstoff."MonthAvg";
my $hourAVG = ReadingsVal("$Tankstelle","$stunde",0);
my $dayAVG = ReadingsVal("$Tankstelle","$tag",0);
my $monthAVG = ReadingsVal("$Tankstelle","$monat",0);
my $msg = 0;
if($aktuell != $alt){
if($aktuell < $hourAVG){
if($aktuell < $dayAVG){
if($aktuell < $monthAVG){
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €), Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else {
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Tagesdurchschnitt ($dayAVG €)";}}
else{if($aktuell < $monthAVG){
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else {
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stundendurchschnitt ($hourAVG €)";}}}
else {
if($aktuell < $dayAVG){if($aktuell < $monthAVG){$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else {
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tagesdurchschnitt ($dayAVG €)";}}
else {
if($aktuell < $monthAVG){$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Monatsdurchschnitt ($monthAVG €)";}else {
$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Kraftstoff aktuell sehr teuer";}}}}else{$msg = "keineAenderung";}fhem("setreading $Tankstelle Backup $aktuell");
return $msg;}

Der SubRoutine wird das Tankstellen-Device ($Tankstelle) und der zu überwachende Kraftstoff ($Kraftstoff) übergeben. Anschließend werden einige Variablen definiert. Zum Einen die Variablen „stunde,tag,monat“ erhalten den Namen der benötigten Readings. Zum Anderen die Variablen „hourAVG,dayAVG,monthAVG“, welche die benötigten Readings beinhalten – z.B. für SuperE10: statSuperE10HourAVG, statSuperE10DayAVG, statSuperE10MonthAVG.

Zuerst wird nun überprüft, ob der aktuelle Kraftstoffpreis unterschiedlich zum vorherigen Preis ($alt) ist. Ist dies der Fall, wird in den darauf folgenden if-Abfragen die Variable „msg“ mit der entsprechenden Nachricht beschrieben.

Liegt keine Preisänderung vor, so wird die Nachricht auf „keineAenderung“ gesetzt.

Zum Schluss wird dann noch der aktueller Preis als Backup in das entsprechende Tankstellen-Device geschrieben und die Nachricht als Rückgabewert zurückgegeben.

Das Aufrufen der SubRoutine erfolgt nun über ein Notify, welches bei einer Preisänderung auslöst.

define SpritkostenNotify notify Tankstelle.*:SuperE10:.* {my $Nachricht = Tankalarm("$NAME","SuperE10");if($Nachricht ne "keineAenderung"){fhem("set Telegram message $Nachricht");}}

Dieses Notify löst jetzt bei einer Preisänderung des Kraftstoffes „SuperE10“ aus. Überwacht werden dabei alle Tankstellen-Devices (Tankstelle.*). Der überwachte Kraftstoff kann natürlich je nach Wunsch angepasst werden.

Beim Auslösen wird dann die SubRoutine aufgerufen und die Variable „Nachricht“ mit der entsprechenden Nachricht beschrieben. Liegt eine Tankempfehlung vor, so wird über Telegram der Tankalarm gesendet. Hier lassen sich natürlich auch andere Kommunikationswege einsetzen. Bei der oben beschriebenen Definition des Notify-Devices muss dem Telegram-Device die Empfänger-ID mitgeteilt werden:

attr Telegram defaultPeer 24xxxxxxx

Wurde alles definiert, erhält man absofort eine Nachricht über Telegram, ob es sich aktuell lohnt, tanken zu fahren. Es kann ein paar Tagen dauern bis die Durchschnittswerte aussagekräftig werden. Erst recht die Monatsdurchschnittswerte brauchen ein paar Tage bis sich ein aussagekräftiger Wert gebildet hat.

Der eingerichtete Tankalarm kann natürlich auch getestet werden. Dazu einfach über „setreading“ den Preis für SuperE10 manuell auf einen niedrigen Wert festlegen.

setreading TankstelleESSO SuperE10 1.10

Da der Literpreis von 1.10 höchstwahrscheinlich alle Durchschnittswerte unterbietet, solltet ihr nun eine 5-Sterne-Tankempfehlung auf euer Handy bekommen. Beim nächsten Aktualisieren der Spritpreise wird der manuell gesetzte Wert wieder durch den richtigen Wert überschrieben. Wer möchte, kann die Aktualisierung auch manuell starten:

set TankstelleESSO reread

Manuelles Abfragen der Preissituation

Neben dem automatischen Tankalarm, kann man sich eine kleine SubRoutine schreiben, um auch ein manuelles Abfragen der Preissituation über Telegram zu ermöglichen. Dazu einfach in der „99_myUtils.pm“ eine weitere SubRoutine erstellen.

sub Telegram($$) {
my ($Device, $msgText) = @_;
my $Nachricht = ReadingsVal($Device,$msgText,"0");
my @array = split(/ /,$Nachricht);if(@array[0] eq "Spritkosten"){
my $Device = "Tankstelle".@array[1];
my $aktuell = ReadingsVal("$Device","@array[2]",0);
fhem("set Telegram message Aktueller Preis für @array[2] an der @array[1]-Tankstelle: $aktuell €");}}

Damit die erstellte SubRoutine auch die empfangene Nachricht erhält, ist das Definieren eines weiteren Notifys nötig:

define TelegramNotify notify Telegram:msgText:.* { Telegram("Telegram","msgText")}

Der SubRoutine „Telegram“ wird nun beim Empfangen einer Nachricht der Inhalt dieser übergeben. Innerhalb der Routine wird der empfangende Nachrichtenstring aufgeteilt und in ein Array abgespeichert. Das erste Wort beinhaltet das Steuerungswort „Spritkosten“. Das zweite Wort dann die gewünschte Tankstelle und das dritte den gewünschten Kraftstoff. So lassen sich zum Beispiel durch senden der Nachricht „Spritkosten ESSO SuperE10 der entsprechende Preis ausgeben.

Nachrichten nur zu bestimmten Zeiten

Wem die vielen Nachrichten etwas nerven, bzw. nur welche zu bestimmten Zeitpunkten haben möchte, der kann natürlich das Notify nur zu bestimmten Zeitpunkten aktivieren. Dazu kann man sehr gut den WeekdayTimer verwenden, mehr dazu auf meinem Blogbeitrag zum Modul.?

define TimerSprit WeekdayTimer SpritkostenNotify Mo-Fr|16:00|active Mo-Fr|19:00|inactiv

Jetzt wird das Notify, welches für das Versenden der Nachrichten verantwortlich ist, nur von Montag bis Freitag zwischen 16 und 19 Uhr aktiviert. Außerhalb dieser Zeiträume ist es deaktiviert und versendet somit keine Nachrichten.

Spritmonitor in TabletUI einbinden

Neben der readingsGroup und dem Tankalarm lässt der Spritmonitor auch im alternativen FrontEnd TabletUI einbinden.
Der Aufbau ist im Grunde nichts anderes als eine Tabelle. Ähnlich wie ich sie bereits im Abfahrtsmonitor verwende. Den benötigten Code könnt ihr auf meinem Blog-Beitrag über mein TabletUI nachlesen.

Ich hoffe ich konnte euch das Einrichten eines Tankalarms verständlich erklären und euch inspirieren diesen selber umzusetzen. Wie oben schon erwähnt, solltet ihr für das Bewertungssystem eine bessere Idee haben, so lasst sie mir diese gerne über die Kommentare zukommen.

0 0 vote
Article Rating
Abonnieren
Benachrichtige mich bei
guest
52 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
Peter Gottschalk
Peter Gottschalk
3 Jahre zuvor

Hallo Daniel
Wenn man noch wissen möchte wann die letzte Preisänderung war.
attr TankstelleOWM readingsName_aktZeit  aktZeit
attr TankstelleOWM readingsRegex_aktZeit Letzte MTS-K Preisänderung: ((31|30|[012]\d|\d)\.(0\d|1[012]|\d)\.(\d{1,6}) ([01]?\d|2[0-3]):([0-5]?\d))
vielleicht für einige interesant.
 
Gruß Peter

GordonShumway
GordonShumway
3 Jahre zuvor

Hey Daniel,
hab deine Anleitung nachgebaut. Danke erstmal.
 
Dabei sind mir zwei kleine Fehler aufgefallen:
Bei define SpritkostenNotify
fehlt einmal das Wort notify und
bei attr SpritpreiseStatistik minAvgMaxReadings Diesen,SuperE5,SuperE10
sollte es wohl Diesel und nicht Diesen heißen
Gruß
Gordon

GordonShumway
GordonShumway
3 Jahre zuvor
Reply to  GordonShumway

Einen hab ich noch gefunden:
Das define
define SpritkostenNotify Tankstelle.*:SuperE10:.* {
my $Nachricht = Tankalarm("$NAME","SuperE10");
if($Nachricht ne "keineAenderung"){
fhem("set Telegram message $Nachricht");}
}

braucht am Ende noch eine geschweifte Klammer mehr.

GordonShumway
GordonShumway
3 Jahre zuvor
Reply to  Daniel

Stimmt da hab ich mich verguckt…

Tobikus
Tobikus
3 Jahre zuvor

Hallo Daniel,
Erstmal großes Lob für die super Beschreibungen!!! Danke dafür. Nun zu meinem Problem. Habe eigentlich soweit alles wie von dir beschrieben angelegt. Bis auf Telegram. Hier heisst mein Device teleBot.
Preise werden geholt und richtig angezeigt. Soweit alles fein. Bis auf die Benachrichtigung via Telegram. Hier tut sich leider nichts. Im EventViewer sehe ich das die „Anfrage“ nach einem Spritpreis eingeht. Aber anscheinend laufen die SubRoutinen nicht richtig. Vielleicht hast Du einen Tipp oder eine Idee. Hier meine beiden Routinen. Wie gesagt, angepasst auf teleBot:
sub Tankalarm2($$) {
my ($Tankstelle, $Kraftstoff) = @_;
my $ALIAS = AttrVal($Tankstelle,"alias",$Tankstelle);
my $aktuell = ReadingsVal("$Tankstelle","$Kraftstoff",0);
my $alt = ReadingsVal("$Tankstelle","Backup",0);
my $stunde = "stat".$Kraftstoff."statSuperE5HourAvg";
my $tag = "stat".$Kraftstoff."statSuperE5DayAvg";
my $monat = "stat".$Kraftstoff."statSuperE5MonthAvg";
my $hourAVG = ReadingsVal("$Tankstelle","$statSuperE5Hour",0);
my $dayAVG = ReadingsVal("$Tankstelle","$statSuperE5Day",0);
my $monthAVG = ReadingsVal("$Tankstelle","$statSuperE5Month",0);my $msg = 0;
... GEKÜRZT ... (gez. Daniel)

Tobikus
Tobikus
3 Jahre zuvor

DANKE DIR VORAB! Bin hier etwas am verzweifeln.

Tobikus
Tobikus
3 Jahre zuvor

Hallo Daniel,
Danke für die schnelle Antwort. Die Gänsefüßchen sind richtig. Das scheint im Kommentarfeld falsch formatiert zu sein. Wenn ich die Subrountine teste, bekomme ich folgende Meldung:
Undefined subroutine &main::Tankalarm called at (eval 24818) line 1.
Also scheint hier wohl schonmal was falsch zu sein. Sorry, aber ich bin noch Anfänger und kenne mich da noch nicht so aus.
LG
Tobias

Tobikus
Tobikus
3 Jahre zuvor

Hallo Daniel. Vielen DANK für deine Unterstützung!! Ich hatte alles genauso wie von dir beschrieben angelegt, inkl. der Subroutine! Als es dann gestern nicht funktionniert hat und ich auf Fehlersuche war, habe ich erst die Subroutine geändert. Nachdem ich wieder den Ursprung hergestellt habe ging es nach wie vor nicht. Aber manchmal ist ein alter Spruch doch war: REBOOT TUT GUT!!!……
Nachdem ich mal auf Verdacht shutdown restart gemacht habe, gingen auf einmal die Telegram Nachrichten ein. Sie kommen zwar jetzt wenn ich manuell Abfrage 2x bei mir an, aber das werd ich schon irgendwie rausbekommen. Wenn nicht ist auch nicht schlimm. Kann ich mit leben.
Also VIELEN DANK nochmal für Deine Unterstützung!
VG Tobias

Alex
Alex
3 Jahre zuvor

Hallo Daniel,
danke erst mal für die gute Anleitung. Wollte nun auch Autogas einbinden.
wie wäre der Regex für Autogas?
z.B. bei folgender Tankstelle:
http://www.clever-tanken.de/tankstelle_details/35621
über diese Syntax wird es nicht erkannt: Autogas[^0-9]+([0-9.]+)
Danke
Gruß
Alex

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor

Hallo Daniel.
Vielen herzlichen Dank für die SUPER gemachte Anleitung. Es hat alles auf Anhieb funktioniert ( habs nur bis zum Punkt „Statistik über die Spritpreise“ gemacht).
Ich bitte um Entschuldigung für folgende Fragen. Da ich erst vor kurzem mit FHEM angefangen habe, bin ich noch ein blutiger Anfänger und habe keine Erfahrung.
Was mir aufgefallen ist beim Punkt „Einrichten einer readingsGroup“:
1) define GroupSpritpreise…….
Bei mir steht über der Tabelle „GroupSpritpreise“, bei Dir auf dem Bild steht „Spritpreise“.
Sollte es dann nicht „define Spritpreise…..“ heißen ?
Oder macht man das über ALIAS ?
Da ich keinen Vermerk gefunden habe, bin ich hilf- und ratlos.
2) In der unter Punkt 1 besagten Tabelle, sind die Abstände zu den einzelnen Preisen größer als bei mir. Bei mir sieht es gequetscht aus. Wie kann ich den Abstand zwischen den Preisen vergrößern ?
Auch eine Idee ist mir gekommen, nur haperts mit der Umsetzung, falls das möglich ist.
Es ist schon super, das man 3, 4, 5, oder mehr Tankstellen auf einen Blick hat, allerdings ist es braucht es etwas, bis man die zur Zeit günstigste Tankstelle gefunden hat.
Wäre es irgendwie möglich, das die aktuellen Preise untereinander verglichen werden und der günstigste Grün und Fett angezeigt wird ? Somit würde man auf einen Blick die billigste Tankstelle sehen. Und wenn mehrere Tankstellen den gleichen Preis haben, werden auch diese Grün und Fett angezeigt. Dadurch könnte man dann die nehmen, wo eh auf dem Weg liegt.
Ist nur eine Idee, ob dies aber machbar ist, weiß ich leider nicht.
Im voraus vielen herzlichen Dank für eventuelle Antworten.
Gruß,
Friedhelm.

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor
Reply to  Daniel

Hallo Daniel.
Vielen Dank für die schnelle Antwort.
Schön das Dir die Idee gefällt, mußt sie aber nicht sofort umsetzen. Ich bin schon froh, das diese Erweiterung in Erwägung gezogen wird.
Auch Dir, und Euch anderen, ein schönes Wochenende.
Gruß,
Friedhelm.

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor
Reply to  Daniel

Hallo Daniel.
Den Beitrag hab ich erst auf den zweiten Blick gefunden und habs gleich ausprobiert.
Ich muß sagen: PERFEKT !!! SUPER !!! DANKE !!!
Genau das was ich wollte. Jetzt sieht man auf einen Blick, welche Tankstelle die günstigste ist.
Ich persönlich bin mit dem Ergebnis sehr zufrieden. Ich bin mal gespannt was passiert, wenn zwei Tankstellen denselben Preis haben.
Nochmals vielen Dank für die Lösung.
Gruß,
Friedhelm.

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor
Reply to  Friedhelm Rech

Hallo Daniel.
Wenn alle Tankstellen den gleichen billigen Preis haben, werden sie alle grün.
PERFEKT !!!
Da muß man nix mehr verändern.
Gruß,
Friedhelm.

GordonShumway
GordonShumway
3 Jahre zuvor
Reply to  Daniel

Hallo Daniel,
hier die abgewandelte Routine:
sub lowestprice($)
{
my ($Kraftstoff) = @_;
my @Tankstellen = devspec2array("NAME=Tankstelle.*");
my @Kraftstoffpreise = ();
foreach(@Tankstellen){
my $Kraftstoffpreis = ReadingsVal("$_",$Kraftstoff,0);
push (@Kraftstoffpreise,$Kraftstoffpreis);
}
my $minKraftstoffpreis = (sort @Kraftstoffpreise)[0];
return $minKraftstoffpreis;
}

Dann ist auch das attr GroupSpritpreise valueStyle anzupassen
attr GroupSpritpreise valueStyle { if($READING eq "SuperE5" && $VALUE eq lowestprice("SuperE5")) { 'style="color:green"' }elsif($READING eq "SuperE10" && $VALUE eq lowestprice("SuperE10")) { 'style="color:green"' }elsif($READING eq "Diesel" && $VALUE eq lowestprice("Diesel")) { 'style="color:green"' } }
Gruß
Gordon

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor

Hallo Daniel.
Wer beim Benzinpreis die obligatorische „9“ am Schluß haben möchte, muß folgendes ändern:
attr TankstelleOWM stateFormat {
sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",
ReadingsVal("TankstelleOWM","Diesel",0),
ReadingsVal("TankstelleOWM","SuperE5",0),
ReadingsVal("TankstelleOWM","SuperE10",0))}

in
attr TankstelleOWM stateFormat {
sprintf("Diesel: %.2f9 € - Super: %.2f9 € - E10: %.2f9 €",
ReadingsVal("TankstelleOWM","Diesel",0),
ReadingsVal("TankstelleOWM","SuperE5",0),
ReadingsVal("TankstelleOWM","SuperE10",0))}

Statt 1.10 € wird dann 1.109 € angezeigt.
Auch bei der readingsGroup muss folgendes geändert werden:
attr GroupSpritpreise valueFormat {"%.2f €"}
in
attr GroupSpritpreise valueFormat {"%.2f9 €"}
Auch hier wird statt 1.10 € dann 1.109 € angezeigt.
Gruß,
Friedhelm.

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor

Hallo an Alle.
Eine Frage hätte ich noch. Mit der „Statistik über die Spritpreise“ habe ich zwar bei jeder Tankstelle die Readings „stat…“, also Min, Max, Durchschnitt Tag, Monat und Jahr, aber eben nur unter der jeweiligen Tankstelle.
Wie kann ich eine gezielte Auflistung erstellen, das ich nur bestimmte „stats“ untereinander angezeigt bekomme ?
So zum Beispiel:
Tankstelle A statDieselDay Min: 1.10 Avg: 1.13 Max: 1.21
Tankstelle A statDieselMonth Min: 1.10 Avg: 1.13 Max: 1.21
Tankstelle A statDieselYear Min: 1.10 Avg: 1.13 Max: 1.21
Tankstelle A statSuperE5Day Min: 1.27 Avg: 1.30 Max: 1.39
Tankstelle A statSuperE5Month Min: 1.27 Avg: 1.30 Max: 1.39
Tankstelle A statSuperE5Year Min: 1.27 Avg: 1.30 Max: 1.39
weiter dann mit Tankstelle B, C usw..
Ich war der Meinung, das dies automatisch geht über / mit
attr SpritpreiseStatistik singularReadings
Tankstelle.*:.*:(Min|Avg|Max):(Hour|Day|Month)
ist aber bei mir nicht so.
Ich bin über jede Hilfe dankbar. Nach tagelangen herum probieren bin ich am Ende meiner Möglichkeiten.
Im voraus vielen Dank.
Gruß,
Friedhelm.

Friedhelm Rech
Friedhelm Rech
3 Jahre zuvor
Reply to  Daniel

Hallo Daniel.
Vielen Dank für die Hilfe bzw. Info.
Gruß,
Friedhelm.

Jens
Jens
3 Jahre zuvor
Reply to  Friedhelm Rech

Hallo, erstmal vielen Dan k für die vielen schönen Ideen und Anleitungen.
Ich habe leider ein Problem beim „SpritkostenNotify“.
Das manuelle Aufrufen klappt.
Beim Anlegen des notify habe ich schon einige „Schreibweisen“ versucht.
So kommt z.B. die Fehlermeldung: Unknown module Tankstelle.*:SuperE10:.*
Eigentlich habe ich mich komplett an der Anleitung orientiert. ;-(

Jens
Jens
3 Jahre zuvor
Reply to  Jens

Danke für die schnelle Hilfe!
Hab glatt das „notify“ vergessen 😉

Sebastian
Sebastian
3 Jahre zuvor

Hallo Daniel,
vielen Dank für das tolle HowTo, das hat alles wunderbar funktioniert, jetzt bin ich allerdings noch Anfänger was FHEM angeht, vllt. deshalb meine Frage:
Gibt es die Möglichkeit, das Skript nur zu bestimmten Zeiten ausführen zu lassen? z.B. in der Woche von 16:00 – 19:00 Uhr? (Tanke meist nach Feierabend)
Gibt es alternativ die Möglichkeit, KEINE Benachrichtigung über eine Verschlechterung des Spritpreises zu bekommen? Wenn das Benzin in der Woche Spät Abends oder früh Morgens deutlich teurer wird, benötige ich idR keine Info.
Vielen Dank für deine Hilfe
viele Grüße
Sebastian

Sebastian
Sebastian
3 Jahre zuvor
Reply to  Daniel

Hallo Daniel,
das ist super nett von DIr, dass du dir das anguckst, das mit dem define Timer probiere ich mal aus. Vielen Dank schonmal im Voraus, ich freue mich schon jetzt auf die größere Flexibiltät beim Einstellen der Zeiten und der Alarme.
Ich wünsche dir ein schönes langes Wochenende!
Viele Grüße
Sebastian

Peer
Peer
3 Jahre zuvor

Moin Daniel, super klasse, habe mir die Spamming Funktion (das notify) deaktiviert, weil einfach zuviel Spam, ich muss doch nur einmal alle 2 Wochen tanken, da brauche ich nicht jeden Tag 6 mal alle Statusupdates via Telegram aufm mobile..
Das aber nur am Rande.
Wiedermal die Logeinträge, weiß jmd Rat?
2017.04.26 21:43:36 3: Tankstelle_aral: Defined with URL http://www.clever-tanken.de/tankstelle_details/XXXX(removed here for provacy stuff) and interval 600
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsName_Diesel should no longer be used. Please use reading01Name syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsName_SuperE10 should no longer be used. Please use reading01Name syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsName_SuperE5 should no longer be used. Please use reading01Name syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsRegex_Diesel should no longer be used. Please use reading01Regex syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsRegex_SuperE10 should no longer be used. Please use reading01Regex syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration
2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsRegex_SuperE5 should no longer be used. Please use reading01Regex syntax instead
2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to automatically modify the configuration

Peer
Peer
3 Jahre zuvor
Reply to  Daniel

Jupp, läuft:
Log bestätigt dies mit:
2017.04.26 22:14:04 3: Tankstelle_aral: upgraded attribute name readingsName_Diesel to new sytax reading01Name
2017.04.26 22:14:05 3: Tankstelle_aral: upgraded attribute name readingsName_SuperE10 to new sytax reading02Name
2017.04.26 22:14:06 3: Tankstelle_aral: upgraded attribute name readingsName_SuperE5 to new sytax reading03Name
2017.04.26 22:14:06 3: Tankstelle_aral: upgraded attribute name readingsRegex_SuperE5 to new sytax reading03Regex
2017.04.26 22:14:06 3: Tankstelle_aral: upgraded attribute name readingsRegex_SuperE10 to new sytax reading02Regex
2017.04.26 22:14:07 3: Tankstelle_aral: upgraded attribute name readingsRegex_Diesel to new sytax reading01Regex
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsName_Diesel from userattr list
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsName_SuperE10 from userattr list
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsName_SuperE5 from userattr list
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsRegex_Diesel from userattr list
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsRegex_SuperE10 from userattr list
2017.04.26 22:14:07 3: Tankstelle_aral: dropping readingsRegex_SuperE5 from userattr list

Zum Spam:
Ich habe mir das so gelöst (99_utils.pm)
sub Tankalarm($$$) {
# Variablen definieren
my ($Tankstelle, $Kraftstoff, $forceAnalysis) = @_;
my $ALIAS = AttrVal($Tankstelle,"alias",$Tankstelle);
my $aktuell = ReadingsVal("$Tankstelle","$Kraftstoff",0);
my $alt = ReadingsVal("$Tankstelle","Backup",0);
my $stunde = "stat".$Kraftstoff."HourAvg";
my $tag = "stat".$Kraftstoff."DayAvg";
my $monat = "stat".$Kraftstoff."MonthAvg";
my $hourAVG = ReadingsVal("$Tankstelle","$stunde",0);
my $dayAVG = ReadingsVal("$Tankstelle","$tag",0);
my $monthAVG = ReadingsVal("$Tankstelle","$monat",0);
my $msg = 0;
if($aktuell != $alt || $forceAnalysis == "true")
{
if($aktuell < $hourAVG)
{
if($aktuell < $dayAVG)
{
if($aktuell < $monthAVG)
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €), Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Tagesdurchschnitt ($dayAVG €)";}
}
else
{
if($aktuell < $monthAVG)
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stundendurchschnitt ($hourAVG €)";}
}
}
else
{
if($aktuell < $dayAVG)
{
if($aktuell < $monthAVG)
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";}
else
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tagesdurchschnitt ($dayAVG €)";}
}
else
{
if($aktuell < $monthAVG)
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Monatsdurchschnitt ($monthAVG €)";}
else
{$msg = "$ALIAS: ????? - $Kraftstoff: $aktuell € - Kraftstoff aktuell sehr teuer";}
}
}
}
else
{$msg = "keineAenderung";}
fhem("setreading $Tankstelle Backup $aktuell");
return $msg;
}
sub TelegramAntwort($$) {
my ($Device, $msgText) = @_;
my $Nachricht = ReadingsVal($Device,$msgText,"0");
my @array = split(/ /,$Nachricht);
if(@array[0] eq "Spritkosten")
{
my $Device = "Tankstelle_".@array[1];
my $aktuell = ReadingsVal("$Device","@array[2]",0);
fhem("set teleBot message Aktueller Preis für @array[2] an der @array[1]-Tankstelle: $aktuell €");
}
if(@array[0] eq "Diesel" || @array[0] eq "SuperE5" || @array[0] eq "SuperE10")
{
my $tankstelle1 = "Tankstelle_aral";
my $tankalarm1 = Tankalarm($tankstelle1,@array[0],"true");
my $tankstelle2 = "Tankstelle_aral_otternhagen";
my $tankalarm2 = Tankalarm($tankstelle2,@array[0],"true");
my $tankstelle3 = "Tankstelle_oil";
my $tankalarm3 = Tankalarm($tankstelle3,@array[0],"true");
my $tankstelle4 = "Tankstelle_t";
my $tankalarm4 = Tankalarm($tankstelle4,@array[0],"true");
my $tankstelle5 = "Tankstelle_tamoil_b6";
my $tankalarm5 = Tankalarm($tankstelle5,@array[0],"true");
my $tankstelle6 = "Tankstelle_hem_engelbostel";
my $tankalarm6 = Tankalarm($tankstelle6,@array[0],"true");
fhem("set teleBot message Aktuelle @array[0] Preise:rn$tankalarm1rnrn$tankalarm2rnrn$tankalarm3rnrn$tankalarm4rnrn$tankalarm5rnrn$tankalarm6rnrn");
}
}

Der zugehörige notify für den bot: (alles an die 99_utils, dort die logik)
define teleBotNotify notify teleBot:msgText:.* { TelegramAntwort("teleBot","msgText")}
Ich sende „Diesel“ oder „E10“ an den Telegram Bot (dann, wann ich es brauche) und der Bot antwortet mit den aktuellen Diesel Preisen. Nach dem Prinzip: Ich pulle mir die Infos, wenn ich sie brauche, anstelle von: Fhem pusht immer, wenn es Änderungen gibt. Viel zu viele Infos, die ich eigentlich gar nicht brauche 😉

Sven
Sven
3 Jahre zuvor

Moin Moin
Leider komme ich beim erstellen des notify nicht weiter
ich gebe das oben in der Befehlleiste FHEM ein :
define SpritkostenNotify notify Tankstelle.*:SuperE10:.* { my $Nachricht = Tankalarm(„$NAME“,“SuperE10″); if($Nachricht ne „keineAenderung“){ fhem(„set teleBot message $Nachricht“);} }
und bekomme diese Fehlermeldung:
Missing right curly or square bracket at (eval 31371) line 1, at end of line
syntax error at (eval 31371) line 1, at EOF
Unknown command if($Nachricht, try help.
Unknown command }, try help.
was übersehe ich, wo liegt der fehler?
Vielleicht kannst du mir ja weiterhelfen, oder jemand anderes? 🙂
Gruß
Sven

SVen
SVen
3 Jahre zuvor
Reply to  Daniel

klasse danke das hat funktioniert

Ralf Büttner-Arlt
Ralf Büttner-Arlt
3 Jahre zuvor

Hallo,
ich habe heute den Spritpreismonitor integriert.
Da ich keine Benachrichtigung brauche habe ich auch nur die erste Version übernommen. Jetzt wollte ich mit Hilfe des Statistikmodul die Tendenz auslesen und in der TabletUI mittels Klimatrend anzeigen.
Nur leider werden die Tendenzen nicht als Reading angelegt.

der Gent
der Gent
3 Jahre zuvor

Hallo Daniel,
wie wäre es, anstelle von clevertanken mit httpmod die API von Tankerkönig zu verwenden? Wenn clevertanken mal die Webseite ändert ist hier viel Anpassung nötig. Durch die API von Tankerkönig bekommt man immer eindeutige Readings:
stations_01_brand reading
stations_01_diesel reading
stations_01_dist reading
stations_01_e10 reading
stations_01_e5 reading
stations_01_houseNumber reading
stations_01_id reading
stations_01_isOpen reading
stations_01_lat reading
stations_01_lng reading
stations_01_name reading
stations_01_place reading
stations_01_postCode reading
stations_01_street reading

Über das „isOpen“ bekommt man sogar mit, ob die Tanke gerade geöffnet hat. Nützt ja nix, wenn die billigste Tanke leider gerade zu hat 😉
Viele Grüße vom Gent

Holger
Holger
3 Jahre zuvor

Hallo Daniel,
wo definiere ich denn das SpritkostenNotify am besten? Wenn ich es in der FHEM GUI oben in die Kommandozeile kopiere kommt folgende Fehlermeldung:
Missing right curly or square bracket at (eval 115) line 1, at end of line
syntax error at (eval 115) line 1, at EOF
Unknown command if($Nachricht, try help.
Unknown command }}, try help.

Marcel
Marcel
3 Jahre zuvor

Hallo erstmal. Super sache muss ich sagen! Hab es auch relativ gut hin bekommen. Mit dem Notify hab ich anfangs paar Probleme gehabt, aber nun ist es erstellt. Zu meinem Problem, ich kopiere es mal rein.
Wenn der Spritpreis sich ändert will er eine Meldung per Telegram schicken, gibt mir im Log aber folgendes raus:
2017.12.12 20:36:53 3: SpritkostenNotify return value: TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set
2017.12.12 20:38:16 3: TelegramBot_Callback telegrambot: resulted in :Callback returned error:Bad Request: message text must be encoded in UTF-8:: from SendIt
2017.12.12 20:38:16 3: TelegramBot_Callback telegrambot: Reached max retries (ret: Callback returned error:Bad Request: message text must be encoded in UTF-8:) for msg 200003307 : Tankstelle: ????? - SuperE5: 1.10 ? - Aktueller Spritpreis liegt unter dem Stunden- (1.31 ?), Tages- (1.31 ?) und Monatsdurchschnitt (1.31 ?)

Ich weiß nicht wie ich das machen muss…
Schönen Abend.

Marcel
Marcel
3 Jahre zuvor
Reply to  Marcel

2017.12.12 20:36:53 3: SpritkostenNotify return value: TelegramBot_Set: Command message, without explicit peer requires defaultPeer being set

Das hat sich erledigt. Geht nur um die darunter geschriebenen Einträge im Log.

Marcel
Marcel
3 Jahre zuvor
Reply to  Daniel

Guten Morgen Daniel. Danke für die schnelle Antwort.
Hab das direkt mal ausprobiert. Wenn ich set telegrambot message ????? – €
verschicke bekomme ich die auch genau so. Hab ich jetzt nicht so wirklich verstanden.
Hab auch falls durchs kopieren des Codes vllt was schief gelaufen ist alle €uro Zeichen neu eingetippt, aber hat auch nichts gebracht.
2017.12.13 08:08:52 3: TelegramBot_Callback telegrambot: resulted in :Callback returned error:Bad Request: message text must be encoded in UTF-8:: from SendIt
2017.12.13 08:08:52 3: TelegramBot_Callback telegrambot: Reached max retries (ret: Callback returned error:Bad Request: message text must be encoded in UTF-8:) for msg 200003307 : Tankstelle: ????? – SuperE5: 1.10 ? – Aktueller Spritpreis liegt unter dem Stunden- (1.28 ?), Tages- (1.42 ?) und Monatsdurchschnitt (1.40 ?)

Marcel
Marcel
3 Jahre zuvor
Reply to  Marcel

Okay, ich hab es. Es lag an WinSCP – welcher die Datei 99_myUtils.pm in 1252 ANSI angelgegt hat. Ist mir grade aber nur durch Zufall aufgefallen. Neue Datei in UTF-8 erstellt und nun klappt die Benachrichtigung.

jw1hal
jw1hal
2 Jahre zuvor

Hallo,
ich habe alle Anleitungen nachgebaut, allerdings nur für Diesel und SuperE5 mit 28 Tankstellen. Es gab Probleme mit mehreren „;“ an den Ende der Zeilen (weiß jetzt nicht mehr, wo das war), mit der Statistik (ob sie jetzt funktioniert; abwarten) und mit dem Senden beim Spritpreismonitor, sowie dem Senden an eine Gruppe. Ich habe in der Datei „99_SpritalarmUtils.pm“ aus alles „@@“ ein „@“ gemacht und bei Empfänger als Gruppe „“#Gruppe““ (mit 1x Anfürungszeichen). Damit ging es dann, allerdings steht nun in der Auswahlbox „“ Gruppe““ (1x Anführungszeichen und statt „#“ ein Leerzeichen. Auch in der Nachricht selbst steht dann „@“ Fhem““, was bissel doof aussieht.
Danke aber dennoch für die tollen Anleitungen.
Nun habe ich ein Problem:
„Manuelles Abfragen der Preissituation“ funktioniert bei mir nicht. Egal was ich eingebe, es kommt immer der eingegebene Begriff und 0€ raus.
Eingabe-Beispiele:
Spritkosten Total_Merseburger_Strasse
Spritkosten Total Merseburger Strasse
Spritkosten Total
Spritkosten Test
Ausgabe-Beispiele:
Aktueller Preis für an der Total_Merseburger_Strasse-Tankstelle: 0 €
Total Merseburger Strasse-Tankstelle: 0 €
Aktueller Preis für an der Total-Tankstelle: 0 €
Aktueller Preis für an der Test-Tankstelle: 0 €
Die Tankstelle heißt: Tankstelle_Total_Merseburger_Strasse
Der Alias ist: Total Merseburger Straße
Test ist keine Tankstelle, ist nur ein Test.
Mir kommt es so vor, als ob nicht geprüft und auch nicht abgerufen wird.
Woran könnte das liegen?
Gruß jw1hal