FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: UweUwe am 19 Dezember 2018, 11:14:39

Titel: [Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 19 Dezember 2018, 11:14:39
Hallo,

ich versuche mich gerade anhand der verschiedenen Anleitungen an das Thema Spritpreise in FHEM heranzuarbeiten.
Ich habe mir die URL von www.clever-tanken.de näher angeschaut und finde leider keinen Weg, wie ich automatisch den aktuellen Dieselpreis aussortieren kann.
Schaut man die Suchkriterien der Vorlagen, als Beispiel sei die "Hausautomatiserungsanleitung von Matthias Kleine" genannt, so gibt es dort einfache Suchkriterien, die Diesel und Preis herausfischen lassen. Im aktuellen html von www.clever-tanken.de sehe ich hier keine Chance. www.clever-tanken.de scheint es so umgestellt zu haben, dass dies nicht mehr möglich ist. Sehe ich dies richtig und was macht ihr hier? Gibt es einen anderen Weg?

Vielen Dank
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 19 Dezember 2018, 11:39:06
Moin Uwe,

ich lese schon seit Jahren clever-tanken per Regex aus, was einwandfrei funktioniert.

Die URL, die du auslesen musst, schaut wie folgt aus:

https://www.clever-tanken.de/tankstelle_liste?spritsorte=7&r=5&ort=Hamburg


Bedeutung:

spritsorte=7
1 = Autogas
2 = LKW-Diesel
3 = Diesel
4 = Bioethanol
5 = SuperE10
6 = SuperPlus
7 = SuperE5
8 = Erdgas


Sprich um Diesel Ergebnisse zu bekommen benötigst du:

https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=5&ort=Ortsname_oder_PLZ
https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=5&ort=22111 (Abfrage für Diesel mit einem Radius 5KM und der PLZ: 22111


Am besten ein HTTPMOD Device mit dem Link anlegen, nun fehlt nur noch die RegEx, meine schauen wie folgt aus:

attr $device reading01Name Tankstellenname ;
                attr $device reading01Regex <div class=\"row fuel-station-location-name\">(.*)<\\/div> ;
                attr $device reading01RegOpt g ;
                attr $device reading02Name Preis ;
                attr $device reading02Regex <div class=\"price\">(.*)<sup> ;
                attr $device reading02RegOpt g ;
                attr $device reading03Name Strasse ;
                attr $device reading03Regex <div id=\"fuel-station-location-street\">(.*)<\\/div> ;
                attr $device reading03RegOpt g ;
                attr $device reading04Name Ort ;
                attr $device reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\\/div> ;       
                attr $device reading04RegOpt g ;
                attr $device reading05Name Entfernung ;
                attr $device reading05Regex <div >(.*)<\\/div> ;


Dies dient nur als Beispiel! UNGETESTET! Habe mir eine Steuerung für Telegram programmiert.

Gruß
Mathze
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: Frank_Huber am 19 Dezember 2018, 12:54:55
ich hab es nach dem hier eingerichtet:
https://waschto.eu/spritmonitor-und-tankalarm-spritpreise-der-umgebung-per-fhem-ueberwachen
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 19 Dezember 2018, 13:41:44
Hallo t1me2die

danke für die schnelle Antwort,

ich bin direkt nach deiner Antwort ans Werk gegangen und auch auf einem guten Weg.

Die URL müsste richtig sein, da ich bei Eingabe der URL die richtigen Daten angezeigt bekomme:

https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152

auch die attr habe ich eingefügt (mein device heisst: Draussen_Spritpreis).
==> Ich vermuste, dass es noch ein reading05REGEX geben müsste, das ich aber egänzt habe.

Meine Attr heissen:
attr DRAUSSEN_SPRITPREIS reading01Name Tankstellenname
attr DRAUSSEN_SPRITPREIS reading01Regex <div class=\"row fuel-station-location-name\">(.*)<\\/div>
attr DRAUSSEN_SPRITPREIS reading01RegOpt g
attr DRAUSSEN_SPRITPREIS reading02Name Preis ;
attr DRAUSSEN_SPRITPREIS reading02Regex <div class=\"price\">(.*)<sup>
attr DRAUSSEN_SPRITPREIS reading02RegOpt g
attr DRAUSSEN_SPRITPREIS reading03Name Strasse ;
attr DRAUSSEN_SPRITPREIS reading03Regex <div id=\"fuel-station-location-street\">(.*)<\\/div>
attr DRAUSSEN_SPRITPREIS reading03RegOpt g
attr DRAUSSEN_SPRITPREIS reading04Name Ort
attr DRAUSSEN_SPRITPREIS reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\\/div>       
attr DRAUSSEN_SPRITPREIS reading04RegOpt g
attr DRAUSSEN_SPRITPREIS reading05Name Entfernung
attr DRAUSSEN_SPRITPREIS reading05Regex <div >(.*)<\\/div>
attr DRAUSSEN_SPRITPREIS reading05RegOpt g


Die letzte Zeile habe ich ergänzt. Jetzt sehe ich aber im device nur die Spritpreise. Ist schon mal was:

Event monitor zeigt:

2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-1: 1.24
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-2: 1.26
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-3: 1.29
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-4: 1.29
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-5: 1.29
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-6: 1.30
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-7: 1.30
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-8: 1.30
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-9: 1.31
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-10: 1.31
2018-12-19 13:36:23 HTTPMOD DRAUSSEN_SPRITPREIS Preis-11: 1.32


Readings sehen so aus:

Preis-1 1.24  2018-12-19 13:38:23
Preis-10         1.31 2018-12-19 13:38:23
Preis-11         1.32 2018-12-19 13:38:23
Preis-2           1.26 2018-12-19 13:38:23
Preis-3           1.29 2018-12-19 13:38:23
Preis-4            1.29 2018-12-19 13:38:23
Preis-5            1.29 2018-12-19 13:38:23
Preis-6            1.30  2018-12-19 13:38:23
Preis-7            1.30 2018-12-19 13:38:23
Preis-8            1.30  2018-12-19 13:38:23
Preis-9            1.31  2018-12-19 13:38:23


Jetzt fehlt noch Ort, Strasse.. was mache ich falsch.
Nochmals vielen Dank...

Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 19 Dezember 2018, 14:22:53
Moin Uwe,

gib uns bitte mal ein
list Draussen_Spritpreise

Ich bin mir nicht sicher, ob deine RegEx so korrekt sind.

Probier mal:

attr DRAUSSEN_SPRITPREIS reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\/div>


Kleiner Tipp:
Öffne die o.g. URL, kopiere Dir den Seitenquelltext und rufe die Seite: https://regex101.com/
auf.
Kopiere nun den Seitenquelltext dort hinein und teste dein RegEx selber.

So kann man einfach prüfen, ob der RegEx korrekt ist.

Gruß
Mathze

PS.: Ich lege dynamisch mithilfe der myUtils Geräte an, weshalb ich manche Zeichen escapen muss, daher kommt wohl der Fehler.
Probier es mal wie folgt:

attr DRAUSSEN_SPRITPREIS reading01Name Tankstellenname
attr DRAUSSEN_SPRITPREIS reading01Regex <div class=\"row fuel-station-location-name\">(.*)<\/div>
attr DRAUSSEN_SPRITPREIS reading01RegOpt g
attr DRAUSSEN_SPRITPREIS reading02Name Preis ;
attr DRAUSSEN_SPRITPREIS reading02Regex <div class=\"price\">(.*)<sup>
attr DRAUSSEN_SPRITPREIS reading02RegOpt g
attr DRAUSSEN_SPRITPREIS reading03Name Strasse ;
attr DRAUSSEN_SPRITPREIS reading03Regex <div id=\"fuel-station-location-street\">(.*)<\/div>
attr DRAUSSEN_SPRITPREIS reading03RegOpt g
attr DRAUSSEN_SPRITPREIS reading04Name Ort
attr DRAUSSEN_SPRITPREIS reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\/div>       
attr DRAUSSEN_SPRITPREIS reading04RegOpt g
attr DRAUSSEN_SPRITPREIS reading05Name Entfernung
attr DRAUSSEN_SPRITPREIS reading05Regex <div >(.*)<\/div>
attr DRAUSSEN_SPRITPREIS reading05RegOpt g
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 19 Dezember 2018, 14:25:19
Hi,

ohne Ort und Strasse, dafür mit FileLog :)
Abfrage einer Tankstelle:
defmod TankeStarMarkrans HTTPMOD http://www.clever-tanken.de/tankstelle_details/29092 1800
attr TankeStarMarkrans userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex readingOExpr
attr TankeStarMarkrans enableControlSet 1
attr TankeStarMarkrans reading01Name Diesel
attr TankeStarMarkrans reading01Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Diesel
attr TankeStarMarkrans reading02Name SuperE10
attr TankeStarMarkrans reading02Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Super E10
attr TankeStarMarkrans reading03Name SuperE5
attr TankeStarMarkrans reading03Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Super E5
attr TankeStarMarkrans readingOExpr $val =~ tr/,/./;;$val
attr TankeStarMarkrans room 2_6_Spritpreise
attr TankeStarMarkrans stateFormat E5: SuperE5 € / E10: SuperE10 € / D: Diesel €
attr TankeStarMarkrans timeout 10
attr TankeStarMarkrans verbose 2

defmod FileLogSpritE5 FileLog ./log/SpritE5-%Y.log TankeJetRueckmarsdorfer:SuperE5:.*|TankeStarMarkrans:SuperE5:.*


Anpassen: Einfach Tankstellennummer ändern

Gruß Otto
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 19 Dezember 2018, 15:06:57
Hallo t1me2die und Otto

@t1me2die

das sieht sehr sehr gut aus, die Entfernungen fehlen noch. Ich glaube aber, dass ich den Fehler gefunden habe.  Ich füge ihn an, falls noch ein weiterer User darauf zurückgreifen will.

attr DRAUSSEN_SPRITPREIS reading05Regex <div id=\"fuel-station-location-street\">(.*)<\/div>

==> dein Paste und Copy ..  ;D ;D  Toller Support. Jetzt muss ich es "nur noch" verstehen.

@ Otto: heute Abend schaue ich jetzt mal die Lösung mit dem filelog an.

Nochmals vielen Dank für den support. 

Danke

Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 19 Dezember 2018, 16:02:33
Moin Uwe,

das freut mich.
Pauschal gesagt liest HTTPMOD den Seitenquelltext von der jeweiligen URL aus.
Du legst dann mit verschiedenen RegEx einen Suchfilter fest.
Das Matching also das Ergebnis aus dem RegEx wird dann dein Reading.

Daher sagte ich ja, öffne von der jeweiligen URL den Quelltext (rechte Maustaste -> Seitenquelltext öffnen) kopiere alles und klatsche es bei: https://regex101.com/ rein.
Nimm Dir nun eins deiner RegEx und trage dies oben bei regulare Ausdrücke ein. Das "Match" (Reading) siehst du dann direkt auf der rechten Seite  :)

