Hallo zusammen,
irgendwie bin ich zu doof um die Spritpreise von meiner Lieblingstanke in FHEM zu intergrieren. Was ich gemacht habe ist folgendes:
attr Jet userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex readingOExpr
attr Jet enableControlSet 1
attr Jet reading01Name Diesel
attr Jet reading01Regex Diesel [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
attr Jet reading02Name SuperE10
attr Jet reading02Regex Super E10 [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
attr Jet reading03Name SuperE5
attr Jet reading03Regex Super E5 [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
attr Jet readingOExpr $val =~ s/<[\d\D]+>//;;$val
attr Jet stateFormat E5: SuperE5 € / E10: SuperE10 € / D: Diesel €
attr Jet timeout 10
attr Jet verbose 2
attr Jet model clever_tanken_single_station
Spritpreise bekomme ich keine angezeigt.
Das ist das Listing meines Device Jet:
Internals:
BUSY 0
CFGFN
DEF https://www.clever-tanken.de/tankstelle_details/5060 600
FUUID 5e97f5b6-f33f-65e3-d668-46e3cedac0c35c68
Interval 600
LASTSEND 1587017896.71426
MainURL https://www.clever-tanken.de/tankstelle_details/5060
ModuleVersion 3.5.22 - 7.2.2020
NAME Jet
NOTIFYDEV global
NR 245
NTFY_ORDER 50-Jet
STATE E5: SuperE5 € / E10: SuperE10 € / D: Diesel €
TRIGGERTIME 1587018500.78604
TRIGGERTIME_FMT 2020-04-16 08:28: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_details/5060
header Cookie: csrftoken=1I9pFkc7zvUzlYKLAoYKFWpD5mtxmIXMOgB1jw5hI0nWyXmY6hFk9Mt9udGBR3Fs
host www.clever-tanken.de
httpheader HTTP/1.1 200 OK
Date: Thu, 16 Apr 2020 06:18:16 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Cookie,Accept-Encoding
Content-Encoding: gzip
Content-Length: 24338
Content-Type: text/html; charset=utf-8
Set-Cookie: csrftoken=1I9pFkc7zvUzlYKLAoYKFWpD5mtxmIXMOgB1jw5hI0nWyXmY6hFk9Mt9udGBR3Fs; expires=Thu, 15-Apr-2021 06:18:16 GMT; Max-Age=31449600; Path=/
Connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 4
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /tankstelle_details/5060
protocol https
redirects 0
timeout 10
url https://www.clever-tanken.de/tankstelle_details/5060
value 0
CompiledRegexes:
HTTPCookieHash:
csrftoken;:
Name csrftoken
Options expires=Thu, 15-Apr-2021 06:18:16 GMT; Max-Age=31449600; Path=/
Path
Value 1I9pFkc7zvUzlYKLAoYKFWpD5mtxmIXMOgB1jw5hI0nWyXmY6hFk9Mt9udGBR3Fs
QUEUE:
READINGS:
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url https://www.clever-tanken.de/tankstelle_details/5060
value 0
sslargs:
Attributes:
enableControlSet 1
model clever_tanken_single_station
reading01Name Diesel
reading01Regex Diesel [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
reading02Name SuperE10
reading02Regex Super E10 [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
reading03Name SuperE5
reading03Regex Super E5 [\S\s\r\n]*?(\d.\d{2}[\S\s\r\n]*?[\d]+)
readingOExpr $val =~ s/<[\d\D]+>//;$val
room Tankstelle
stateFormat E5: SuperE5 € / E10: SuperE10 € / D: Diesel €
timeout 10
userattr 1 Jet attr enableControlSet reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex readingOExpr
verbose 2
Was mach ich denn falsch? Das war doch früher gefühlt bei meiner ersten Fhem Installation kein Problem. Würdet ihr mir bitte weiterhelfen ? Das wäre super nett. Ich weiss nicht was ich machen muss. Vielen Dank für eure Hilfe im Voraus.
Grüße
sxx128
reading01Regex "current-price-1">(\d.\d{2})
z.B für Diesel sollte das Problem lösen....
Alternativ:
FHEM uptodate ! und folgenden Code für die Raw Definition
define TankeTest HTTPMOD https://www.clever-tanken.de/tankstelle_details/5060 600
sleep 1
set TankeTest attrTemplate clever_tanken_single_station
sleep 2
set TankeTest reread
Ob man die sleep dazwischen wirklich braucht weiß ich nicht, wenn man jede Zeile einzeln ausführt nicht :)
Gruß Otto
Hast du diesen Thread auch schon durchgelesen: https://forum.fhem.de/index.php/topic,99939.msg979341.html#msg979341
Zitat von: Otto123 am 16 April 2020, 09:47:10
Alternativ:
FHEM uptodate ! und folgenden Code für die Raw Definition
define TankeTest HTTPMOD https://www.clever-tanken.de/tankstelle_details/5060 600
sleep 1
set TankeTest attrTemplate clever_tanken_single_station
sleep 2
set TankeTest reread
Ob man die sleep dazwischen wirklich braucht weiß ich nicht, wenn man jede Zeile einzeln ausführt nicht :)
Gruß Otto
So hat es sofort funktioniert. Was ist denn jetzt der Unterschiedd? Kannst du mir das erklären.
Grüße
und vielen Dank
sxx128
Naja in dem aktuellen Template sind die aktuell richtigen Regex in den Readings hinterlegt. Die Webseiten ändern sich ja leider immer mal und man muss die eigene DEF anpassen. Dank attrTemplate kannst Du das leicht übernehmen was andere vorgedacht haben :)
Könnte mann diese Prozedure mit attrTemplate und reread nicht automatisieren ? Denn das ist schon mühsam.
Wieso ist das mühsam? Es geht ja nur um die einmalige Definition eines Gerätes bzw. um die Anpassung bei Änderung.
Das reread in dem Fall war doch nur damit es sofort sichtbar ist.
Oder meinst Du: die Tankstellenseite ändert sich, jemand passt das Template an und beim nächsten update von FHEM werden auch alle Geräte mit Templates automatisch angefasst?
Naja seit Monaten wurde meine Spritinfo nicht aktualisiert bis ich auf diesen Threat stieß. Meine Definition an sich bestand schon ewig und ging bis dato auch.
Zitat von: en-trust am 16 April 2020, 13:21:56
Naja seit Monaten wurde meine Spritinfo nicht aktualisiert bis ich auf diesen Threat stieß. Meine Definition an sich bestand schon ewig und ging bis dato auch.
Es gibt leider nie die Garantie, dass eine API stabil bleibt, insbesondere nicht wenn man nicht für deren Nutzung zahlt. Twilight, Buienradar und andere Module haben das ja auch erlebt.