Spritpreise cleverTanken stimmen nicht

Begonnen von Kusselin, 12 Mai 2020, 08:21:17

Vorheriges Thema - Nächstes Thema

yersinia

Coole Sache, Gisbert. Alternativ für stateFormat geht auch:
attr Star.Duennwald stateFormat { return "<div style=\"text-align: left;;\">Diesel: ".substr(ReadingsVal($name,'Dieselpreis',''),0,4)."<font style=\"vertical-align: super;;font-size: smaller;;\">".substr(ReadingsVal($name,'Dieselpreis',''),4,1)."</font> &euro;;/l</div>";; }
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Kusselin

Alles gut!!
Du bist aber ein Teufelskerl..kennst Dich ja in FHEM aus dem FF aus👍

Gisbert

Zitat von: yersinia am 14 Mai 2020, 10:13:59
Coole Sache, Gisbert. Alternativ für stateFormat geht auch:
attr Star.Duennwald stateFormat { return "<div style=\"text-align: left;;\">Diesel: ".substr(ReadingsVal($name,'Dieselpreis',''),0,4)."<font style=\"vertical-align: super;;font-size: smaller;;\">".substr(ReadingsVal($name,'Dieselpreis',''),4,1)."</font> &euro;;/l</div>";; }

Hallo yersinia,

ich hab deine Definition probiert, ja sie funktioniert, nur verstehe ich von Perl zu wenig, um es nachvollziehen zu können.

Richtigerweise hast du den Preis pro Liter angegeben. Wenn wir dann auch noch SI-konform sein wollen, muss es €/L heißen, d.h. ein großes L. Milliliter wird demzufolge auch nicht mit ml sondern mit mL abgekürzt. Sieht komisch aus, ist aber richtig.

Viele​ Grüße​ Gisbert​
Aktuelles FHEM | PROXMOX | Fujitsu Futro S740 | Debian 12 | UniFi | Homematic, VCCU, HMUART | ESP8266 | ATtiny85 | Wasser-, Stromzähler | tuya local | Wlan-Kamera | SIGNALduino, Flamingo Rauchmelder FA21/22RF | RHASSPY | DEYE | JK-BMS | ESPHome

JoWiemann

Dem möchte ich doch mal widersprechen:

Aus Wikipedia:

Grundsätzlich werden im Internationalen Einheitensystem (SI) die Einheitenzeichen kleingeschrieben, es sei denn, dass der Name der Einheit von dem Eigennamen einer Person abgeleitet wurde. In diesem Fall wird der erste Buchstabe des Zeichens großgeschrieben.[6][7] Demnach ist das Einheitenzeichen für den Liter ein kleines l, da der Einheitenname Liter nicht von einem Eigennamen abgeleitet wurde.[6][7][8]

Das große L wurde von der CGPM ausnahmsweise als alternatives Einheitenzeichen für den Liter zugelassen, um Verwechslungen des Buchstabens l mit der Ziffer 1, die bei manchen Schriftarten auftreten können, zu vermeiden,[6][7][8] und ist eher im englischen und französischen Sprachraum gebräuchlich. ISO und IEC verwenden ausschließlich das ursprüngliche Einheitenzeichen l.[7][8] IUPAC[9] und DIN 1301-1[10] lassen beide Schreibweisen zu.

Grüße Jörg


Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

yersinia

Zitat von: Gisbert am 14 Mai 2020, 18:48:42ich hab deine Definition probiert, ja sie funktioniert, nur verstehe ich von Perl zu wenig, um es nachvollziehen zu können.
Der Code ist nur mMn perl- und HTML konformer: es wird ein String zurückgegeben und im HTML wird mehr mit CSS definiert. Aber viele Wege führen nach Rom - hauptsache das Ergebnis passt und funktioniert.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Kusselin

Zitat von: Gisbert am 13 Mai 2020, 21:17:53
Hallo Kusselin,

hoffentlich bist du noch guter Dinge und kannst die gewünschte Änderung der hochgestellten 9 noch gebrauchen. Ich hänge die raw-Definition meines Device komplett an, damit nicht evtl. Infos verloren gehen. Im Attribut stateFormat wird die Formatierung vorgenommen. Wenn du noch Änderungen vornehmen möchtest, kann du es erst selbst mal versuchen, ansonsten melde dich, dann helfe ich gerne weiter.
In der ersten Hälfte des stateFormat werden mit substr() die ersten 4 Stellen beginnend bei der 1. Stelle, die Linux-typisch natürlich die nullte Stelle (oder Null) ist (Wer hat sich so was ausgedacht? Entweder zu viel oder schlechtes Kraut geraucht, oh Mann), und in der 2. Hälfte wird ab der 5. Stelle (also 4) eine Stelle extrahiert, also ...,4,1... Damit hat man die 9, die nun um +6px nach oben verschoben und in ihrer Größe auf 85% der anderen Zeichen formatiert wird.
Das Ganze ist Perlcode im stateFormat und vielleicht kannst du ja eine gewisse Systematik bei den Punkten <.> und den einfachen Anführungsstrichen <'> erkennen.