Falls noch Fragen sind, immer raus damit.

Gruß
Mathze
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 19 Dezember 2018, 16:06:55
Hallo t1me2die,

ist es vermessen zu fragen, ob du noch den Codeschnipsel für "TelegrammBot" zuschickst.
TelegramBot habe ich funktionsfähig integriert in FHEM.

Merci
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 19 Dezember 2018, 21:24:51
Moin Uwe,

was möchtest du genau haben?

Gruß
Mathze
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 20 Dezember 2018, 07:52:16
Hallo Mathze,

danke für die Rückantwort. Über TelegramBot möchte ich mir diese aktuellen Spritpreise für meine Region bei Bedarf zuschicken lassen. Es geht mir hier um 2 Dinge. Zum einen um genau diesen Service "einfach" auf Knopfdruck "TelegramBot" über "Favorites" nutzen zu können und zum anderen noch darum, eine Vorlage zur weiteren Verarbeitung in FHEM von solchen Daten an Beispielen nachvollziehen zu können. Ich bin nicht der Programmierer, möchte aber eine Alarmanlage in FHEM. Aktuell versuche ich die verschiedenen Dienste zu lernen: TelegramBot, Gerfancy, Notifies, Filelog, Graphen, Events..

Die Spitpreise der Umgebung bei Bedarf auf das Handy als Überblick zu haben ist aber ein toller Gack. Man kann natürlich immer auch über Clever-Tanken gehen, aber das kann jeder..

Uwe
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 20 Dezember 2018, 08:33:28
Moin Uwe,

dazu benötigst du nicht viel.
Du brauchst zuerst einmal ein Notify oder Doif (je nachdem was dir mehr zusagt), mit welches du auf eingehende Telegram Nachrichten reagierst.

z.B.
define getMessageTelegram notify Telegram:msgId:.* { checkMessage() }

Nun legst du in der 99_myUtils eine Routine an, wo du die eingehenden Nachrichten prüfst:

sub checkMessage()
{
my $id = ReadingsVal("TelegramBot_DeviceName","msgPeerId","");
my $alias = ReadingsVal("TelegramBot_DeviceName","msgPeer","");
my $message = ReadingsVal("TelegramBot_DeviceName","msgText","");
my $horn = ReadingsVal("Star_Horn","SuperE5","");
my $rahlstedt = ReadingsVal("Star_Rahlstedt","SuperE5","");

if ($message =~ /Spritpreise/)
        {
            fhem "set Telegram message \@$id " Der Spritpreis für SuperE5 beträgt: \n* Horn: $horn€ \n* Rahlstedt: $rahlstedt€";
        }
}


Du musst hier natürlich den "TelegramBot_DeviceName" durch deinen Telegrambotnamen ersetzen.
Ich habe zwei Haupttankstelle, einmal "Star_Horn" und einmal "Star_Rahlstedt", aus diesen beiden HTTPMOD Geräten hole ich mir den aktuellen Preis für das Reading "SuperE5".
In dieser sehr stark verkürzten Sub wird die eingehende Telegram Nachricht $message geprüft auf den Inhalt "Spritpreise", als Ergebnis wird eine Telegramnachricht an den Verfasser zurückgeschickt mit den Preisen.

Das o.g. Beispiel wurde von mir stark verkürzt und nicht getestet, es soll lediglich ein Gedankenanstoß sein.

Außerdem habe ich mir eine kleine Routine geschrieben, die bei einer Preisunterschreitung eine automatische Nachricht via Telegram verschickt.

Dazu benötigst du wieder ein Notify, welches auf deine HTTPMOD Gerät reagiert, z.B.:

define n_Spritpreise notify Star_Horn:SuperE5:.*|Star_Rahlstedt:SuperE5:.* { checkSpritpreise($NAME,$EVTPART0,$EVTPART1) }

Hier siehst du wieder meine beiden Haupttankstellen.
Das Notify ruft nun eine Routine auch in der 99_myUtils auf um die Preise zu prüfen.

Auch diese Routine habe ich stark verkürzt und nicht getestet.

sub checkSpritpreise($$$)
{
  my ($tankstelle, $benzin, $preis) = @_;
  my $id = ReadingsVal("TelegramBot_DeviceName","msgPeerId","");
  $tankstelle =~ s/_/ /g;
    if (($tankstelle eq "Star Horn" or $tankstelle eq "Star Rahlstedt") && (($preis * 100) <= 130))
    {    fhem "set Telegram message \@$id $tankstelle \n$benzin $preis€";
    }
}


Im Anhang siehst du ein Screenshot, wie das ungefähre Ergebnis bei mir ausschaut  :)

Ich hoffe, ich konnte Dir bisschen auf die Sprünge helfen.

Gruß
Mathze
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 20 Dezember 2018, 13:55:51
Hallo,

habe mich mal mit dem Modul HTTPMOD und den beinhalteten Verweisen beschäftigt und mir ist noch was aufgefallen:

Bei meinen Spritpreisen, besser Distanzen aus" clever-tanken " werden die Entfernungen durch mein Gerät nicht ausgelesen. Dies wollte ich verstehen und verbessern.

Die HTML Stelle für die Distanz auf der Webseite "clever-tanken"  lautet:
      <div class="fuel-station-location-address-distance">
                    <div>9.0 km</div>


das dazugehörige Attribut habe ich mir so überlegt:
attr DRAUSSEN_SPRITPREIS reading05Regex <div id=\"fuel-station-location-address-distance\"><div>(.*)<\/div>
Erklärung: es soll nach reading05 geschrieben werden. REGEX sucht nach fuel-station-location-address-distance. Wie man auf die "<div id=\" und die "\" kommt, konnte ich nicht ergünden. Anschliessend liest Regex alles ein, was nach dem String  "><div>" kommt. Hier muss aber ein Fehler sein.

Zum Vergleich, es funktioniert das Einlesen der Adresse aus clever-tanken korrekt:

Die HTML Stelle für die Adresse auf clever-tanken lautet:

  <div id="fuel-station-location-street">Bundesstr. 58</div>

