Guten Tag,
die Konfig wurde nicht verändert, dennoch liefern 2 FHEMs seit 2019.04.23 11:46:40 keine Benzinpreise mehr. Im Log steht "tanken_GG_StarGinsheim: Read response to update didn't match any Reading!" für alle Tankstellen.
Eingebunden, wie in der Anleitung beschrieben:
defmod tanken_GG_StarGinsheim HTTPMOD http://www.clever-tanken.de/tankstelle_details/3973 300
attr tanken_GG_StarGinsheim userattr icon reading01Name reading01OExpr reading01Regex reading02Name reading02Regex stateFormat timeout
attr tanken_GG_StarGinsheim enableControlSet 1
attr tanken_GG_StarGinsheim event-min-interval SuperE5:14400
attr tanken_GG_StarGinsheim event-on-change-reading SuperE5
attr tanken_GG_StarGinsheim group Spritpreise
attr tanken_GG_StarGinsheim reading01Name SuperE5
attr tanken_GG_StarGinsheim reading01OExpr $val + 0.009
attr tanken_GG_StarGinsheim reading01Regex <span>Super E5</span>[^0-9]+([0-9\.]+)
attr tanken_GG_StarGinsheim room 0_Umwelt_u_Infos,hidden
attr tanken_GG_StarGinsheim stateFormat Liter E5: SuperE5
attr tanken_GG_StarGinsheim timeout 10
setstate tanken_GG_StarGinsheim Liter E5: 1.479
setstate tanken_GG_StarGinsheim 2019-04-24 09:46:59 SuperE5 1.479
Ein Update von FHEM bringt keine Besserung.
Bin ich der einzige, bei dem dieses auftritt?
Gruß
Manuel
Hallo,
bist nicht der einzige. Bei mir war die letzte Aktualisierung am 24.04. 9:45 Uhr. Seitdem geht es bei mir auch nicht mehr.
Gruß
Ronny
Gesendet von iPhone mit Tapatalk
Bei mir ist das auch so. Letzter Eintrag:
Zitat2019-04-24_09:46:39 Ratio Diesel: 1.31
2019-04-24_09:46:39 Ratio SuperE5: 1.50
2019-04-24_09:46:52 AralW Diesel: 1.33
2019-04-24_09:46:52 AralW SuperE5: 1.52
2019-04-24_09:46:52 Q1SWS Diesel: 1.25
2019-04-24_09:46:52 Q1SWS SuperE5: 1.42
Auszug aus der logdatei:
Zitat2019.04.25 10:05:10 3: Ratio: Read callback: Error: read from https://www.clever-tanken.de:443 timed out
2019.04.25 10:05:20 3: Q1SWS: Read response to update didn't match any Reading
2019.04.25 10:05:20 3: AralW: Read response to update didn't match any Reading
Ich habe keine Ahnung warum.
Gruß Bracew
Die Webseite von https://www.clever-tanken.de wurde aktualisiert und nun stimmen die RegEx für die Readings nicht mehr.
Habe soeben einen neuen für Super E5 ermittelt:
attr HEM reading01Regex "current-price-3">(\d.\d{2})
Das wäre Super E10:
attr HEM reading02Regex "current-price-2">(\d.\d{2})
Diesel:
attr HEM reading03Regex "current-price-1">(\d.\d{2})
Super Plus:
attr HEM reading04Regex "current-price-4">(\d.\d{2})
Gruß
Dan
EDIT: RegEx nochmal gekürzt.
Funktioniert.
Danke!
Sehe ich genauso. Vielen Dank für die superschnelle Lösung.
Persönliche Frage am Schluss: Wie und wo kann ich RegEx lernen? Blicke da nicht durch :(
Zitat von: juniorfux94 am 25 April 2019, 11:32:32
Sehe ich genauso. Vielen Dank für die superschnelle Lösung.
Persönliche Frage am Schluss: Wie und wo kann ich RegEx lernen? Blicke da nicht durch :(
Gerne!
Ich habe es damit gelernt: https://regexone.com
Und testen tue ich im Vorfeld meist damit: https://www.regextester.com
Gruß
Dan
Zitat von: DeeSPe am 25 April 2019, 10:41:32
Die Webseite von https://www.clever-tanken.de wurde aktualisiert und nun stimmen die RegEx für die Readings nicht mehr.
Die RegExp stimmen so nicht in jedem Fall. current-price sortiert die Sorten durch, aber nicht in jedem Fall gibt es vier Sorten oder die dritte Sorte ist Super.
Hier ein Beispiel: https://www.clever-tanken.de/tankstelle_details/27535 - bietet SuperE5 und Diesel an, Diesel ist current-price-1 und Super ist current-price-2, was nicht mit Deinen RegExps übereinstimmt...
Ciao, -MN
Zitat von: Morgennebel am 25 April 2019, 13:54:14
Die RegExp stimmen so nicht in jedem Fall. current-price sortiert die Sorten durch, aber nicht in jedem Fall gibt es vier Sorten oder die dritte Sorte ist Super.
Hier ein Beispiel: https://www.clever-tanken.de/tankstelle_details/27535 - bietet SuperE5 und Diesel an, Diesel ist current-price-1 und Super ist current-price-2, was nicht mit Deinen RegExps übereinstimmt...
Ciao, -MN
Bitte entschuldige dass mir das durchgerutscht ist weil ich nicht alle Tankstellen durchgetestet habe.
Bei allen Tankstellen die 4 Sorten Sprit anbieten, scheinen meine RegEx aber zu stimmen.
Gruß
Dan
Ja, das sollte auch keine Beschwerde sein - Entschuldige...
Ich wollte nur darauf hinweisen, daß man bei den kleineren Tanken die RegExps anpassen sollte...
Danke für Deine Mühe,
Ciao, -MN
Danke Dan :)
Otto
Zitat von: DeeSPe am 25 April 2019, 14:00:12Bitte entschuldige dass mir das durchgerutscht ist weil ich nicht alle Tankstellen durchgetestet habe.
Bei allen Tankstellen die 4 Sorten Sprit anbieten, scheinen meine RegEx aber zu stimmen.
Danke Dan für deine schnelle Arbeit. Cool.
Eine Anmerkung generell: es ist schwierig die Kraftstoffsorten sauber herauszufiltern. Allerdings ist die Sortierung bei Clever Tanken mMn trivial: erste Kraftstoffesorte (von oben) ist 1, die zweite 2 usw. Demnach kann man, wie Morgennebel schon richtigerweise schreibt, dann auch
current-price-n anpassen.
In diesem Beispiel (https://www.clever-tanken.de/tankstelle_details/15579) ist
Diesel -> current-price-1
Super E10 -> current-price-2
Super E5 -> current-price-3
ARAL Ultimate 102 -> current-price-4
ARAL Ultimate Diesel -> current-price-5
Wie sieht die RegEx für die Abfrage aus, wenn der Spritpreis mit 3 Nachkommastellen angezeigt werden soll?
attr Tankstelle_ARAL_Hagsfeld reading02OExpr $val + 0.009
Danke :)
Think i have to improve my regex knowing...
Zitat von: RappaSan am 26 April 2019, 09:55:19
Danke :)
Think i have to improve my regex knowing...
Ich hab das auch mal nur irgendwo "geklaut"
Wenn man es "richtig" machen wollte müsste man den Suffix auch von der Webseite extrahieren.
<div class="price-field">
<span id="current-price-1">1.30</span>
<sup id="suffix-price-1">9</sup>
Da es aber idR eh immer die 9 hinten ist reicht mir der einfache Weg das einfach zu addieren.
Hier gibt es auch eine Tankstelle mit x.xx8 beim Preis.
Hier meine Regex für Preis mit Zehntel Cent.
attr Tankstelle_X reading01Name Diesel
attr Tankstelle_X reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Tankstelle_X reading02Name SuperE10
attr Tankstelle_X reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Tankstelle_X reading03Name SuperE5
attr Tankstelle_X reading03Regex "price-type-name">Super E5</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Tankstelle_X readingOExpr $val =~ s/<[\d\D]+>//;;$val
ich lese mit, 24.04.2019, 08:57 war das letzte reading.
Gruß Peter
die Zuordnung zu "current-price-x" mag funktionieren, ich wollte aber eine eindeutige, an die Benzinsorte ("price-type-name") gekoppelte Abfrage.
Am Beispiel von Super E10 verwende ich folgenden regulären Ausdruck:
<div class="price-type-name">Super E10</div>[\S\s\r\n]*?<span id="current-price-\d+">(\d.\d{2})</span>
Gesucht wir zunächst die Sorte Super E10
"price-type-name">Super E10</div>
Dann werden mehrere Zeilen (nicht gierig -> "?") übersprungen. Die Zeilenendeabfrage wurde so gewählt, dass sie für Unix und Windows HTML-files funktioniert:
([\S\s\r\n]*?)
Schließlich kommt der Preis, dieser Teil der Abfrage ist für alle Sorten gleich:
<span id="current-price-\d+">(\d.\d{2})</span>
Grüße
James
Hallo stromer-12,
braucht man dieses Atrribut zwingend, wenn man Zehntel Centbeträge anzeigen will?
attr Tankstelle_X readingOExpr $val =~ s/<[\d\D]+>//;;$val
Hallo James,
zeigt deine Variante Zehntel Centbeträge ohne das o.g. Atrribut an?
Was mich schon wieder verwirrt, ist der Umstand, dass es 2 Lösungen für ein Problem gibt. Welche Abfrage geht schneller und ist resourcenschonender?
Viele Grüße Gisbert
Hallo Gisbert,
Zitat von: Gisbert am 27 April 2019, 10:14:01zeigt deine Variante Zehntel Centbeträge ohne das o.g. Atrribut an?
Mit dem Attribut lösche ich die Textpassage zwischen den Cent und ZehntelCent Betrag.
Zitat von: Gisbert am 27 April 2019, 10:14:01
Was mich schon wieder verwirrt, ist der Umstand, dass es 2 Lösungen für ein Problem gibt. Welche Abfrage geht schneller und ist resourcenschonender?
Ich hatte erstmal nach einer schnellen Lösung gesucht, ohne Optimierung.
Gruß
Hallo Gisbert,
Zitatzeigt deine Variante Zehntel Centbeträge ohne das o.g. Atrribut an?
Meine Lösung bezieht sich nicht auf die Anzeige von Zehntel-Cent Beträgen, sondern ist vielmehr ein Verbesserungsvorschlag zur generellen Lösung im Wiki nach dem die clever-tanken Seitenstruktur am 24.4.19 geändert wurden.
Die Lösung, die du suchst, hat dir stromer-12 schon geboten.
Er verfolgt prinzipiell einen ähnlichen Ansatz wie ich, nur filtert er die Zeilen zwischen Spritsorte und Preis anders
[\d\D]{700,900}
... interessant ...
und sucht zusätzlich nach den Zehntel-Cent.
Grüße
James
Danke Dan! :)
Ich habe die Lösung aus Antwort #3 bei mir angewendet, die "attr" Zeile:
attr HEM reading01Regex "current-price-3">(\d.\d{2})
entsprechend angepaßt. Was auf der Site:
https://www.clever-tanken.de/tankstelle_details/"Stationsnummer?"
bei den von mir abgefragten Tankstellen immer die gleiche Sortierreihenfolge ist. Also keine großen Änderungen erforderlich macht.
Funktioniert, die Readings werden wieder aktualisiert, alles gut/tut. :)
Danke Dan! :)
war schon unglücklich da ich die Preise auch über Telegram abfrage. Jetzt funktioniert wieder alles. :)
Ich habe anhand der Beitrage #17 und #19 das Wiki für die Spritpreise (https://wiki.fhem.de/wiki/Spritpreismonitor) angepasst.
Ebenso habe ich noch eine weitere Tankstelle (Esso) dazu genommen und zu den Tankstellen die jeweiligen Spezial-Spritsorten (sowie Autogas, Erdgas und Wasserstoff).
Gruß
Dan
Danke für das Update im Forum und Wiki :)
DANKE! hab mich bis eben auch gewundert warum es nicht ging.
Hallo,
ich habe nun auch meine Benzinpreise aktualisiert mit
reading02Regex "price-type-name">Super E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
reading03Regex"price-type-name">Super E5</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
Nun werden die Preise wieder aktualisiert - Danke
ABER nun stehe ich vor zwei weiteren Problemen:
Das kleinere ist das "State"
unter stateformat habe ich
Super: SuperE5 € <br> E10: SuperE10 €
eingetragen. Nun wird die Schriftformatierung von Super (hochgestellte kleine 9) mit nach E10 verschleppt. Wie kann ich bei State eintragen, dass für E10 die Standardchrift benutzt wird?
Das zweite Problem. Ich bekomme die Zahlen nicht mehr im Plot angezeigt:
Die Daten werden nicht mehr im Logfile aufgezeichnet:
DEF ./log/Shell_Iggelheim_FileLog_2.log Shell_Iggelheim:SuperE5:..*..........................................*
Die Zeile habe ich ich neu aus dem Eventmap herauskopiert und ein logfile generiert, aber es wird im Logfile nicht aufgezeichnet.
Hat jemand seine Log File Definition schon entsprechend angepasst?
Hallo,
Zitat von: Müller am 19 Mai 2019, 11:14:53Das kleinere ist das "State"
unter stateformat habe ich
Super: SuperE5 € <br> E10: SuperE10 €
eingetragen. Nun wird die Schriftformatierung von Super (hochgestellte kleine 9) mit nach E10 verschleppt. Wie kann ich bei State eintragen, dass für E10 die Standardchrift benutzt wird?
hast du auch die Zeile bei dir drin:
readingOExpr $val =~ s/<[\d\D]+>//;;$val
Das löscht alle unötigen Zeichen zwsichen price-type-name und suffix-price.
Gruß
Hallo, bei mir war etwas anderes bei readingOExpr eingetragen. Ich habe deinen Code getested, hat geholfen. Danke
Ich habe nun ein neues logfile aus dem eventmonitor erstellt. Jetzt funktioniert wieder alles.
Hi, ein List der Tanke sieht so aus:
Internals:
BUSY 0
DEF https://www.clever-tanken.de/tankstelle_details/13669 600
FUUID 5c437804-f33f-a264-2632-d66f4505987a34ea
Interval 600
LASTSEND 1565901825.12098
MainURL https://www.clever-tanken.de/tankstelle_details/13669
ModuleVersion 3.5.9 - 13.2.2019
NAME ELAN_Saase
NOTIFYDEV global
NR 71
NTFY_ORDER 50-ELAN_Saase
STATE Preis: 1.45 €
TRIGGERTIME 1565902425.1193
TRIGGERTIME_FMT 2019-08-15 21:53:45
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/13669
header
host www.clever-tanken.de
httpheader HTTP/1.1 200 OK
Date: Thu, 15 Aug 2019 20:43:45 GMT
Server: Apache/2.4.18 (Ubuntu)
Vary: Cookie,Accept-Encoding
Content-Encoding: gzip
Content-Length: 29107
Content-Type: text/html; charset=utf-8
Set-Cookie: csrftoken=Zr910cIdva770SVOH43q90tPf6mBecuXHjbWCqRdju03MlFtaFvANrUGzxydwnXq; expires=Thu, 13-Aug-2020 20:43:45 GMT; Max-Age=31449600; Path=/
Connection: close
httpversion 1.0
hu_blocking 0
hu_filecount 136
hu_port 443
hu_portSfx
ignoreredirects 0
loglevel 4
path /tankstelle_details/13669
protocol https
redirects 0
timeout 2
url https://www.clever-tanken.de/tankstelle_details/13669
value 0
QUEUE:
READINGS:
2019-04-24 08:46:04 SuperE10 1.45
2019-08-15 21:43:45 reading02 1.34
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url https://www.clever-tanken.de/tankstelle_details/13669
value 0
defptr:
readingBase:
reading02 reading
readingNum:
reading02 02
readingOutdated:
requestReadings:
update:
reading02 reading 02
sslargs:
Attributes:
alias ELAN_Saase
enableControlSet 1
group Spritpreise
icon tanken
reading01Name SuperE10
reading01Regex <span>Super E10</span>[^0-9]+([0-9\.]+)
reading02Regex "current-price-2">(\d.\d{2})
stateFormat Preis: SuperE10 €
userattr reading01Name reading01Regex reading02Regex
Muss ich jetzt nur hier von Seite eins in die comandozeile das hier eintragen und speichern??:
attr ELAN_Saase reading02Regex "current-price-2">(\d.\d{2})
Über ne Info vielen Dank
reading01Regex <span>Super E10</span>[^0-9]+([0-9\.]+)
reading02Regex "current-price-2">(\d.\d{2})
READINGS:
2019-04-24 08:46:04 SuperE10 1.45
2019-08-15 21:43:45 reading02 1.34
warum neues reading02Regex?
trage es doch bei reading01Regex ein
reading01Regex "current-price-2">(\d.\d{2})
ok danke..wie müsste der Code dann aussehen den ich in die Komandozeile eingebe?
Gruss
Hallo,
klappt soweit, nur Autogas funktioniert nicht. Was mache ich falsch?
defmod TankeAralBrandis HTTPMOD http://www.clever-tanken.de/tankstelle_details/15334 600
attr TankeAralBrandis userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex
attr TankeAralBrandis enableControlSet 1
attr TankeAralBrandis reading01Name Diesel
attr TankeAralBrandis reading01Regex "price-type-name">Diesel<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr TankeAralBrandis reading02Name SuperE5
attr TankeAralBrandis reading02Regex "price-type-name">Super.E5<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr TankeAralBrandis reading03Name Autogas
attr TankeAralBrandis reading03Regex "price-type-name">Autogas<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr TankeAralBrandis room 2_6_Spritpreise
attr TankeAralBrandis stateFormat D: Diesel € S: SuperE5 € Autogas: Autogas €
attr TankeAralBrandis timeout 5
setstate TankeAralBrandis D: 1.30 € S: 1.50 € Autogas: Autogas €
setstate TankeAralBrandis 2019-08-16 08:25:49 Diesel 1.30
setstate TankeAralBrandis 2019-08-16 08:25:49 SuperE5 1.50
Dankeschön
Die Tankstelle (http://www.clever-tanken.de/tankstelle_details/15334), die Du verwendest, führt kein Autogas auf der Seite auf. (siehe Screenshot von der Seite)
Oh Mann,
danke. Kaum macht man es richtig, schon klappt es.....
Und ich habe sooft auch andere Tankstellen ausprobiert...
Nochmals Danke
Guten Tag,
ich möchte gerne die Daten der Änderung ebenfalls mitnehmen:
<div class="price-footer row col-12 text text-color-ice-blue d-flex flex-column">
<span>Letzte MTS-K Preisänderung: 30.09.2019 13:26</span>
<span>Letzte Aktualisierung: 30.09.2019 14:26</span>
</div>
Der Code-Teil div class ist einmalig und pro Tankstelle entsprechend verfügbar.
Vielleicht könnte mir jemand mit dem regex helfen, damit ich die beiden <span> Inhalte bekomme (nur Datum und Uhrzeit, Kein Text)?
Beste Grüße
Hallo,
vielleicht hilft dir meine Definition weiter, wobei ich die aus der commandref/Wiki habe; d.h. ich habe keine besonderen Anforderungen damit erfüllt:
defmod AVIAXpress.Leverkusen HTTPMOD https://www.clever-tanken.de/tankstelle_details/17099 600
attr AVIAXpress.Leverkusen userattr reading01Name reading01OExpr reading01Regex stateFormat timeout
attr AVIAXpress.Leverkusen alias AVIAXpress.Lev
attr AVIAXpress.Leverkusen alignTime 00:01:10
attr AVIAXpress.Leverkusen comment Spritpreis mit Zehntel Centwerten:\
https://forum.fhem.de/index.php/topic,99939.msg933890.html#msg933890
attr AVIAXpress.Leverkusen enableControlSet 1
attr AVIAXpress.Leverkusen group Dieselpreise
attr AVIAXpress.Leverkusen icon car
attr AVIAXpress.Leverkusen reading01Name Dieselpreis
attr AVIAXpress.Leverkusen reading01OExpr $val =~ s/<[\d\D]+>//;;;;$val
attr AVIAXpress.Leverkusen reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr AVIAXpress.Leverkusen room Traffic
attr AVIAXpress.Leverkusen stateFormat Diesel: Dieselpreis €
attr AVIAXpress.Leverkusen timeout 5
attr AVIAXpress.Leverkusen userReadings Zeitstempel {substr(ReadingsTimestamp($name,'STATE',''),0,16)} >:( :D
Ich nutze dafür folgendes RegEx:
attr Tanke reading02Name last_price_update
attr Tanke reading02Regex 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))
Das generiert mir folgende Readings:
setstate Tanke 2019-09-30 17:46:04 last_price_update-1 30.09.2019 16:43
setstate Tanke 2019-09-30 17:46:04 last_price_update-2 30
setstate Tanke 2019-09-30 17:46:04 last_price_update-3 09
setstate Tanke 2019-09-30 17:46:04 last_price_update-4 2019
setstate Tanke 2019-09-30 17:46:04 last_price_update-5 16
setstate Tanke 2019-09-30 17:46:04 last_price_update-6 43
Super vielen Dank für die Rückmeldungen.
Damit konnte ich erfolgreich meine Daten sammeln.
Beste Grüße
Hallo zusammen,
selbst wenn ich bei mir ein define Tanken HTTPMOD ... mache, kommt bei mir im Log Read response to update didn't match any Reading? Muss ich hier überhautp weitermachen?
Danke und Grüße
Julian
Hallo Julian,
die raw-Definition und/oder ein list deines Devices wären sehr hilfreich zur Fehlersuche.
Ein Auszug der log-datei ist auch ganz schön, damit kann man auf jeden Fall auch etwas anfangen.
Da die Anwendung bei mir wie am Schnürchen läuft, muss der Fehler auf deine Anwendung begrenzt sein.
Wenn nicht schon bekannt, dann bitte Zitate/Definitionen in code tags (# oben) setzen.
Viele Grüße Gisbert
Zitat von: Julian.jul am 15 April 2020, 20:13:00
selbst wenn ich bei mir ein define Tanken HTTPMOD ... mache, kommt bei mir im Log Read response to update didn't match any Reading? Muss ich hier überhautp weitermachen?
Hallo Julian,
schau mal hier -> https://forum.fhem.de/index.php/topic,110257.msg1042954.html#msg1042954
Gruß Otto
Hi Otto,
bei attrTemplate bekomme ich folgenden Fehler: Unknown argument AttrTemplate, choose one of
Was ist hier das Problem? (Habe sowohl attr und Attr getestet)
dann ist Dein FHEM Asbach Uralt?
was sagt version
in der FHEM Kommandozeile?
Gruß Otto
Hallo Otto,
folgendes: Latest Revision: 17469
fhem.pl 17329 2018-09-12 07:03:11Z rudolfkoenig
Dann stimmt meine Vermutung.
ZitatLatest Revision: 21706
File Rev Last Change
fhem.pl 21661 2020-04-13 10:34:40Z rudolfkoenig
...
Entweder mit der Einschränkung leben oder update machen. Dein System kennt kein attrTemplate ;) das kam irgendwie vor einem Jahr
Gruß Otto
Hi Otto,
danke für die ganzen Hinweise!
Dann werde ich wohl ein Update machen müssen.
Bin Neuling in FHEM, deshalb kenne ich mich (noch) nicht so gut aus:)
Hat jemand aktuell eine Information, warum der Server von clever-tanken.de (vermutlich) seit Anfang November down ist?
Ich bekomme kontinuierlich die Fehlermeldung
2021.12.03 06:38:05.004 3: OUT_Tankstelle_Aral: Read callback: Error: connect to http://www.clever-tanken.de:80 timed out
bei all meinen abgefragten Tanken!
Auch die Internetseite ist direkt nicht erreichbar!
Hallo,
bei mir sieht es nicht viel besser aus:
2021.12.03 07:03:35.148 3: Jet.Koeln.Worringen: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
Allerdings sehen die aus den log-Dateien erstellten Diagramme wie erwartet aus; d.h. Daten müssen wohl reinkommen, aber dann verstehe ich diese Fehlermeldung nicht.
Viele Grüße Gisbert
Moin,
vielleicht weil "man das nicht mehr darf"? -> http://www.clever-tanken.de:80
Scheinbar habe die keine Weiterleitung mehr http -> https
Funktioniert bei mir -> https://www.clever-tanken.de:443
Gruß Otto
Guten Morgen,
bei meinem FHEM scheint es noch unverändert zu funktionieren.
Logeinträge sind noch da:
2021-12-03_08:02:31 Q1SWS Diesel: 1.529
2021-12-03_08:02:31 Q1SWS SuperE5: 1.669
2021-12-03_08:02:32 AralW Diesel: 1.549
2021-12-03_08:02:32 AralW SuperE5: 1.759
2021-12-03_08:02:32 SBFRZ Diesel: 1.459
2021-12-03_08:02:32 SBFRZ SuperE5: 1.579
und auch die Grafik ist OK.
Ja, funktioniert aber nur sporadisch. Die scheinen server-Probleme zu haben bzw gehabt zu haben. Die App funktioniert auch nur bescheiden.
Um die log-Meldungen zu reduzieren habe ich verbose auf 2 gesetzt in den Devices.
Die Werte der App differieren nach wie vor von denen, die per FTUI ausgewiesen werden. Die Fehlermeldung ist nach Änderung des Ports die gleiche:
2021.12.03 09:02:49.828 3: OUT_Tankstelle_Aral: Read callback: Error: connect to http://www.clever-tanken.de:443 timed out
Kein Wunder -> http://www.clever-tanken.de:443 ::)
Oh je, kaum macht man's richtig, schon funktioniert's ;D
Danke für das "auf die Sprünge helfen"!
Hallo,
ich habe auch mal ins Log geschaut:
2021.12.03 12:24:59 3: AralW: Read callback: Error: connect to http://www.clever-tanken.de:80 timed out
2021.12.03 12:24:59 3: Q1SWS: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
2021.12.03 12:24:59 3: SBFRZ: Read callback: Error: connect to http://www.clever-tanken.de:80 timed out
offenbar gibt es Fehler egal ob mit http..80 oder https..443?
Oh, ich glaube, ich habe mich zu früh gefreut, es gibt immer noch Fehlermeldungen:
2021.12.03 19:59:08.996 3: OUT_Tankstelle_Aral: Read callback: Error: connect to https://www.clever-tanken.de:443 timed out
Der Code sieht so aus
define OUT_Tankstelle_Aral HTTPMOD https://www.clever-tanken.de/tankstelle_details/5591 600
attr OUT_Tankstelle_Aral enableControlSet 1
attr OUT_Tankstelle_Aral reading01Name Diesel
attr OUT_Tankstelle_Aral reading01Regex "price-type-name">Diesel<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr OUT_Tankstelle_Aral reading03Name SuperE10
attr OUT_Tankstelle_Aral reading03Regex "price-type-name">Super.E10<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr OUT_Tankstelle_Aral reading04Name SuperPlus
attr OUT_Tankstelle_Aral reading04Regex "price-type-name">SuperPlus<[\d\D]{600,900}"current-price-.">(\d.\d\d)
attr OUT_Tankstelle_Aral stateFormat E10: SuperE10, D: Diesel, SP: SuperPlus
attr OUT_Tankstelle_Aral timeout 5
Was ist daran falsch?
Hallo Uron,
ich denke nicht, dass etwas falsch ist. Einfach mal den timeout erhöhen auf z.B. 15, dann hat es bei mir wieder funktioniert.
Gruß
qlaus
So recht will es noch nicht werden.
Ich bin mittlerweile bei einem Timeout von 50s, dennoch hatte ich in den letzten 2 Stunden 5 Timeouts.
Es ist zwar etwas besser geworden, aber noch nicht gut!
bei mir steht das Log ebenfalls voll mit Fehler timout :-\
Egal ob nun http mit Port 80 oder https mit 443
habe das timeout mal auf 20 erhöht
Hi,
ich beobachte auch schon länger, dass immer wieder Timeouts von clever-tanken im Log stehen - Tendenz steigend.
Habe den Timeout hochgesetzt, von anderen Geräten per wget probiert - es wurde nicht besser.
Meine Vermutung ist, dass zu viel Traffic auf der Website ist, deren Server zu schwach sind oder sonst irgendetwas in die Richtung. Das sind aber alles Faktoren, die ich nicht beeinflussen kann.
Letzendlich habe ich mich nach Alternativen umgeschaut und bin bei https://creativecommons.tankerkoenig.de/ (https://creativecommons.tankerkoenig.de/) fündig geworden.
Nachteilig beim Tankerkönig ist, dass nur die Super E5, Super E10 und Diesel Preise angeboten werden. Da ich aber nur Benziner fahre und nur E5 tanke, stört mich das nicht.
Als Vorteil sehe ich, dass der Response als JSON-Array kommt. Das ist natürlich viel smarter, als wenn man eine ganze Webseite parsen muss, die sich nach dem nächsten Relaunch evtl. wieder geändert hat.
Also:
Dann habe ich mir vom Tankerkönig so einen API-Key per Mail zusenden lassen und angefangen, alles für eine Tankstelle umzustellen.
Ich habe hier mal die wesentlichen Passagen Alt vs. Neu gegenübergestellt.
Def Alt:
DEF https://www.clever-tanken.de/tankstelle_details/553 600
Def Neu:
DEF https://creativecommons.tankerkoenig.de/json/detail.php?id=5506231b-d001-4238-6d89-8ccc7cf069e2&apikey=<<api-key>> 600
Readings / Attributes Alt:
READINGS:
2021-12-06 16:39:49 SuperE5 1.62
Attributes:
reading01Name SuperE5
reading01Regex <span id="current-price-3">(\d.\d\d)
stateFormat {sprintf("Super: %.2f €",ReadingsVal("ts_ARAL_NK","SuperE5",0))}
userattr reading01Name reading01Regex
Readings / Attributes Neu:
READINGS:
2021-12-06 16:52:12 Offen true
2021-12-06 16:52:12 SuperE5 1.59
Attributes:
getHeader1 Content-Type: application/json
getHeader2 Accept: */*
reading01Format %.2f
reading01JSON station_e5
reading01Name SuperE5
reading02JSON station_isOpen
reading02Name Offen
stateFormat {sprintf("Super: %.2f €",ReadingsVal("ts_ELO_W","SuperE5",0))}
userattr getHeader1 getHeader2 reading01Format reading01JSON reading01Name reading02JSON reading02Name
Ok, ich habe jetzt ein Reading mehr (Offen). Ist eigentlich Spielerei, denn die Öffnungszeiten meiner einschlägigen Tankstellen kenne ist. Ich habe es aber drin gelassen, um ein Beispiel mit zwei Readings zu zeigen.
Falls mein Beitrag als Off-Topic eingestuft wird, da es nicht unbedingt um eine Lösung für clever-tanken geht, dann mögen ihn die Admins löschen / verschieben.
Gruß Harry
Sehr guter Hinweis mit "Tankerkönig". Ich kann die Werte laden, allein das Attribut
stateFormat {sprintf("Super: %.2f €",ReadingsVal("ts_ELO_W","SuperE5",0))}
erschließt sich mir nicht.
Auch durch googeln und in der commandref finde ich keinen Hinweis auf die Syntax.
Muss dieses stateFormat für jedes Reading (Spritsorte) einzeln gesetzt werden und wie setzt es sich zusammen?
Ich möchte die Anzeige mit 3 Kommastellen ausweisen!
wenn du das mit den 3 Kommastellen meinst, wäre es ja "reading01Format" aber es wird natürlich vor der letzten 9 kein Komma gesetzt
reading01Format %.3f
Bei mir wird nur im Header nichts angezeigt bleibt immer bei 0.00 € und ich suche auch schon eine Weile
Super: 0.00 €
Ich habe das "ELO_W" natürlich ersetzt durch meine Tanstelle, aber ich weiß nicht wie das "W" zustande kommt in der Tankstelle von Harry finde ich keinen Wert "W"
Ich probiere mich gerade daran im Header jeweils Diesel und Super E5 anzuzeigen was wesentlich übersichtlicher wird.
Zitat von: moonsorrox am 07 Dezember 2021, 16:35:37
Ich habe das "ELO_W" natürlich ersetzt durch meine Tanstelle, aber ich weiß nicht wie das "W" zustande kommt in der Tankstelle von Harry finde ich keinen Wert "W"
Ich probiere mich gerade daran im Header jeweils Diesel und Super E5 anzuzeigen was wesentlich übersichtlicher wird.
Merkwürdierweise werden mir mittlerweile die 2 von mir gesuchten Readings (SuperE10 + Diesel) mit 3 Nachkommestellen angezeigt :)
Ich hatte dann auch versucht, die
beiden Spritsorten im Header (=State?) anzuzeigen (sportlicher Ehrgeiz), aber mittlerweile aufgegeben, weil es mir eigentlich nicht so wichtig ist.
Ich nutze die Preise für mein FTUI, da wiederum habe ich das Problem, dass mit die Readings "SuperE10" und "Diesel" dort nicht angezeigt werden !?
<div data-type="label" data-device="Preise_Tankstelle_Aral" data-get="Diesel" "class="big" data-pre-text="Dies:" class="small" data-substitution="s/\./,/g"></div>
In meiner FTUI-Altversion mit clever-tanken hat das genau so funktioniert!
Bin ich auf dem falschen Weg?
Hallo,
ich hatte am Samstag den timeout auf 20 gesetzt, bei gemischter http..80 bzw. https..443 Konfiguration.
Zunächst waren noch Fehler im Log, seit gestern 16:22 aber nicht mehr.
Die Server-Probleme scheinen, zumindest vorerst, gelöst worden zu sein.
Zitat von: uron am 07 Dezember 2021, 13:46:50
stateFormat {sprintf("Super: %.2f €",ReadingsVal("ts_ELO_W","SuperE5",0))}
erschließt sich mir nicht.
Ergibt im STATE z.B. "Super: 1.62 €"
sprintf mit dem Pattern %.2f formatiert das Reading SuperE5 des Devices ts_ELO_W mit 2 Kommastellen
Gruß Harry
Zitat von: uron am 07 Dezember 2021, 13:46:50
Ich möchte die Anzeige mit 3 Kommastellen ausweisen!
Dann kannst du
reading01Format %.3f
ganz weg lassen. Der Tankerkönig liefert den Wert ja von Haus aus mit 3 Kommastellen.
Gruß Harry
Zitat von: moonsorrox am 07 Dezember 2021, 16:35:37
Ich habe das "ELO_W" natürlich ersetzt durch meine Tanstelle, aber ich weiß nicht wie das "W" zustande kommt in der Tankstelle von Harry finde ich keinen Wert "W"
Das W gehört mit zu meinem Device-Namen.
ts_ELO_W heißt in Langform: Tankstelle_ELO_Weiher
ts_ARAL_ER heißt bei mir Tankstelle_ARAL_Erlangen
So hat Jeder seine eigene Notation...
Gruß Harry
Zitat von: harryman am 07 Dezember 2021, 17:46:52
Dann kannst du reading01Format %.3f
ganz weg lassen. Der Tankerkönig liefert den Wert ja von Haus aus mit 3 Kommastellen.
Genau so hatte ich es gemacht und wie oben beschrieben, das gewünschte Format erhalten.
Danke für die Erläuterung zum stateFormat.
Hoffentlich letzte Frage:
Worin unterscheiden sich beide Readings (z.B. "Diesel" bei clever-tanken und Tankerkönig) oder warum zeigt mir mein FTUI das Reading des Tankerkönigs nicht an (s.o.)?
Zitat von: harryman am 07 Dezember 2021, 17:50:25
Das W gehört mit zu meinem Device-Namen.
ts_ELO_W heißt in Langform: Tankstelle_ELO_Weiher
ts_ARAL_ER heißt bei mir Tankstelle_ARAL_Erlangen
So hat Jeder seine eigene Notation...
Gruß Harry
das habe ich aus den Daten von Tankerkönig noch nicht raus lesen können deshlb steht bei mir da noch nichts drin.
Ich habe da folgendes drin stehen, aber es reicht nicht, da fehlt noch was
"brand": "Supermarkt-Tankstelle"
ich habe mir die JSON einer Tankstelle erst einmal geholt, aber diese Abkürzungen von dir gibt es da nicht drin.
Sieht so aus die JSON:
{
"ok": true,
"license": "CC BY 4.0 - https://creativecommons.tankerkoenig.de",
"data": "MTS-K",
"status": "ok",
"station": {
"id": "51d4b637-a095-1aa0-e100-80009459e03a",
"name": "Supermarkt-Tankstelle GARBSEN HAVELSER STR. 10",
"brand": "Supermarkt-Tankstelle",
"street": "HAVELSER STR.",
"houseNumber": "10",
"postCode": 30823,
"place": "GARBSEN",
"openingTimes": [
{
"text": "täglich ausser Sonn- und Feiertagen",
"start": "07:30:00",
"end": "20:30:00"
}
],
"overrides": [],
"wholeDay": false,
"isOpen": true,
"e5": 1.639,
"e10": 1.579,
"diesel": 1.469,
"lat": 52.4258,
"lng": 9.59752,
"state": "deNI"
}
}
EDIT:// so habe ich es hinbekommen
{sprintf("Diesel %.2f €\n SuperE5 %.2f €", ReadingsVal($name,"Diesel",0), ReadingsVal($name,"SuperE5",0))}
Das JSON ist ja ein mehrstufiges Array.
Die Attribute e5, e10 und diesel sind unterhalb von station angeordnet.
Solche Unterebenen werden im Namen mit Underscore verbunden.
Somit ergibt sich z.B.:
reading01JSON station_e5
reading01Name SuperE5
reading02JSON station_e10
reading02Name SuperE10
reading03JSON station_diesel
reading03Name Diesel
Gruß Harry
Danke für die Infos, mit JSON hatte ich bislang nichts zu tun, glaube aber, da komme ich nicht mehr lange drumherum.
Meine Versuche das Reading imm FTUI Widget Chart einzubauen sind allesamt fehlgeschlagen. Mittlerweile weiß ich noch nicht einmal, ob das Widget_Chart überhaupt damit umgehen kann. Das werde ich nun an anderer Stelle diskutieren.
Danke Harry für die Unterstützung!
Also, weiter oben hattest du das Reading bei Tablet-UI in ein Label eingebaut. Chart - weis ich nicht.
Aber Label geht. Hier mein Beispiel, passend zu dem von mir geposteten Code:
<div data-type="label"
data-device="ts_ELO_W"
data-get="SuperE5"
data-color="orange"
class="col-40 big right-align top-space">
</div>
Einzige Add, was ich noch habe ist:
attr ts_ELO_W event-on-change-reading SuperE5
Ich denke aber, das ist ncht entscheidend..
Gruß Harry
Oh Mann,
jetzt habe ich mir den Code nochmals genau angeschaut:
<div data-type="label" data-device="Preise_Tankstelle_Aral" data-get="Diesel" "class="big" data-pre-text="Dies:" class="small" data-substitution="s/\./,/g"></div>
und festgestellt, dass mein neues Device ja "Preise_Tankstelle_ARAL" heißt.
Geändert, Gelungen, Genervt (3G halt) wegen der systemischen Pingeligkeit!
Danke für das "Auf die Sprünge helfen"