Hallo,
ich rufe Spritpreise über Clever-Tanken.de ab und lasse sie mir anzeigen.
Jetzt würde ich gerne die Preise in einem SVG-Plot in Fhem bzw. in einem SVG-Widget in FTUI darstellen.
Dazu müsste ich die Daten aus dem Log auslesen. Und jetzt kommen wir zum Problem. Es gibt keine Daten der Tankstellen im Log.
Weder im Log spezifisch zu dem Device, noch im Fhem-Log. Wo ist mein Denkfehler?
Hier das List des Tankstellen-Device:
Internals:
.Content-Type text/html; charset=utf-8
.FhemMetaInternals 1
.LASTSEND 1621768877.61884
.LastUpdate 1621768877.61806
.TRIGGERTIME 1621769777.61806
.bodyCharset utf-8
.getList
.setList interval reread:noArg stop:noArg start:noArg clearCookies:noArg upgradeAttributes:noArg storeKeyValue
.updateRequestHash 1
BUSY 0
DEF https://www.clever-tanken.de/tankstelle_details/13224 900
FUUID 5fc17b0d-f33f-793a-2743-3e233c699f08851a
FVERSION 98_HTTPMOD.pm:0.241850/2021-04-08
Interval 900
MainURL https://www.clever-tanken.de/tankstelle_details/13224
ModuleVersion 4.1.08 - 1.4.2021
NAME Tankstelle_Kuttenkeuler
NOTIFYDEV global
NR 32
NTFY_ORDER 50-Tankstelle_Kuttenkeuler
STATE <br/> Super_E5: 1.539 € <br/> Super_E10: 1.479 € <br/> Super_Plus: 1.619 € <br/> <br/> Dieselsprit : 1.279 € <br/>
TYPE HTTPMOD
value
.attraggr:
.attreocr:
.*
.attrminint:
.attrtocr:
.*
.readingParseList:
01
02
03
04
05
06
07
08
09
CompiledRegexes:
HTTPCookieHash:
csrftoken;:
Name csrftoken
Options expires=Sun, 22-May-2022 11:21:20 GMT; Max-Age=31449600; Path=/
Path
Value YLbmiesj185o8tNxTjfS5c1H4cY2TOw6jF8CzM1z8tw4h7MFkLE2G2mBbQjaODX4
HttpUtils:
NAME
addr https://www.clever-tanken.de:443
auth 0
buf
code 200
compress 1
conn
data
displayurl https://www.clever-tanken.de/tankstelle_details/13224
header Cookie: csrftoken=YLbmiesj185o8tNxTjfS5c1H4cY2TOw6jF8CzM1z8tw4h7MFkLE2G2mBbQjaODX4
host www.clever-tanken.de
httpheader HTTP/1.1 200 OK
Date: Sun, 23 May 2021 11:21:20 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Cookie,Accept-Encoding
Content-Encoding: gzip
Content-Length: 36873
Content-Type: text/html; charset=utf-8
Set-Cookie: csrftoken=YLbmiesj185o8tNxTjfS5c1H4cY2TOw6jF8CzM1z8tw4h7MFkLE2G2mBbQjaODX4; expires=Sun, 22-May-2022 11:21:20 GMT; Max-Age=31449600; Path=/
Connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /tankstelle_details/13224
protocol https
redirects 0
timeout 10
url https://www.clever-tanken.de/tankstelle_details/13224
sslargs:
QUEUE:
READINGS:
2021-05-23 13:21:17 Aktualisierung 23.05.2021 13:21
2021-05-23 13:21:17 Diesel 1.279
2021-05-16 11:21:27 Name bft
2021-05-16 11:21:27 Ort Heinsberg
2021-05-16 11:21:27 PLZ 52525
2021-05-16 11:21:27 Strasse Boos-Fremery-Str. 73
2020-10-01 17:30:20 Super Plus 1.389
2021-05-23 12:51:17 SuperE10 1.479
2021-05-23 12:51:17 SuperE5 1.539
2021-05-23 12:51:17 SuperPlus 1.619
2020-08-30 22:22:24 attrTemplateVersion 20200522 or prior
REQUEST:
context reading
data
header
ignoreredirects 0
num unknown
retryCount 0
type update
url https://www.clever-tanken.de/tankstelle_details/13224
defptr:
readingBase:
Aktualisierung reading
Diesel reading
Name reading
Ort reading
PLZ reading
Strasse reading
SuperE10 reading
SuperE5 reading
SuperPlus reading
readingNum:
Aktualisierung 09
Diesel 01
Name 05
Ort 08
PLZ 07
Strasse 06
SuperE10 02
SuperE5 03
SuperPlus 04
readingOutdated:
requestReadings:
update:
Aktualisierung reading 09
Diesel reading 01
Name reading 05
Ort reading 08
PLZ reading 07
Strasse reading 06
SuperE10 reading 02
SuperE5 reading 03
SuperPlus reading 04
Attributes:
alias Tankstele Kuttenkeuler
enableControlSet 1
event-on-change-reading .*
group Spritpreise
icon fuel
model clever_tanken_single_station
reading01Name Diesel
reading01Regex <div class=\"price-type-name\">Diesel</div>[\S\s\r\n]*?<span id=\"current-price-\d+\">(\d.\d{2}</span>[\S\s\r\n]*?<sup id=\"suffix-price-\d\">[\d]+)</sup>
reading02Name SuperE10
reading02Regex <div class=\"price-type-name\">Super E10</div>[\S\s\r\n]*?<span id=\"current-price-\d+\">(\d.\d{2}</span>[\S\s\r\n]*?<sup id=\"suffix-price-\d\">[\d]+)</sup>
reading03Name SuperE5
reading03Regex <div class=\"price-type-name\">Super E5</div>[\S\s\r\n]*?<span id="current-price-\d+">(\d.\d{2}</span>[\S\s\r\n]*?<sup id=\"suffix-price-\d\">[\d]+)</sup>
reading04Name SuperPlus
reading04Regex <div class=\"price-type-name\">SuperPlus</div>[\S\s\r\n]*?<span id="current-price-\d+">(\d.\d{2}</span>[\S\s\r\n]*?<sup id=\"suffix-price-\d\">[\d]+)</sup>
reading05Name Name
reading05Regex <span class="strong-title" itemprop="name">(.*)</span>
reading06Name Strasse
reading06Regex <span itemprop="streetAddress">(.*)</span>
reading07Name PLZ
reading07Regex <span itemprop="http://schema.org/postalCode">(.*)</span>
reading08Name Ort
reading08Regex <span itemprop="http://schema.org/addressCountry">(.*)</span>
reading09Name Aktualisierung
reading09Regex <span>Letzte Aktualisierung: (.*)</span>
readingOExpr $val =~ s/<[\d\D]+>//;;$val
room Information->Tankstellen
stateFormat <br/> Super_E5: SuperE5 € <br/> Super_E10: SuperE10 € <br/> Super_Plus: SuperPlus € <br/> <br/> Dieselsprit : Diesel € <br/>
timeout 10
timestamp-on-change-reading .*
verbose 4
Und hier das zugehörige FileLog-Device:
Internals:
.FhemMetaInternals 1
DEF ./log/FileLog_Tankstelle_Kuttenkeuler-%Y-%m-%d.log Tankstelle_Kuttenkeuler
FD 54
FUUID 60a81471-f33f-793a-2424-cb2e8c6985d84751
FVERSION 92_FileLog.pm:0.237510/2021-02-16
NAME FileLog_Tankstelle_Kuttenkeuler
NOTIFYDEV Tankstelle_Kuttenkeuler
NR 291
NTFY_ORDER 50-FileLog_Tankstelle_Kuttenkeuler
REGEXP Tankstelle_Kuttenkeuler
STATE active
TYPE FileLog
currentlogfile ./log/FileLog_Tankstelle_Kuttenkeuler-2021-05-23.log
logfile ./log/FileLog_Tankstelle_Kuttenkeuler-%Y-%m-%d.log
READINGS:
2021-05-23 13:21:17 linesInTheFile 37
Attributes:
alias Tankstelle Kuttenkeuler
archivedir ./log/archiv/anwesenheit/
group Tankstellen
logtype text
nrarchive 4
room Logging
Du solltest zum Erstellen von Event-Handlern (wie FileLog) den Event-Monitor nutzen.
Falls du "alles" loggen willst, fehlt hinter "Tankstelle_Kuttenkeuler" noch ":.*", also zusammen:Tankstelle_Kuttenkeuler:.*
Um ein Gefühl für die regexp zu bekommen, kannst du auch die "filter"-Funktion im Event-Monitor nehmen, und dann mal schauen, welche Ausdrücke sich wie auswirken.
Hilfsmittelempfehlung: regex101.com (und die Perl-Funktion "notifyRegexpCheck()" in FHEM zur Kontrolle, ob es für FHEM nicht zu tiefergelegt ist).
ZitatEs gibt keine Daten der Tankstellen im Log
Zitat2021-05-23 13:21:17 linesInTheFile 37
... es logged doch. Was steht den drin in Deinem Log?
Das Log ist definiert, das täglich ein neues angelegt wird. Würde ich auf wöchentlich umstellen. Ist aber abhängig davon, was Du mit den Daten dann erreichen willst.
Also schau mal nach, was drin steht (oder poste das hier)
ZitatFalls du "alles" loggen willst, fehlt hinter "Tankstelle_Kuttenkeuler" noch ":.*", also zusammen:
das brauchts eigentlich nicht. Bsp. aus der cRef: define lamplog FileLog %L/lamp.log lamp
Ich habe die meisten Logs bei mir so definiert, da ich in den Devices die Events begrenze.