das dazugehörige/funktionierende)  Attribut:

attr DRAUSSEN_SPRITPREIS reading03Regex <div id=\"fuel-station-location-street\">(.*)<\/div>

meine Erklärung für diese Attribut : REGEX sucht nach "fuel-station-location-street": Warum im attr nach "street" der "\" folgt, konnte ich nicht sagen. Auch intensivstes Suchen brachte hinsichtlich der Syntax nicht weiter. .. Dann liest er (.*) ein, was hinter einem > nach dem Ende der Suckkriteriums steht, also was hinter street steht.
So habe ich auch mein Attribut für Distanz aufgesetzt.
Die Stelle mit der Distanz ist im HTML unterschiedlich zu street. Hier ist noch ein <div> dazwischen. Oder mache ich hier einen Denkfehler. Deshalb ein anderes Regex.

Zur besseren Verdeutlichung , doer falls ich an einer anderen Stelle einen Fehler habe, habe ich noch ein list  angehängt

Internals:
   BUSY       0
   DEF        https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152 60
   Interval   60
   LASTSEND   1545309740.98119

   MainURL    https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152
   ModuleVersion 3.5.4 - 9.11.2018
   NAME       DRAUSSEN_SPRITPREIS
   NR         125
   STATE      ???
   TRIGGERTIME 1545309800.98045
   TRIGGERTIME_FMT 2018-12-20 13:43:20
   TYPE       HTTPMOD
   addr       https://www.clever-tanken.de:443
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152
   header     
   host       www.clever-tanken.de
   httpheader HTTP/1.1 200 OK
Date: Thu, 20 Dec 2018 12:42:21 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 14719
Content-Type: text/html; charset=utf-8
Set-Cookie: spritsorte=3; expires=Fri, 20-Dec-2019 12:42:21 GMT; Max-Age=31536000; Path=/
Set-Cookie: search_city=; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/
Connection: close
   httpversion 1.0
   hu_blocking 0
   hu_filecount 11
   hu_port    443
   hu_portSfx
   ignoreredirects 0
   loglevel   4
   path       /tankstelle_liste?spritsorte=3&r=10&ort=52152
   protocol   https
   redirects  0
   timeout    2
   url        https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152
   value      0
   QUEUE:
   READINGS:
     2018-12-19 14:42:23   Entfernung      10.4 km
     2018-12-20 13:00:00   Entfernung-1    Nideggener Str. 25
     2018-12-20 13:00:00   Entfernung-10   Bundesstr. Haus Nr. 7
     2018-12-20 13:00:00   Entfernung-11   Hauptstr. 144
     2018-12-20 13:00:00   Entfernung-2    Germeter 135
     2018-12-20 13:00:00   Entfernung-3    In den Bremen 20
     2018-12-20 13:00:00   Entfernung-4    Triererstr. 112
     2018-12-20 13:00:00   Entfernung-5    Bergstr. 2
     2018-12-20 13:00:00   Entfernung-6    Schmiedstr. 4-6
     2018-12-20 13:00:00   Entfernung-7    Bundesstr. 58
     2018-12-20 13:00:00   Entfernung-8    Bundesstr. 1
     2018-12-20 13:00:00   Entfernung-9    Trierer Str. 232
     2018-12-20 13:42:21   Ort-1           52159 Roetgen
     2018-12-20 13:42:21   Ort-10          52159 Roetgen
     2018-12-20 13:42:21   Ort-11          52156 Monschau
     2018-12-20 13:42:21   Ort-2           52385 Nideggen
     2018-12-20 13:42:21   Ort-3           52393 Hürtgenwald
     2018-12-20 13:42:21   Ort-4           52152 Simmerath
     2018-12-20 13:42:21   Ort-5           52152 Simmerath
     2018-12-20 13:42:21   Ort-6           52156 Monschau
     2018-12-20 13:42:21   Ort-7           52152 Simmerath
     2018-12-20 13:42:21   Ort-8           52152 Simmerath
     2018-12-20 13:42:21   Ort-9           52156 Monschau
     2018-12-19 14:40:23   Preis           1.24
     2018-12-20 13:42:21   Preis-1         1.26
     2018-12-20 13:42:21   Preis-10        1.30
     2018-12-20 13:42:21   Preis-11        1.31
     2018-12-20 13:42:21   Preis-2         1.28
     2018-12-20 13:42:21   Preis-3         1.28
     2018-12-20 13:42:21   Preis-4         1.28
     2018-12-20 13:42:21   Preis-5         1.28
     2018-12-20 13:42:21   Preis-6         1.29
     2018-12-20 13:42:21   Preis-7         1.29
     2018-12-20 13:42:21   Preis-8         1.29
     2018-12-20 13:42:21   Preis-9         1.30
     2018-12-20 13:42:21   Strasse-1       Bundesstr. 58
     2018-12-20 13:42:21   Strasse-10      Bundesstr. Haus Nr. 7
     2018-12-20 13:42:21   Strasse-11      Hauptstr. 144
     2018-12-20 13:42:21   Strasse-2       Nideggener Str. 25
     2018-12-20 13:42:21   Strasse-3       Germeter 135
     2018-12-20 13:42:21   Strasse-4       Bundesstr. 1
     2018-12-20 13:42:21   Strasse-5       In den Bremen 20
     2018-12-20 13:42:21   Strasse-6       Triererstr. 112
     2018-12-20 13:42:21   Strasse-7       Bergstr. 2
     2018-12-20 13:42:21   Strasse-8       Schmiedstr. 4-6
     2018-12-20 13:42:21   Strasse-9       Trierer Str. 232
     2018-12-20 13:42:21   Tankstellenname-1 bft
     2018-12-20 13:42:21   Tankstellenname-10 TOTAL
     2018-12-20 13:42:21   Tankstellenname-11 ARAL
     2018-12-20 13:42:21   Tankstellenname-2 bft
     2018-12-20 13:42:21   Tankstellenname-3 BFT Tankstelle
     2018-12-20 13:42:21   Tankstellenname-4 bft
     2018-12-20 13:42:21   Tankstellenname-5 Markant (Tankautomat)
     2018-12-20 13:42:21   Tankstellenname-6 Tankstelle Huppertz
     2018-12-20 13:42:21   Tankstellenname-7 bft
     2018-12-20 13:42:21   Tankstellenname-8 Shell
     2018-12-20 13:42:21   Tankstellenname-9 T
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        https://www.clever-tanken.de/tankstelle_liste?spritsorte=3&r=10&ort=52152
     value      0
   defptr:
     readingBase:
       Ort-1      reading
       Ort-10     reading
       Ort-11     reading
       Ort-2      reading
       Ort-3      reading
       Ort-4      reading
       Ort-5      reading
       Ort-6      reading
       Ort-7      reading
       Ort-8      reading
       Ort-9      reading
       Preis-1    reading
       Preis-10   reading
       Preis-11   reading
       Preis-2    reading
       Preis-3    reading
       Preis-4    reading
       Preis-5    reading
       Preis-6    reading
       Preis-7    reading
       Preis-8    reading
       Preis-9    reading
       Strasse-1  reading
       Strasse-10 reading
       Strasse-11 reading
       Strasse-2  reading
       Strasse-3  reading
       Strasse-4  reading
       Strasse-5  reading
       Strasse-6  reading
       Strasse-7  reading
       Strasse-8  reading
       Strasse-9  reading
       Tankstellenname-1 reading
       Tankstellenname-10 reading
       Tankstellenname-11 reading
       Tankstellenname-2 reading
       Tankstellenname-3 reading
       Tankstellenname-4 reading
       Tankstellenname-5 reading
       Tankstellenname-6 reading
       Tankstellenname-7 reading
       Tankstellenname-8 reading
       Tankstellenname-9 reading
     readingNum:
       Ort-1      04
       Ort-10     04
       Ort-11     04
       Ort-2      04
       Ort-3      04
       Ort-4      04
       Ort-5      04
       Ort-6      04
       Ort-7      04
       Ort-8      04
       Ort-9      04
       Preis-1    02
       Preis-10   02
       Preis-11   02
       Preis-2    02
       Preis-3    02
       Preis-4    02
       Preis-5    02
       Preis-6    02
       Preis-7    02
       Preis-8    02
       Preis-9    02
       Strasse-1  03
       Strasse-10 03
       Strasse-11 03
       Strasse-2  03
       Strasse-3  03
       Strasse-4  03
       Strasse-5  03
       Strasse-6  03
       Strasse-7  03
       Strasse-8  03
       Strasse-9  03
       Tankstellenname-1 01
       Tankstellenname-10 01
       Tankstellenname-11 01
       Tankstellenname-2 01
       Tankstellenname-3 01
       Tankstellenname-4 01
       Tankstellenname-5 01
       Tankstellenname-6 01
       Tankstellenname-7 01
       Tankstellenname-8 01
       Tankstellenname-9 01
     readingOutdated:
     readingSubNum:
       Ort-1      -1
       Ort-10     -10
       Ort-11     -11
       Ort-2      -2
       Ort-3      -3
       Ort-4      -4
       Ort-5      -5
       Ort-6      -6
       Ort-7      -7
       Ort-8      -8
       Ort-9      -9
       Preis-1    -1
       Preis-10   -10
       Preis-11   -11
       Preis-2    -2
       Preis-3    -3
       Preis-4    -4
       Preis-5    -5
       Preis-6    -6
       Preis-7    -7
       Preis-8    -8
       Preis-9    -9
       Strasse-1  -1
       Strasse-10 -10
       Strasse-11 -11
       Strasse-2  -2
       Strasse-3  -3
       Strasse-4  -4
       Strasse-5  -5
       Strasse-6  -6
       Strasse-7  -7
       Strasse-8  -8
       Strasse-9  -9
       Tankstellenname-1 -1
       Tankstellenname-10 -10
       Tankstellenname-11 -11
       Tankstellenname-2 -2
       Tankstellenname-3 -3
       Tankstellenname-4 -4
       Tankstellenname-5 -5
       Tankstellenname-6 -6
       Tankstellenname-7 -7
       Tankstellenname-8 -8
       Tankstellenname-9 -9
     requestReadings:
       update:
         Ort-1      reading 04-1
         Ort-10     reading 04-10
         Ort-11     reading 04-11
         Ort-2      reading 04-2
         Ort-3      reading 04-3
         Ort-4      reading 04-4
         Ort-5      reading 04-5
         Ort-6      reading 04-6
         Ort-7      reading 04-7
         Ort-8      reading 04-8
         Ort-9      reading 04-9
         Preis-1    reading 02-1
         Preis-10   reading 02-10
         Preis-11   reading 02-11
         Preis-2    reading 02-2
         Preis-3    reading 02-3
         Preis-4    reading 02-4
         Preis-5    reading 02-5
         Preis-6    reading 02-6
         Preis-7    reading 02-7
         Preis-8    reading 02-8
         Preis-9    reading 02-9
         Strasse-1  reading 03-1
         Strasse-10 reading 03-10
         Strasse-11 reading 03-11
         Strasse-2  reading 03-2
         Strasse-3  reading 03-3
         Strasse-4  reading 03-4
         Strasse-5  reading 03-5
         Strasse-6  reading 03-6
         Strasse-7  reading 03-7
         Strasse-8  reading 03-8
         Strasse-9  reading 03-9
         Tankstellenname-1 reading 01-1
         Tankstellenname-10 reading 01-10
         Tankstellenname-11 reading 01-11
         Tankstellenname-2 reading 01-2
         Tankstellenname-3 reading 01-3
         Tankstellenname-4 reading 01-4
         Tankstellenname-5 reading 01-5
         Tankstellenname-6 reading 01-6
         Tankstellenname-7 reading 01-7
         Tankstellenname-8 reading 01-8
         Tankstellenname-9 reading 01-9
   sslargs:
Attributes:
   icon       gasoline
   reading01Name Tankstellenname
   reading01RegOpt g
   reading01Regex <div class=\"row fuel-station-location-name\">(.*)<\/div>
   reading02Name Preis
   reading02RegOpt g
   reading02Regex <div class=\"price\">(.*)<sup>
   reading03Name Strasse
   reading03RegOpt g
   reading03Regex <div id=\"fuel-station-location-street\">(.*)<\/div>
   reading04Name Ort
   reading04RegOpt g
   reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\/div>
   reading05Name Entfernung
   reading05RegOpt g
   reading05Regex <div id=\"fuel-station-location-address-distance\">(.*)<\/div>
   room       DRAUSSEN
   userattr   reading01Name reading01RegOpt reading01Regex reading02Name reading02RegOpt reading02Regex reading03Name reading03RegOpt reading03Regex reading04Name reading04RegOpt reading04Regex reading05Name reading05RegOpt reading05Regex


Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 20 Dezember 2018, 14:16:30
Moin Uwe,

probiere es mal wie folgt:


attr DRAUSSEN_SPRITPREIS reading05Name Entfernung
attr DRAUSSEN_SPRITPREIS reading05Regex <div >(.*)<\/div>
attr DRAUSSEN_SPRITPREIS reading05RegOpt g


Gruß
Mathze
Titel: Antw:Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 20 Dezember 2018, 14:26:31
Hallo Mathze,
super, das wars, das Attribut

attr DRAUSSEN_SPRITPREIS reading05Regex <div >(.*)<\/div>

kann ich mir nicht erklären. Und ich hab leider auch keine Doku gefunden, die mir das erklärt. Liegt sicherlich an mir.

Trotzdem ganz toller support.

Danke
Uwe
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 20 Dezember 2018, 22:30:31
https://www.clever-tanken.de/tankstelle_liste?spritsorte=7&r=10&lat=47.875943&lon=10.550710 1200
in abhängigkeit von den Geokoordinaten latitude und longitude geht auch.
Falls man owntracks oder geofancy benutzt, kann man sich z.B. die Tankstellen im Umkreis um die Parkposition des Autos ausgeben lassen.

Ein Notify auf die sich ändernde Geokoordinaten lat/lon.
Dazu eine sub in der 99_MyUtils.pm, die das clever-tanken HTTPMOD device dynamisch mit den neuen Geokoordinaten neu anlegt.


Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 21 Dezember 2018, 08:59:34
Zitat von: inoma am 20 Dezember 2018, 22:30:31
https://www.clever-tanken.de/tankstelle_liste?spritsorte=7&r=10&lat=47.875943&lon=10.550710 1200
in abhängigkeit von den Geokoordinaten latitude und longitude geht auch.
Falls man owntracks oder geofancy benutzt, kann man sich z.B. die Tankstellen im Umkreis um die Parkposition des Autos ausgeben lassen.

Ein Notify auf die sich ändernde Geokoordinaten lat/lon.
Dazu eine sub in der 99_MyUtils.pm, die das clever-tanken HTTPMOD device dynamisch mit den neuen Geokoordinaten neu anlegt.

Man könnte auch seinen Standort via Telegram an FHEM senden, aus diesem dann "latitude: " und "longitude: " nehmen um die URL diesbezüglich anzupassen  :)
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 21 Dezember 2018, 11:30:21
Hallo,

gerade die letzte Möglichkeit, man übermittelt seine GPS Daten an FHEM und bekommt die billigsten Spritpreise der Umgebung zurück. Das ist ja super. Ich werde dies versuchen mal umzusetzen, sehe aber da schon Schwierigkeiten auf mich zukommen. Ich habe einfach nicht die Erfahrung. Aber darin liegt mein Reiz. Eventl. frage ich dann wieder im Forum nach. Ich brauche aber für die Umsetzung eine Stande Stunden ab Stück, Weihnachten könnte hier sehr gut passen.. Danke für Ideen.
Falls jemand einen Codeschnipsel hat.. gerne.

Uwe
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 21 Dezember 2018, 12:12:47
Hier mal die Codeschnipsel
1) sub createHTTPMODTanke($$$$$), damit wird ein HTTPMOD device CleverTanken dynamisch neu mit den neuen Geokoordinaten anlegt.
    das muss aufgerufen werden, wenn sich die Geokordinaten ändern (also ein notify auf lat/lon)
2) sub getTanke, erzeugt die Readings und den Pushtext fuer Telegram, die wird mit einem notify aufgerufen, etc:
   define CleverTanken_n notify CleverTanken:Entfernung-1:.* {getTanke("CleverTanken")}

Der Text für Telegram steht dann im device CleverTanken im Reading "Pushtext".
Die Fuel.. readings sind nur, damit man alles übersichtlich im Modul in einer Tabelle hat.

Weitere Erklärungen im Code Header.

################################## #
# $Id: 99_MyUtilsTanken.pm 2014-8 by Inoma $
# Version 1.0 11/12/2018 by Inoma


package main;

use strict;
use warnings;
use POSIX;
sub MyUtilsTanken_Initialize($$)
{
  my ($hash) = @_;
}