defmod Star.Duennwald HTTPMOD https://www.clever-tanken.de/tankstelle_details/15539 600
attr Star.Duennwald userattr reading01Name reading01OExpr reading01Regex stateFormat timeout
attr Star.Duennwald alignTime 00:05:50
attr Star.Duennwald enableControlSet 1
attr Star.Duennwald group Dieselpreise
attr Star.Duennwald icon car
attr Star.Duennwald reading01Name Dieselpreis
attr Star.Duennwald reading01OExpr $val =~ s/<[\d\D]+>//;;;;$val
attr Star.Duennwald reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
attr Star.Duennwald room Traffic
attr Star.Duennwald stateFormat {'Diesel: '.substr(ReadingsVal($name,'Dieselpreis',''),0,4).'<span style="vertical-align: +6px;; font-size: 85%;;">'.' '.substr(ReadingsVal($name,'Dieselpreis',''),4,1).'</span> €'}
attr Star.Duennwald timeout 5
attr Star.Duennwald userReadings Zeitstempel {substr(ReadingsTimestamp($name,'STATE',''),0,16)}


Viele Grüße Gisbert
Hi Gisbert,

das ist ja die readingsGroup...poste mal bitte noch dein HTTMOD Code bitte
Danke

yersinia

Das ist das HTTPMOD Device im RAW Format und keine ReadingsGroup.
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Kusselin

O.K. und anstatt "Diesel" trage ich weil ich benzin habe "E10" ein richtig?

yersinia

#38
Nicht ganz, da es Wahrscheinlich Super E10 sein wird - anstelle von Diesel fügst du Super.E10 ein:
attr bft_Saase reading01Regex "price-type-name">Super.E10</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Kusselin

Danke Dir...jetzt hazs funktioniert mit dem httmod..

readingsgroup muss ich nochmal sacken lassen....

yersinia

Bezüglich readingsGroup kannst du dich im Wiki oder in der commandref belesen.
Ob dies das für dich Richtige ist, weiss ich nicht.

Wenn du die Preise von verschiedenen Tankstellen (HTTMOD Devices) anzeigen lassen willst, kannst du dies auch einfacher über das Attribut group machen - gib allen HTTMOD Tankstellen Devices die gleiche group und sie werden dann untereinander gelistet.
Zitatgroup
Gerätegruppen. FHEMWEB zeigt Geräte die in die gleiche Gruppe gehören auch in einer gemeinsamen Box an. Ein Gerät kann zu mehr als einer Gruppe gehören. In diesem Fall müssen die entsprechenden Gruppen durch Kommata getrennt eingetragen werden. Wenn dieses Attribut nicht gesetzt ist, wird der in der Gerätegruppe gesetzte Gerätetyp verwendet.
(commandref)

Gisbert hat dies in seinem Beispiel ebenso:
attr Star.Duennwald group Dieselpreise
viele Grüße, yersinia
----
FHEM 6.4 (SVN) on RPi 4B with RasPi OS Bookworm (perl 5.36.0) | FTUI
nanoCUL->2x868(1x ser2net)@tsculfw, 1x433@Sduino | MQTT2 | Tasmota | ESPEasy
VCCU->14xSEC-SCo, 7xCC-RT-DN, 5xLC-Bl1PBU-FM, 3xTC-IT-WM-W-EU, 1xPB-2-WM55, 1xLC-Sw1PBU-FM, 1xES-PMSw1-Pl

Frank_Huber

Hallo,

Der Code: attr Star.Duennwald reading01Regex "price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+suffix-price-.">[0-9])
funktioniert perfekt zusammen mit dem reading01OExpr.

Er sieht aber im RAW def etwas eigenartig aus weil am Ende bei suffix-price ein " fehlt.

So schaut es auch in der RAW def perfekt aus und ändert nichts an der Funktion:
"price-type-name">Diesel</div>[\d\D]{700,900}"current-price-.">([0-9\.]+[^0-9]+"suffix-price-.">[0-9])