Hauptmenü

Eintrag in Log

Begonnen von Superposchi, 23 Mai 2021, 13:28:50

Vorheriges Thema - Nächstes Thema

Superposchi

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

Beta-User

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).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Sany

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.
fhem als LXC auf Proxmox auf einem minix Z100 , weitere LXC mit ZigBee2MQTT, MariaDB und Grafana. Homematic, FS20, mySensors, MQTT2, Tasmota, Shelly, Z-Wave  ....