##################################################################################################
# if (defined($defs{"CleverTanken"})) {fhem("delete CleverTanken")}
# fhem("sleep 2; {createHTTPMODTanke(\"CleverTanken\",$Spritsorte,$TankRadius,$startLat,$startLng)}; sleep 5; set CleverTanken reread");
#                {createHTTPMODTanke("CleverTanken","7","5","47.1234","12.1234")}
# Errormeldungen:
# -1 = Device konnte nicht angelegt werden #  0 = Device ist schon vorhanden #  1 = Device wurde erfolgreich angelegt
##################################################################################################

sub createHTTPMODTanke($$$$$)
{
    my($name,$spritsorte,$radius,$lat,$lon) = @_;
    my $sub    = "createHTTPMODTanke";
    my $error  = "";
    my $device = $name;
    my $link   = "https://www.clever-tanken.de/tankstelle_liste?spritsorte=$spritsorte&r=$radius&lat=$lat&lon=$lon";

   
    # Device ist noch nicht angelegt

    if (!defined($defs{$device}))
    {
        Log 3,"[$sub] Create device: $link";
            fhem "define $device HTTPMOD $link 0 ;
                  attr $device room Verkehr ;
                  attr $device enableControlSet 1 ;
                  attr $device userattr TankstellenAnzahl:20,30,40,50,60 TankRadius:5,6,7,8,9,10 Spritsorte:5,7 ;
                  attr $device Spritsorte 7 ;
                  attr $device TankRadius 10 ;
                  attr $device event-on-update-reading Tankstellenname-1 ;
                  attr $device reading01Name Tankstellenname ;
                  attr $device reading01Regex <span class=\\\"fuel-station-location-name\\\">(.*)<\\\/span> ;
                  attr $device reading01RegOpt g ;
                  attr $device reading01DeleteIfUnmatched 1 ;
                  attr $device reading02Name Preis ;
                  attr $device reading02RegOpt g  ;
                  attr $device reading02Regex <div class=\\\"price-text price text-color-ct-blue\\\">(?>\\\s*)(\\\d.*)<sup> ;
                  attr $device reading02DeleteIfUnmatched 1 ;
                  attr $device reading03Name Strasse ;
                  attr $device reading03Regex <div class=\\\"fuel-station-location-street\\\">(.*)<\\\/div> ;
                  attr $device reading03RegOpt g ;
                  attr $device reading03DeleteIfUnmatched 1 ;
                  attr $device reading04Name Ort ;
                  attr $device reading04RegOpt g ;
                  attr $device reading04Regex <div class=\\\"fuel-station-location-city\\\">(.*)<\\\/div> ;
                  attr $device reading04DeleteIfUnmatched 1 ;
                  attr $device reading05Name Entfernung ;
                  attr $device reading05RegOpt g  ;
                  attr $device reading05Regex <div class=\\\"fuel-station-location-distance d-flex justify-content-end\\\">(?>\\\s*)<span>(\\\d.\\\d);
                  attr $device reading05DeleteIfUnmatched 1 ;
                  attr $device group HTTPMOD ;
                  attr $device timeout 10 ;
                  attr $device comment Debuggen geht indem du deinen clever-tanken Link öffnest, \
Quelltext anzeigen lässt und diesen dann in das Textfeld auf https://regex101.com kopierst. \
Das RegEx kommt in die Eingabezeile ganz oben und rechts siehst du das Ergebnis.\
spritsorte=7\
1 = Autogas\
2 = LKW-Diesel\
3 = Diesel\
4 = Bioethanol\
5 = SuperE10\
6 = SuperPlus\
7 = SuperE5\
8 = Erdgas";   
       
        if (Value("$device") eq "")
        { $error = -1;
          return ($error, "");
        }
        else
        { $error = 1;
          return ($error, $device);
        }   
    }
    # Device ist schon vorhanden
    else
    {
        $error = 0;
        return ($error, $device);
    }

}



##################################################################################################
# getTanke
# Aufruf: CleverTanken:Entfernung-1:.* {getTanke("CleverTanken","LocationCar")}
#
# Schreibt 19 individuelle readings "Fuel01" bis "Fuel19" in das device "LocationCar"
# Fuel01 1,35 € - ALLGUTH | ABCdestr 19, 12345 12345 | 3.4 km 2018-12-21 11:48:32
# Fuel02 1,35 € - ALLGUTH | ABCfgstr 15, 12345 12345 | 3.7 km 2018-12-21 11:48:32
# Fuel03 1,35 € - Bavaria | ABChystr 7, 12345 12345 | 5.2 km 2018-12-21 11:48:32
# Fuel04 1,35 € - ALLGUTH | ABCwestr 120, 12345 12345 | 1.4 km 2018-12-21 11:48:32
#
# Schreibt zusaetzlich einen Einzeiligen Pushtext mit Zeilenumbruch für Telegram in folgenden Format ins Device "CleverTanken"
# PushText
# 1,35 € - ALLGUTH | ABCdestr 19, 12345 12345 | 3.4 km
# 1,35 € - ALLGUTH | ABCfgstr 15, 12345 Dortmund | 3.7 km
# 1,35 € - Bavaria | ABChystr 7, 12345 Dortmund | 5.2 km
# 1,35 € - ALLGUTH | ABCwestr 120, 12345 Dortmund | 1.4 km
##################################################################################################
sub getTanke($$){
    my($httpDev,$CarDev) = @_;
    my $sub              = "getTanke";
    my $TankenAnzahl     = AttrNum ("LocationCar","TankstellenAnzahl",20);
    # Maximum 20 anzeigen lassen
    my @Liste;
#Log 3,"[$sub] getTanke entered";
for(my $num=1;$num<$TankenAnzahl;$num++){
        #for(my $i=1;$i<10;$i++){
        #my $num = sprintf("%02d", $i);
        Log 5,"[$sub] Tankstellenanzahl: $num";
#Log 3,"[$sub] getTanke Tankstellenanzahl: $num";
        my $Tankname   = ReadingsVal($httpDev,"Tankstellenname-".$num,"undef")." ";
        last if !defined $Tankname;
  $Tankname   =~ s/ .*//;
  $Tankname   =~ s/-/ /g;
  $Tankname   =~ s/.Tankstelle//g;
  $Tankname   =~ s/.Markttankstelle//g;
  $Tankname   = $Tankname."       ";
  $Tankname   = substr($Tankname,0,7);
        my $Entfernung = ReadingsVal($httpDev,"Entfernung-".$num,"undef");
  $Entfernung =~ s/ km/km/g;
        my $Ort        = ReadingsVal($httpDev,"Ort-".$num,"undef");
my $Strasse    = ReadingsVal($httpDev,"Strasse-".$num,"undef").",";
  $Strasse    =~ s/\.//g;
my $Preis      = ReadingsNum($httpDev,"Preis-".$num,undef);
  #$Preis   =~ s/\./,/;
if ($num==1){fhem("setreading $CarDev minPreis1 $Preis")}
   if ($num==2){fhem("setreading $CarDev minPreis2 $Preis")}
        last if !defined $Entfernung;
        last if !defined $Preis;
        Log 5,"[$sub] Tankname/Preis: $Tankname $Preis";
#Log 3,"[$sub] Tankname/Preis: $Tankname $Preis";
my $Tankinfo = $Preis." ".$Entfernung." ".$Tankname." ".$Strasse."\n                   ".$Ort;
        Log 5,"[$sub] Tankinfo=$Tankinfo";
#Log 3,"[$sub] Tankinfo=$Tankinfo";
        push @Liste, $Tankinfo;

    }

    my $out = join(", ", @Liste)."\n";
    Log 5,"[$sub] out=$out"; 

    my $PushText = "";
    my $Anzahl = scalar(@Liste);
    for (my $num=0;$num<$Anzahl;$num++) {
        Log 5,"[$sub] Num: $num $Liste[$num]";
my $i = sprintf("%02d", $num+1);
$PushText = $PushText.$Liste[$num]."\n";

    }
chomp $PushText;      ## wird verwendet um das letzte \n zu entfernen
    if ($PushText ne "") {fhem("setreading $httpDev PushText $PushText;setreading $CarDev Tanken $PushText")}
}


1;
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 22 Dezember 2018, 06:01:55
Hallo inoma,

schaue ich mir gleich über das Wochende an. Vielen Dank und auch Schöne Weichnachten..

Uwe
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 27 Dezember 2018, 12:55:41
Hallo Otto123,

nochmals vielen Dank für die Zusendung deines Vorschlages für die Spritpreise.
Ich habe versucht, den Code zu verstehen, bevor ich ihn bei mir einbaue.

