Spritpreismonitor: Unterschied zwischen den Versionen
Rince (Diskussion | Beiträge) K (→Links) |
K (Ergänzungen, Verlinkung, etc.) |
||
Zeile 1: | Zeile 1: | ||
Die hier vorgestellten Fragmente ermöglichen es, mit Hilfe von [[HTTPMOD]] bei [http://www.clever-tanken.de clever-tanken.de] von Wunschtankstellen die Spritpreise zu protokollieren. Die Credits dafür gehen an Forum-Benutzer {{Link2FU|1774|Phil__}}. Die Original Diskussion im Forum ist {{Link2Forum|Topic=22554|Message=210795|LinkText=hier}}. | |||
== Einleitung == | |||
Im folgenden wird mit Hilfe des Moduls HTTPMOD der Spritpreis von ausgewählten Tankstellen abgerufen. Die Daten werden gespeichert und als Diagramm aufbereitet. | |||
Zum Nachbau ist es erforderlich, "seine" Wunschtankstellen bei Clever-Tanken zu suchen. Jede Tankstelle hat eine eigene Nummer: | |||
:<code>/tankstelle_details/0815</code> | |||
''' | Die ''600'' in den Beispielen gibt das Abrufintervall in Sekunden an. | ||
== | == Konfiguration == | ||
Die erforderlichen Definitionen in der Fhem [[Konfiguration]] bestehen aus mehreren Teilen. Zunächst die erforderlichen Einstellungen, um die Daten der gewünschten Tankstellen abzuholen: | |||
<pre> | <pre> | ||
define Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/4871 600 | define Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/4871 600 | ||
Zeile 23: | Zeile 23: | ||
attr Shell stateFormat Liter_Diesel: Diesel | attr Shell stateFormat Liter_Diesel: Diesel | ||
attr Shell timeout 5 | attr Shell timeout 5 | ||
define Total HTTPMOD http://www.clever-tanken.de/tankstelle_details/4870 600 | define Total HTTPMOD http://www.clever-tanken.de/tankstelle_details/4870 600 | ||
Zeile 35: | Zeile 34: | ||
attr Total stateFormat Liter_Diesel: Diesel | attr Total stateFormat Liter_Diesel: Diesel | ||
attr Total timeout 5 | attr Total timeout 5 | ||
define Aral HTTPMOD http://www.clever-tanken.de/tankstelle_details/4869 600 | define Aral HTTPMOD http://www.clever-tanken.de/tankstelle_details/4869 600 | ||
Zeile 49: | Zeile 47: | ||
</pre> | </pre> | ||
Dazu kommen noch die Definitionen für das [[FileLog]]: | |||
Dazu kommen noch die Definitionen | |||
<pre> | <pre> | ||
define FileLog_Spritpreise FileLog /media/usblog/fhem/log/spritpreise-langen-%Y-%m.log (Shell|Total|Aral):(SuperE5|Diesel).* | define FileLog_Spritpreise FileLog /media/usblog/fhem/log/spritpreise-langen-%Y-%m.log (Shell|Total|Aral):(SuperE5|Diesel).* | ||
Zeile 72: | Zeile 69: | ||
Und eine Plotdefinition | Und eine [[SVG|Plotdefinition]] | ||
<pre> | <pre> | ||
define SVG_FileLog_Spritpreise_1 SVG FileLog_Spritpreise:SVG_FileLog_Spritpreise_1:CURRENT | define SVG_FileLog_Spritpreise_1 SVG FileLog_Spritpreise:SVG_FileLog_Spritpreise_1:CURRENT | ||
Zeile 134: | Zeile 131: | ||
"<IN>" using 1:2 axes x1y2 title 'Shell Super' ls l4 lw 1 with lines,\ | "<IN>" using 1:2 axes x1y2 title 'Shell Super' ls l4 lw 1 with lines,\ | ||
"<IN>" using 1:2 axes x1y2 title 'Total Super' ls l5 lw 1 with lines | "<IN>" using 1:2 axes x1y2 title 'Total Super' ls l5 lw 1 with lines | ||
</pre> | </pre> | ||
== Tricks für | == Tricks für HTTPMOD == | ||
Je nach Internetverbindung und Geschwindigkeit des | Je nach Internetverbindung und Geschwindigkeit des Fhem Rechners kann das Modul manchmal Probleme haben, die Daten schnell genug zu verarbeiten. | ||
Eine Lösung dazu wäre | Eine Lösung dazu wäre, die Daten vorher mit wget auf einem eigenen Webserver zu speichern (z.B. ein lokaler Apache), und HTTPMOD auf diesen zugreifen zu lassen. | ||
== Links == | == Links == | ||
* Vorstellung und Diskussion im {{Link2Forum|Topic=22554|LinkText=Fhem Forum}} | * Vorstellung und Diskussion im {{Link2Forum|Topic=22554|LinkText=Fhem Forum}} | ||
* [http://www.clever-tanken.de/ Clever Tanken] | * [http://www.clever-tanken.de/ Clever Tanken] | ||
* Eine Anleitung wie man mit wget | * Eine Anleitung, wie man das mit wget macht, gibt es {{Link2Forum|Topic=28123|Message=216228|LinkText=hier}} (ist aber noch nicht ganz fertig) | ||
[[Kategorie:Code Snippets]] | [[Kategorie:Code Snippets]] |
Version vom 23. Juni 2015, 08:16 Uhr
Die hier vorgestellten Fragmente ermöglichen es, mit Hilfe von HTTPMOD bei clever-tanken.de von Wunschtankstellen die Spritpreise zu protokollieren. Die Credits dafür gehen an Forum-Benutzer Phil__ . Die Original Diskussion im Forum ist hier.
Einleitung
Im folgenden wird mit Hilfe des Moduls HTTPMOD der Spritpreis von ausgewählten Tankstellen abgerufen. Die Daten werden gespeichert und als Diagramm aufbereitet.
Zum Nachbau ist es erforderlich, "seine" Wunschtankstellen bei Clever-Tanken zu suchen. Jede Tankstelle hat eine eigene Nummer:
/tankstelle_details/0815
Die 600 in den Beispielen gibt das Abrufintervall in Sekunden an.
Konfiguration
Die erforderlichen Definitionen in der Fhem Konfiguration bestehen aus mehreren Teilen. Zunächst die erforderlichen Einstellungen, um die Daten der gewünschten Tankstellen abzuholen:
define Shell HTTPMOD http://www.clever-tanken.de/tankstelle_details/4871 600 attr Shell group Spritpreise attr Shell icon tanken attr Shell readingsName_Diesel Diesel attr Shell readingsName_SuperE5 SuperE5 attr Shell readingsRegex_Diesel <div class="fuel_type">Diesel[^0-9]+([0-9\.]+) attr Shell readingsRegex_SuperE5 <div class="fuel_type">Super E5[^0-9]+([0-9\.]+) attr Shell room Spritpreise attr Shell stateFormat Liter_Diesel: Diesel attr Shell timeout 5 define Total HTTPMOD http://www.clever-tanken.de/tankstelle_details/4870 600 attr Total group Spritpreise attr Total icon tanken attr Total readingsName_Diesel Diesel attr Total readingsName_SuperE5 SuperE5 attr Total readingsRegex_Diesel <div class="fuel_type">Diesel[^0-9]+([0-9\.]+) attr Total readingsRegex_SuperE5 <div class="fuel_type">Super E5[^0-9]+([0-9\.]+) attr Total room Spritpreise attr Total stateFormat Liter_Diesel: Diesel attr Total timeout 5 define Aral HTTPMOD http://www.clever-tanken.de/tankstelle_details/4869 600 attr Aral group Spritpreise attr Aral icon tanken attr Aral readingsName_Diesel Diesel attr Aral readingsName_SuperE5 SuperE5 attr Aral readingsRegex_Diesel <div class="fuel_type">Diesel[^0-9]+([0-9\.]+) attr Aral readingsRegex_SuperE5 <div class="fuel_type">Super E5[^0-9]+([0-9\.]+) attr Aral room Spritpreise attr Aral stateFormat Liter_Diesel: Diesel attr Aral timeout 5
Dazu kommen noch die Definitionen für das FileLog:
define FileLog_Spritpreise FileLog /media/usblog/fhem/log/spritpreise-langen-%Y-%m.log (Shell|Total|Aral):(SuperE5|Diesel).* attr FileLog_Spritpreise alias Log Spritpreise attr FileLog_Spritpreise group Logfile attr FileLog_Spritpreise logtype text attr FileLog_Spritpreise room Spritpreise
Sowie eine passende readingsGroup:
define Spritpreise readingsGroup (Shell|Total|Aral):(SuperE5|Diesel).* attr Spritpreise group Spritpreisuebersicht attr Spritpreise notime 1 attr Spritpreise room Spritpreise attr Spritpreise style style="font-size:16px" attr Spritpreise valueFormat {'%.2f €'} attr Spritpreise valueStyle {Werte($READING,$VALUE)}
Und eine Plotdefinition
define SVG_FileLog_Spritpreise_1 SVG FileLog_Spritpreise:SVG_FileLog_Spritpreise_1:CURRENT attr SVG_FileLog_Spritpreise_1 group Spritpreisverlauf attr SVG_FileLog_Spritpreise_1 room Spritpreise
Farbliche Hervorhebung
Folgender Code gehört in 99_myUtils.pm; Die Werte könen natürlich entsprechend angepasst werden
################################################### ### Spritpreisübersicht - Farbsortierung ### ################################################### sub Werte($$) { my ($name, $wert) = @_; # Log(3,"$name $wert"); if ($name eq "Diesel") { return 'style="color:red"' if($wert >= 1.39); return 'style="color:blue"' if(($wert >= 1.33) && ($wert < 1.39)); return 'style="color:green;;font-weight:bold"' if($wert <= 1.32); }elsif ($name eq "SuperE10") { return 'style="color:crimson"' if($wert >= 1.70); return 'style="color:yellow"' if(($wert >= 1.55) && ($wert < 1.70)); return 'style="color:lightgreen;;font-weight:bold"' if($wert < 1.55); }elsif ($name eq "SuperE5") { return 'style="color:red"' if($wert >= 1.59); return 'style="color:blue"' if(($wert >= 1.49) && ($wert < 1.59)); return 'style="color:green;;font-weight:bold"' if($wert <= 1.48); } }
Die zugehörige .gplot Datei
SVG_FileLog_Spritpreise_1.gplot
# Created by FHEM/98_SVG.pm, 2014-10-22 12:57:34 set terminal png transparent size <SIZE> crop set output '<OUT>.png' set xdata time set timefmt "%Y-%m-%d_%H:%M:%S" set xlabel " " set title 'Spritpreise' set ytics set y2tics set grid set ylabel "Preise (€/Liter)" set y2label "Preise (€/Liter)" #FileLog 4:Aral.Diesel\x3a:1: #FileLog 4:Shell.Diesel\x3a:1: #FileLog 4:Total.Diesel\x3a:1: #FileLog 4:Aral.SuperE5\x3a:1: #FileLog 4:Shell.SuperE5\x3a:1: #FileLog 4:Total.SuperE5\x3a:1: plot "<IN>" using 1:2 axes x1y2 title 'Aral Diesel' ls l2 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Shell Diesel' ls l1 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Total Diesel' ls l0 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Aral Super' ls l3 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Shell Super' ls l4 lw 1 with lines,\ "<IN>" using 1:2 axes x1y2 title 'Total Super' ls l5 lw 1 with lines
Tricks für HTTPMOD
Je nach Internetverbindung und Geschwindigkeit des Fhem Rechners kann das Modul manchmal Probleme haben, die Daten schnell genug zu verarbeiten.
Eine Lösung dazu wäre, die Daten vorher mit wget auf einem eigenen Webserver zu speichern (z.B. ein lokaler Apache), und HTTPMOD auf diesen zugreifen zu lassen.
Links
- Vorstellung und Diskussion im Fhem Forum
- Clever Tanken
- Eine Anleitung, wie man das mit wget macht, gibt es hier (ist aber noch nicht ganz fertig)