Da habe ich 2 grundsätzliche Fragen:

Hier nochmals dein Vorschlag:

defmod TankeStarMarkrans HTTPMOD http://www.clever-tanken.de/tankstelle_details/29092 1800
attr TankeStarMarkrans userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex readingOExpr
attr TankeStarMarkrans enableControlSet 1
attr TankeStarMarkrans reading01Name Diesel
attr TankeStarMarkrans reading01Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Diesel
attr TankeStarMarkrans reading02Name SuperE10
attr TankeStarMarkrans reading02Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Super E10
attr TankeStarMarkrans reading03Name SuperE5
attr TankeStarMarkrans reading03Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Super E5
attr TankeStarMarkrans readingOExpr $val =~ tr/,/./;;$val
attr TankeStarMarkrans room 2_6_Spritpreise
attr TankeStarMarkrans stateFormat E5: SuperE5 € / E10: SuperE10 € / D: Diesel €
attr TankeStarMarkrans timeout 10
attr TankeStarMarkrans verbose 2

defmod FileLogSpritE5 FileLog ./log/SpritE5-%Y.log TankeJetRueckmarsdorfer:SuperE5:.*|TankeStarMarkrans:SuperE5:.*


Zuerst geht es mir um das attr reading01Regex

attr TankeStarMarkrans reading01Regex SpritsortenController[^0-9]+([0-9,]+)[^0-9]+Diesel

Ich habe mir die

www.clever-tanken.de

angeschaut und keinen string "SpritsortenController" gefunden, nachdem du wohl suchst und die Werte anschliessend abholst.

Dann mit dem defmod

defmod FileLogSpritE5 FileLog ./log/SpritE5-%Y.log TankeJetRueckmarsdorfer:SuperE5:.*|TankeStarMarkrans:SuperE5:.*

Aus welchem Hut  :) :) bringst du die Tanke : "TankeJetRueckmarsdorfer"?

Vielen Dank für die Antwort.


Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Paul am 27 Dezember 2018, 14:16:19
Warum macht ihr das alles so kompliziert?

ich habe mir gestern innerhalb von 10 Minuten ohne Tankstellen suchen, nur mit HTTPmod und einem atrribut einen Benzinmonitor zusammengebaut.

1. Auf TankerKönig ein API-KEY geholt https://creativecommons.tankerkoenig.de/

2. in Fhem:

define Tanken HTTPMOD https://creativecommons.tankerkoenig.de/json/list.php?lat=<a>&lng=<b>&rad=<c>&sort=<D>&type=<e>&apikey=00000000-0000-0000-0000-000000000000 <f>


<a> lat    geographische Breite des Standortes
<b>lng    geographische Länge
<c>rad    Suchradius in km  (max. 25)
<d>type    Spritsorte    'e5', 'e10', 'diesel' oder 'all'
<e>sort    Sortierung    price, dist
<f> interval in Sekunden

Attribut setzen

attr axtractALLJSON 1


Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 27 Dezember 2018, 18:55:33
Zitat von: UweUwe am 27 Dezember 2018, 12:55:41
Aus welchem Hut  :) :) bringst du die Tanke : "TankeJetRueckmarsdorfer"?

Vielen Dank für die Antwort.
Hi,

ehrlich, der Code ist auch nicht original von mir - aber funktioniert. War hier irgendwo im Forum... Ich glaube hier (https://forum.fhem.de/index.php/topic,22554.0.html)
TankeJetRueckmarsdorfer ist einfach eine analoge zweite Definition, also ein zweites Devices. Ich logge aber in ein Logfile.

Ich gebe zu: mit HTTPMOD eine Seite zu analysieren und dabei alles zu verstehen fällt mir sehr schwer bzw.ich kann es selbst nicht. Manche Sachen kann ich an Hand von "Schablonen" anpassen.

Gruß Otto
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Paul am 27 Dezember 2018, 19:42:22
Zitat von: Otto123 am 27 Dezember 2018, 18:55:33
Ich gebe zu: FHTTKs HTTPMOD eine Seite zu analysieren und dabei alles zu verstehen fällt mir sehr schwer bzw.ich kann es selbst nicht. Manche Sachen kann ich an Hand von "Schablonen" anpassen.

Gruß Otto

Hallo, du super Experte, der mir schon oft geholfen hat.

Vielleicht kannst du mir helfen. Vielleicht nicht hier sondern per PM.

Wollte eigentlich ein Benzinpreis-Modul schreiben, aber nachdem ich im Wiki den Development Bereich gelesen habe, habe  ich es sofort aufgegeben habe. Du kannst mir aber sicherlich weiterhelfen, wie ich ich im HTTPMOD die http-Seite über attr schreiben kann.
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 27 Dezember 2018, 19:58:23
Du meinst weil ich HTTP nicht lesen kann -  kann ich HTTP schreiben?  ;D
Nee tut mir leid, da bin ich der Falsche.

Gruß Otto

BTW: heisst das nicht aextractALLJSON 1 ?
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Paul am 27 Dezember 2018, 20:15:20
Klar so heißt das  :) hab ich gestern in 10 Minuten rausgefunden.

Wollte von dir nur wissen wie man

http:www.xyz.de/<a><b>

In HTTPMOD

mit attr a=...
attr b=...

darstellt
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 27 Dezember 2018, 22:00:00
Hallo Paul,

deine Lösung mit dem TankerKoenig ist schon smart.

in Fhem:
Code: [Auswählen]

define Tanken HTTPMOD https://creativecommons.tankerkoenig.de/json/list.php?lat=<a>&lng=<b>&rad=<c>&sort=<D>&type=<e>&apikey=00000000-0000-0000-0000-000000000000 <f>


<a> lat    geographische Breite des Standortes
<b>lng    geographische Länge
<c>rad    Suchradius in km  (max. 25)
<d>type    Spritsorte    'e5', 'e10', 'diesel' oder 'all'
<e>sort    Sortierung    price, dist
<f> interval in Sekunden

Attribut setzen

Code: [Auswählen]

attr axtractALLJSON 1


Aber wie bekomme ich die Daten in ein filelog bzw. dblog, sodass ich die Daten abfragen kann, z.B. mit TelegramBot.
So eine Schablone, wie Otto sie erwähnt hat, für die Umsetzung in ein dblog wäre ganz tolle.

API hab ich schon geholt ;D, GPS Daten möchte ich entweder fest vorgeben :-[, besser noch den lokalen Standort verwenden ::).
Geht sowas. Es interessiert eigentlich nur Diesel. Mehr wünsche hab ich nicht  :) :) 8). Wenn es nicht geht, auch gut..
;D ;D

Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Christoph Morrison am 27 Dezember 2018, 22:30:21
Zitat von: UweUwe am 27 Dezember 2018, 22:00:00
API hab ich schon geholt ;D, GPS Daten möchte ich entweder fest vorgeben :-[, besser noch den lokalen Standort verwenden ::).
Geht sowas. Es interessiert eigentlich nur Diesel. Mehr wünsche hab ich nicht  :) :) 8). Wenn es nicht geht, auch gut..
;D ;D

Ich hab mir sowas gebaut: Positionsdaten kommen über Owntracks, Tankpreise über clever-tanken und das Auto aus einem eigenen Device (dummy mit ein paar Readings, insb. Treibstoffart). Schicke ich eine Nachricht mit "tanken" über den Telegram-Bot an mein FHEM, meldet FHEM die nächste Tankstelle mit dem günstigsten Preis mit Link auf Apple Maps/Google Maps.

Ich stelle die Lösung bei Gelegenheit mal vor, bzw. schreibe (schon eine Weile) an einem Modul dafür. Nächste Ausbaustufe wäre dann, dass FHEM gleich Routen berechnet und mir nicht die geographisch nächste, sondern die am schnellsten zu erreichende Tankstelle meldet.
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: martins am 27 Dezember 2018, 23:39:24
Bevor noch jemand ein Spritpreismonitor Modul programmiert ...
Modul-Fingerübung: Spritpreis
https://forum.fhem.de/index.php/topic,64610.0.html
https://github.com/pljakobs/fhem_spritpreis_module

Läuft seit "Jahren" ausgezeichnet stabil
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Beta-User am 28 Dezember 2018, 06:47:48
Zitat von: martins am 27 Dezember 2018, 23:39:24
Bevor noch jemand ein Spritpreismonitor Modul programmiert ...
Kein Modul, aber dafür vermutlich bald im svn: https://forum.fhem.de/index.php/topic,45176.0.html

Wenn jemand Anregungen hat, wie die templates ergänzt oder verbessert werden sollen/können: Her damit ;) .
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 28 Dezember 2018, 07:25:22
Hallo Christoph Morrisson ,

das ist doch genau das, was ich mir wünsche. Kannst du dies bitte mal darstellen, schicken?
Das wäre prima.

Uwe

Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: UweUwe am 17 Januar 2019, 17:37:32
Hallo Mathze,
zwischenzeitlich war ich anderweitig tätig, leider.
Jetzt habe ich mich um deinen Vorschlag gekümmert:
Zitatdazu benötigst du nicht viel.
Du brauchst zuerst einmal ein Notify oder Doif (je nachdem was dir mehr zusagt), mit welches du auf eingehende Telegram Nachrichten reagierst.

z.B.
Code: [Auswählen]

define getMessageTelegram notify Telegram:msgId:.* { checkMessage() }


Nun legst du in der 99_myUtils eine Routine an, wo du die eingehenden Nachrichten prüfst:

Hat prima geklammt, die Tele-Bot abfragen zu den Spritpreisen laufen nun problemlos für alle angemeldeten Nutzer.
Den Code hab ich auch verstanden, es ist von verstanden immer noch ein grosser Weg zu selbst generierter Code. Ist mir sehr klar.
Merci nochmals, werde auch noch dein 2.Beispiel mit dem Benzinpreisalarm näher betrachten.







Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: t1me2die am 18 Januar 2019, 08:58:58
Moin Uwe, dass freut mich, falls du Fragen hast oder irgendwas nicht verstehst, melde Dich einfach mit einem konkreten Beispiel, dann kann ich es Dir erklären.

Gruß
Mathze
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: FHEM-User22 am 05 April 2019, 16:39:32
Hallo,
ich habe folgende Fehlermeldung:
Unrecognized character \xC3; marked by <-- HERE after ritpreis f<-- HERE near column 66 at ./FHEM/99_myUtils.pm line 22.

Meine 99_myUtils.pm sieht folgendermassen aus:


sub checkMessage()
{
my $id = ReadingsVal("TelegramFS","msgPeerId","");
my $alias = ReadingsVal("TelegramFS","msgPeer","");
my $message = ReadingsVal("TelegramFS","msgText","");
my $Trebsen = ReadingsVal("TankeTrebsen","SuperE5","");
my $Globus = ReadingsVal("TankeGlobus","SuperE5","");

if ($message =~ /Sprit/)
        {
            fhem "set TelegramFS message \@$id " Der Spritpreis für Diesel beträgt: \n* Trebsen: $Trebsen€ \n* Globus: $Globus€";
        }
}


Wo könnte der Fehler sein?

Dankeschön
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 05 April 2019, 17:04:52
schreib mal fuer statt für  ;)
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: FHEM-User22 am 06 April 2019, 09:01:59
Dankeschön Otto,
aber nun:
ERROR:
Unrecognized character \xE2; marked by <-- HERE after : $Trebsen<-- HERE near column 108 at ./FHEM/99_myUtils.pm line 22.


sub checkMessage()
{
my $id = ReadingsVal("TelegramFS","msgPeerId","");
my $alias = ReadingsVal("TelegramFS","msgPeer","");
my $message = ReadingsVal("TelegramFS","msgText","");
my $Trebsen = ReadingsVal("TankeTrebsen","SuperE5","");
my $Globus = ReadingsVal("TankeGlobus","SuperE5","");

if ($message =~ /Sprit/)
        {
            fhem "set TelegramFS message \@$id " Der Spritpreis fuer Diesel betraegt: \n* Trebsen: $Trebsen€ \n* Globus: $Globus€";
        }
}


bin ratlos...

Liebe Grüße
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 06 April 2019, 10:21:09
Moin,

naja immer dasselbe Schema  ;D
Ich dachte Du schnallst es beim ersten  ;D
Es steht doch exakt im Text:
Unrecognized character \xE2; marked by <--
HERE after : $Trebsen<-- HERE ...

Was steht dort? Ein €

Dein Telegram oder wer auch immer auf dieser Reise kommt mit Sonderzeichen nicht klar. Vielleicht muss man die "schützen" bzw. "escapen" oder erstmal weglassen.
Eigentlich kann Perl an sich an der Stelle mit Sonderzeichen umgehen. Aber vielleicht ist irgendwo ein falscher Zeichensatz eingestellt oder so was.
Also lass erstmal alles an Sonderzeichen weg.

Gruß Otto
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: FHEM-User22 am 06 April 2019, 16:17:14
Oh Mann,
Du hast beim nächsten Treffen ein Bier gut.  ;D

Dennoch 2 weitere Fragen.
Wo muß/kann ich den Zeichensatz wohin umstellen?

Und das Ganze für zwei Nutzer mit verschiedenen Spritarten, geht das? Ich habs probiert, in die 99_myUtils.pm das Ganze 2 mal mit angepassten TelegrammDevices, da sendet er nichts mehr.

Dankeschön
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: amenomade am 06 April 2019, 17:42:01
Probier mit \x{20AC} statt €
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 07 April 2019, 19:00:22
Zitat von: FHEM-User22 am 06 April 2019, 16:17:14
Dennoch 2 weitere Fragen.
Wo muß/kann ich den Zeichensatz wohin umstellen?

Und das Ganze für zwei Nutzer mit verschiedenen Spritarten, geht das? Ich habs probiert, in die 99_myUtils.pm das Ganze 2 mal mit angepassten TelegrammDevices, da sendet er nichts mehr.
zur 1.
Ich bin mir noch nicht ganz sicher, wieso dieser Fehler auftritt. Ich kann bei mir durchaus Umlaute usw. verwenden.
Deswegen müsstest Du mal drei Stellen testen.
in der FHEM Kommandozeile
set irgendeinDummy Müller
set TelegramFS message ?? "Müller" (ich weiß nicht wie das mit Telegram wirklich geht, deswegen die ??)
in der 99_myUtils in einer Testsub
sub testmueller {fhem ("set irgendeinDummy Müller") }
Kommt der Perlfehler immer?

zur 2. da müsstes Du mal den Code posten, ich verstehe nicht, warum das nicht gehen soll.

Gruß Otto
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: FHEM-User22 am 08 April 2019, 16:35:11
Hallo Otto,

Zitat von: Otto123 am 07 April 2019, 19:00:22
zur 1.
Ich bin mir noch nicht ganz sicher, wieso dieser Fehler auftritt. Ich kann bei mir durchaus Umlaute usw. verwenden.
Bei der Neuinstallation (auf Proxmox):
# Konfigurieren lokale Sprache deutsch
sudo sed -i -e 's/# de_DE.UTF-8 UTF-8/de_DE.UTF-8 UTF-8/' /etc/locale.gen
sudo locale-gen
sudo localectl set-locale LANG=de_DE.UTF-8 LANGUAGE=de_DE

soll ich hier irgend was anderes eintagen?

Zitat von: Otto123 am 07 April 2019, 19:00:22
Deswegen müsstest Du mal drei Stellen testen.
in der FHEM Kommandozeile
set irgendeinDummy Müller

Ich kann einen Dummy "Lampe02" auf "Müller" schalten. Das klappt.

Zitat von: Otto123 am 07 April 2019, 19:00:22
set TelegramFS message ?? "Müller" (ich weiß nicht wie das mit Telegram wirklich geht, deswegen die ??)

set TelegramFS message Müller

kommt an. Passt auch.

Zitat von: Otto123 am 07 April 2019, 19:00:22
in der 99_myUtils in einer Testsub
sub testmueller {fhem ("set irgendeinDummy Müller") }
Kommt der Perlfehler immer?

sub testmueller {fhem ("set Lampe02 Müller") }


geht ohne Fehler

Gaaaaanz seltsam, jetzt kann ich in der 99_myUtils plötzlich € eingeben und es werden keine Fehler angezeigt.
Ob das €-Zeichen durch PlugandPlay "verwurschtelt" war? Jetzt habe ich es über Tastatur eingegeben.
Auch "beträgt" macht keine Fehler mehr.
Ich habe sonst nichts geändert!

Zitat von: Otto123 am 07 April 2019, 19:00:22
zur 2. da müsstes Du mal den Code posten, ich verstehe nicht, warum das nicht gehen soll.
Das mache nachher...

Dankeschön aus Grimma
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: FHEM-User22 am 08 April 2019, 17:03:17
Hallo nochmal,

Zitat von: Otto123 am 07 April 2019, 19:00:22
zur 2. da müsstes Du mal den Code posten, ich verstehe nicht, warum das nicht gehen soll.

Es wird immer seltsamer, jetzt habe ich alles 2 mal (Für 2 Telegramme) angelegt, und siehe da, es klappt. Ich weiss nicht, was gestern los war. Jetzt klappt alles.

Supi, Freu.

Jetzt nur noch 2 Wünsche.... schnellwechduck....

Spritpreise im Telegram auf 2 Stellen runden, die 0,009 bleibt ja meist gleich.

und in der 99_myUtils:

my $id = ReadingsVal("TelegramFS","msgPeerId","");
my $alias = ReadingsVal("TelegramFS","msgPeer","");
my $message = ReadingsVal("TelegramFS","msgText","");
my $Trebsen = ReadingsVal("TankeTrebsen","SuperE5","");
my $TankeAralGrimmaAB = ReadingsVal("TankeAralGrimmaAB","SuperE5","");
my $TankeStarNHF = ReadingsVal("TankeStarNHF","SuperE5","");
my $Globus = ReadingsVal("TankeGlobus","SuperE5","");

if ($message =~ /Sprit/)
        {
            fhem "set TelegramFS message \@$id Der Spritpreis fuer Super beträgt: \n* Trebsen: $Trebsen € \n* ARAL oben: $TankeAralGrimmaAB € \n* Star NHF: $TankeStarNHF € \n* Globus: $Globus €";


Könnte man das zusammenfassen, also nur eine Zeile mit "Tanke*" nötig ist und natürlich beim Ausdruck der Telegramzeile den Devicenamen?

Ansonsten Alles Super! Dankeschön für Eure Hilfen.

Grüße aus Grimma
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 08 April 2019, 18:59:27
Hi,

runden: https://forum.fhem.de/index.php/topic,98746.msg928246.html#msg928246  ;)

Gruß Otto
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 25 April 2019, 10:09:53
Ich bekomme seit ein paar Tagen bei Clever-tanken immer nur noch eine Fehlermeldung:

"Read response to Update didn't match any Reading(s)"

Hat das auch einer? Oder hat einer viell. eine Idee?

Der Spritpreismonitor ist wie im Wiki definiert, z.B. "SHELL"  https://wiki.fhem.de/wiki/Spritpreismonitor
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: yersinia am 25 April 2019, 10:37:31
Schau mal hier, da ist ein neuer Thread aufgemacht worden: https://forum.fhem.de/index.php/topic,99939.msg933292.html#msg933292
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 25 April 2019, 11:12:32
Danke, das habe ich jetzt gerade auch gesehen. Ich habe auch ein zusätzlichen Monitor, den ich nach Vorgabe von Matze aus Antwort #1 in diesem Thread eingerichtet habe,
wenn ich die Änderungen so mache, wie in https://forum.fhem.de/index.php/topic,99939.msg933292.html#msg933292 vorgeschlagen,
bekomme ichtrotzdem keine Readings :-(
Der link und meine RegEx wie bei Matze aus Antwort #1

https://www.clever-tanken.de/tankstelle_liste?spritsorte=7&r=10&lat=47.875943&lon=10.550710 1200

attr $device reading01Name Tankstellenname ;
                attr $device reading01Regex <div class=\"row fuel-station-location-name\">(.*)<\\/div> ;
                attr $device reading01RegOpt g ;
                attr $device reading02Name Preis ;
                attr $device reading02Regex <div class=\"price\">(.*)<sup> ;
                attr $device reading02RegOpt g ;
                attr $device reading03Name Strasse ;
                attr $device reading03Regex <div id=\"fuel-station-location-street\">(.*)<\\/div> ;
                attr $device reading03RegOpt g ;
                attr $device reading04Name Ort ;
                attr $device reading04Regex <div id=\"fuel-station-location-city\"> (.*)<\\/div> ;       
                attr $device reading04RegOpt g ;
                attr $device reading05Name Entfernung ;
                attr $device reading05Regex <div >(.*)<\\/div> ;
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: yersinia am 25 April 2019, 11:55:29
Clever Tanken hat seine Webseite umgestellt, versuche mal folgendes (ohne Gewähr):
attr $device reading01Regex <span class=\"fuel-station-location-name\">(.*)<\\/span> ;
attr $device reading02Regex <div class=\"price-text price text-color-ct-blue\">(?>\s*)(\d.*)<sup> ;
attr $device reading03Regex <div class=\"fuel-station-location-street\">(.*)<\\/div> ;
attr $device reading04Regex <div class=\"fuel-station-location-city\"> (.*)<\\/div> ;
attr $device reading05Regex <span class=\"fuel-station-location-distance d-flex justify-content-end\">(?>\s*)<span>(\d.\d) ;

(getestet mit https://regex101.com/)
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 25 April 2019, 13:14:38
Danke Danke, Preis und Distanz gehen schon wieder, aber fuel-station-location-name, fuel-station-location-street, und fuel-station-location-city liefern noch keine Readings. Wie kann ich das debuggen?
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: yersinia am 25 April 2019, 13:54:36
Debuggen geht indem du deinen clever-tanken Link (https://www.clever-tanken.de/tankstelle_liste?spritsorte=7&r=10&lat=47.875943&lon=10.550710) öffnest, Quelltext anzeigen lässt und diesen dann in das Textfeld auf https://regex101.com (https://regex101.com) kopierst. Das RegEx kommt in die Eingabezeile ganz oben und rechts siehst du das Ergebnis.

Allerdings bekomme ich Werte für
geliefert.
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 25 April 2019, 15:18:52
DANKE, jetzt gehts, Du hast mich in die richtige Richtung geschubst!
Mein Beitrag in Antwort#18 habe ich dann auch gleich korrigiert!
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 25 April 2019, 15:27:13
Ich schalte mal noch den Querverweis
https://forum.fhem.de/index.php/topic,99939.0.html
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 16 Mai 2019, 11:14:35
Aus dem Post von yersinia Antwort #46:
ZitatClever Tanken hat seine Webseite umgestellt, versuche mal folgendes (ohne Gewähr):
Code: [Auswählen]
attr $device reading01Regex <span class=\"fuel-station-location-name\">(.*)<\\/span> ;
attr $device reading02Regex <div class=\"price-text price text-color-ct-blue\">(?>\s*)(\d.*)<sup> ;
attr $device reading03Regex <div class=\"fuel-station-location-street\">(.*)<\\/div> ;
attr $device reading04Regex <div class=\"fuel-station-location-city\"> (.*)<\\/div> ;
attr $device reading05Regex <span class=\"fuel-station-location-distance d-flex justify-content-end\">(?>\s*)<span>(\d.\d) ;
(getestet mit https://regex101.com/)

Clever Tanken hat seine Webseite schon wieder umgestellt, das letzte Regex muss jetzt wie folgt geändert werden, also 'span' -> 'div':
attr $device reading05Regex <div class=\"fuel-station-location-distance d-flex justify-content-end\">(?>\s*)<span>(\d.\d) ;
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: thgorjup am 16 Mai 2019, 12:47:27
Ich verwende jetzt mehr-tanken.de. Hier am Beispiel mit "63150+Heusenstamm". Müsst ihr natürlich ändern.


define AGIPBenzinpreis HTTPMOD https://mehr-tanken.de/tankstellen?searchText=63150+Heusenstamm&brand=1&fuel=2 3600
attr AGIPBenzinpreis userattr readingsName_SuperE5 readingsRegex_SuperE5
attr AGIPBenzinpreis readingsName_SuperE5 SuperE5
attr AGIPBenzinpreis readingsRegex_SuperE5 <span class="PriceList__itemPrice h1">[^0-9]+([0-9\.]+)
attr AGIPBenzinpreis room 10_Draußen
attr AGIPBenzinpreis stateFormat Preis: SuperE5 €
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Otto123 am 16 Mai 2019, 13:00:00
Die Variante von hier  (https://forum.fhem.de/index.php/topic,99939.msg933304.html#msg933304)funktioniert nach wie vor  :D
Titel: Antw:[Gelöst] Spritpreise und www.clever-tanken.de
Beitrag von: Jamo am 16 Mai 2019, 15:17:14
Ja, ich habe aber einen Monitor nach Vorgabe von Matze aus Antwort #1 in diesem Thread eingerichtet, der andere RegEx.
Ich benutze Lat/Lon um mir die Spritpreise in Abhängigkeit von meiner Parkposition anzuzeigen.