Spritpreismonitor und Tankalarm – Spritpreise der Umgebung per FHEM überwachen

Jeder Autofahrer unter euch hatte bestimmt schonmal das Problem, nicht zu wissen, ob es sich nun lohnt tanken zu fahren oder nicht. Zwar gibt es schon einige Online-Portale oder Apps, die einen über den aktuellen Benzinpreis informieren.

Aber wäre es nicht entspannter, einfach nur einen Blick auf das Tablet im Flur werfen zu müssen und direkt die Benzinpreise der Tankstellen in der Umgebung ablesen zu können? Oder bei einem niedrigen Preisniveau eine Art "Tankalarm" auf das Handy zu bekommen? Ich finde schon, deswegen werde ich euch in diesem Beitrag erklären, wie ihr die Preise der umliegenden Tankstellen in FHEM einbindet und übersichtlich darstellt. Des Weiteren zeige ich euch, wie ihr euch einen eigenen Tankalarm definiert und die Preise ansprechend in TabletUI anzeigen könnt.

Vorbereitung

Die Einbindung erfolgt über das Hilfsmodul HTTPMOD. Mit Hilfe dieses Moduls lassen sich Daten aus dem Internet abfragen und für FHEM in Readings umwandeln. Die benötigten Benzinpreise werden davon vom Portal www.clever-tanken.de abgerufen.

Damit man auch die richtigen Daten bekommt, ist es notwendig, sich die ID der gewünschten Tankstelle herauszusuchen. Dazu einfach das Portal besuchen und über das Suchfeld die gewünschte Tankstelle heraussuchen. In der URL findet ihr nun die Tankstellen-ID:

http://www.clever-tanken.de/tankstelle_details/11133

In diesem Fall ist die Tankstellen-ID 11133. Wollt ihr mehrere Tankstellen in FHEM einbinde, dann sucht euch nun alle benötigten IDs raus.

Definition in FHEM

Wie oben schon erwähnt, erfolgt die Definition über das Hilfsmodul HTTPMOD. Benötigt wird dazu die Tankstellen-ID bzw. die URL.

define TankstelleOWM HTTPMOD http://www.clever-tanken.de/tankstelle_details/11133 600

Das definierte Hilfsmodul HTTPMOP liefert jedoch zunächst keine Daten. Damit man nun die gewünschten Werte erhält, sind einige Attribute notwendig. Um genau zu sein, definiert man sich nun durch das Attribut "userReadings" die Readings selbst.

attr TankstelleOWM group Benzinpreis;
attr TankstelleOWM icon gasoline;
attr TankstelleOWM alias OWM;
attr TankstelleOWM room Spritpreise;
attr TankstelleOWM readingsName_Diesel Diesel;
attr TankstelleOWM readingsName_SuperE5 SuperE5;
attr TankstelleOWM readingsRegex_Diesel <span>Diesel</span>[^0-9]+([0-9.]+);
attr TankstelleOWM readingsRegex_SuperE5 <span>Super E5</span>[^0-9]+([0-9.]+);
attr TankstelleOWM timeout 5;

Sollte die Tankstelle noch weitere Kraftstoffe anbieten, so lassen sich diese ebenfalls durch ein userReading hinzufügen. INFO: Es lassen sich nur Kraftstoffe hinzufügen, welche über die MTS-K API bereitgestellt werden. Bei CleverTanken erkennt man dies durch eine Kennzeichnung unter dem Kraftstoffnamen.

attr TankstelleOWM readingsName_SuperE10 SuperE10 
attr TankstelleOWM readingsRegex_SuperE10 <span>Super E10</span>[^0-9]+([0-9.]+)

Je nach Wunsch kann dann noch das stateFormat angepasst werden:

attr TankstelleOWM stateFormat {sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",ReadingsVal("TankstelleARAL","Diesel",0),ReadingsVal("TankstelleARAL","SuperE5",0),ReadingsVal("TankstelleARAL","SuperE10",0))}

Da die oben aufgezählten Anweisungen noch auf eine alte Version des HTTPMOD-Moduls basieren, ist das Umstellen auf die neue Struktur notwendig. Dies geschieht über das Setzen eines Attributes und das anschließende updaten der Readings:

attr TankstelleOWM enableControlSet 1 
set TankstelleOWM upgradeAttributes

Nun sollten die Spritpreise als Reading angezeigt werden.

Zum Schluss dann noch das stateFormat anpassen, damit in der Device-Übersicht die Preise direkt abgelesen werden können. Hier könnt ihr natürlich auch nur den von euch getankten Kraftstoff anzeigen lassen. Folgendes Attribut zeigt den Literpreis aller drei definierten Kraftstoffe an:

attr TankstelleOWM stateFormat {
sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",
ReadingsVal("TankstelleOWM","Diesel",0),
ReadingsVal("TankstelleOWM","SuperE5",0),
ReadingsVal("TankstelleOWM","SuperE10",0))}

Um den Spritpreis vergleichen zu können, ist es natürlich sinnvoll sich mehrere Tankstellen aus der Umgebung zu definieren. Ich habe mir insgesamt vier Tankstellen in FHEM eingerichtet.

Einrichtung einer readingsGroup

Mit Hilfe einer readingsGroup lassen sich die Spritpreise noch ein bisschen komfortabler anzeigen. Dazu definieren wir uns eine readingsGroup mit vier Spalten - den Namen und je eine Spalte für Diesel, Super und E10.

define GroupSpritpreise readingsGroup 
<Tankstelle>,<Diesel>,<Super>,<E10>
TankstelleOWM:Diesel,SuperE5,SuperE10
TankstelleREAL:Diesel,SuperE5,SuperE10
TankstelleESSO:Diesel,SuperE5,SuperE10
TankstelleARAL:Diesel,SuperE5,SuperE10
attr GroupSpritpreise room Spritpreise

Anschließend kann man sich daran machen, diese readingsGroup etwas visuell aufzupeppen.

attr GroupSpritpreise valueFormat {"%.2f €"} 
attr GroupSpritpreise style style="font-size:18px"

Wer möchte kann dann noch über das Attribut "alias" die Überschrift der readingsGroup anpassen.

attr GroupSpritpreise alias Spritpreise

Statistik über die Spritpreise

Das Anzeigen der Spritpreise ist alleine gesehen schon eine coole Sache, aber interessant wird es erst, wenn man sich zusätzlich eine Art Tankalarm definiert.

Die Idee ist, dass man die Spritpreise über einen längeren Zeitpunkt beobachtet und bei einem Preisniveau unter den Durchschnittswerten sich eine Nachricht auf das Hnady zukommen lässt.

define SpritpreiseStatistik statistics Tankstelle.*
attr SpritpreiseStatistik minAvgMaxReadings Diesel,SuperE5,SuperE10

Absofort werden für die Readings Diesel, SuperE5 und SuperE10 der Minimal-, Maximal- und der Durchschnittswert von unterschiedlichen Zeiträumen ermittelt. Zur Verfügung steht ein Stunden-, Tages-, Monats- und Jahreszeitraum.

Diese Readings machen wir uns zu Nutzen und ermitteln daraus, ob es sich aktuell lohnt, tanken zu fahren. Damit wir jedoch mit diesen Readings arbeiten können, erstellen wir uns aus den Min-, Max- und Avg-Werten einzelne Readgings.

attr SpritpreiseStatistik singularReadings 
Tankstelle.*:.*:(Min|Avg|Max):(Hour|Day|Month)

Absofort erhält man nun einzelne Readings für die ermittelten statistischen Werte. Nach einer gewissen Zeit beinhalten diese auch sinnvolle Werte. Die Monats-Werte brauchen natürlich etwas länger um sinnvolle Werte liefern zu können.

Tankalarm

INFO: Ich habe mit der Version 2.0 einen verbesserten Spritalarm erstellt, der mehr Einstellmöglichkeiten bietet --> Spritmonitor 2.0

Mit den oben erstellen statistischen Werte kann man sich nun einen eigenen Tankalarm definieren. Ich habe mir dazu ein kleine SubRoutine erstellt und rufe sie mit Hilfe eines Notifys auf.

Für die SzbRoutine werden folgende statistische Readings benötigt:

Mit diesen drei Readings habe ich mir einen kleinen "Abfragemarathon" erstellt um herauszufinden, ob es momentan sinvoll ist zu tanken. Dabei habe ich den aktuellen Spritpreis genommen und mit den Stunden-, Tages- und Monatsdurchschnittswerten verglichen. Um das Ergebnis dieser Abfrage zu bewerten, habe ich mir ein Bewertungssystem überlegt.

Ergebnis

Bewertung

größer aller Durchschnittswerte

kleiner als Stundendurchschnitt

kleiner als Tagesdurchschnittswert

kleiner als Stunden- und Tagesdurchschnittswert

kleiner als Monatsdurchschnittswert

kleiner als Stunden- und Monatsdurchschnittswert

kleiner als Tages- und Monatsdurchschnittswert

kleiner als Stunde,- Tages- und Monatsdurchschnittswert

Im Grunde baut das Bewertungsystem auf eine unterschiedliche Bewertung der Durchschnittswerte auf. Ein aktueller Preis kleiner als der Stundendurchschnittswert ist nicht so viel wert, wie das Unterschreiten des Tagesdurchschnittswertes. Ein Unterschreiten des Monatsdurchschnittswertes ist dabei natürlich noch besser. Weiter besser wird es entsprechend bei einer Kombination.

Natürlich lässt sich auch ein anderes Bewertungssystem aufbauen. Des Weiteren lassen sich auch die Max- und Minwerte anstelle der Durchschnittswerte nehmen. Wer also ein anderes Bewertungssystem bevorzugt, kann dieses mir gerne in den Kommentaren wissen lassen. Ich bin für jede Möglichkeit offen.

Die dazu benötigte SubRoutine wird einfach in die "99_myUtils.pm" eingetragen.

sub Tankalarm($$) {

# Variablen definieren my ($Tankstelle, $Kraftstoff) = @_;
my $ALIAS = AttrVal($Tankstelle,"alias",$Tankstelle);
my $aktuell = ReadingsVal("$Tankstelle","$Kraftstoff",0); my $alt = ReadingsVal("$Tankstelle","Backup",0);
my $stunde = "stat".$Kraftstoff."HourAvg"; my $tag = "stat".$Kraftstoff."DayAvg"; my $monat = "stat".$Kraftstoff."MonthAvg";
my $hourAVG = ReadingsVal("$Tankstelle","$stunde",0); my $dayAVG = ReadingsVal("$Tankstelle","$tag",0); my $monthAVG = ReadingsVal("$Tankstelle","$monat",0); my $msg = 0;
if($aktuell != $alt) { if($aktuell < $hourAVG) { if($aktuell < $dayAVG) { if($aktuell < $monthAVG) {$msg = "$ALIAS: ★★★★★ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €), Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";} else {$msg = "$ALIAS: ★★★☆☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Tagesdurchschnitt ($dayAVG €)";} } else { if($aktuell < $monthAVG) {$msg = "$ALIAS: ★★★★☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stunden- ($hourAVG €) und Monatsdurchschnitt ($monthAVG €)";} else {$msg = "$ALIAS: ★☆☆☆☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Stundendurchschnitt ($hourAVG €)";} } } else { if($aktuell < $dayAVG) { if($aktuell < $monthAVG) {$msg = "$ALIAS: ★★★★☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tages- ($dayAVG €) und Monatsdurchschnitt ($monthAVG €)";} else {$msg = "$ALIAS: ★★☆☆☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Tagesdurchschnitt ($dayAVG €)";} } else { if($aktuell < $monthAVG) {$msg = "$ALIAS: ★★★☆☆ - $Kraftstoff: $aktuell € - Aktueller Spritpreis liegt unter dem Monatsdurchschnitt ($monthAVG €)";} else {$msg = "$ALIAS: ☆☆☆☆☆ - $Kraftstoff: $aktuell € - Kraftstoff aktuell sehr teuer";} } } } else {$msg = "keineAenderung";}
fhem("setreading $Tankstelle Backup $aktuell");
return $msg; }

Der SubRoutine wird das Tankstellen-Device ($Tankstelle) und der zu überwachende Kraftstoff ($Kraftstoff) übergeben. Anschließend werden einige Variablen definiert. Zum Einen die Variablen "stunde,tag,monat" erhalten den Namen der benötigten Readings. Zum Anderen die Variablen "hourAVG,dayAVG,monthAVG", welche die benötigten Readings beinhalten - z.B. für SuperE10: statSuperE10HourAVG, statSuperE10DayAVG, statSuperE10MonthAVG.

Zuerst wird nun überprüft, ob der aktuelle Kraftstoffpreis unterschiedlich zum vorherigen Preis ($alt) ist. Ist dies der Fall, wird in den darauf folgenden if-Abfragen die Variable "msg" mit der entsprechenden Nachricht beschrieben.

Liegt keine Preisänderung vor, so wird die Nachricht auf "keineAenderung" gesetzt.

Zum Schluss wird dann noch der aktueller Preis als Backup in das entsprechende Tankstellen-Device geschrieben und die Nachricht als Rückgabewert zurückgegeben.

Das Aufrufen der SubRoutine erfolgt nun über ein Notify, welches bei einer Preisänderung auslöst.

define SpritkostenNotify notify Tankstelle.*:SuperE10:.* {
my $Nachricht = Tankalarm("$NAME","SuperE10");
if($Nachricht ne "keineAenderung"){
fhem("set Telegram message $Nachricht");}
}

Dieses Notify löst jetzt bei einer Preisänderung des Kraftstoffes "SuperE10" aus. Überwacht werden dabei alle Tankstellen-Devices (Tankstelle.*). Der überwachte Kraftstoff kann natürlich je nach Wunsch angepasst werden.

Beim Auslösen wird dann die SubRoutine aufgerufen und die Variable "Nachricht" mit der entsprechenden Nachricht beschrieben. Liegt eine Tankempfehlung vor, so wird über Telegram der Tankalarm gesendet. Hier lassen sich natürlich auch andere Kommunikationswege einsetzen. Bei der oben beschriebenen Definition des Notify-Devices muss dem Telegram-Device die Empfänger-ID mitgeteilt werden:

attr Telegram defaultPeer 24xxxxxxx 

Wurde alles definiert, erhält man absofort eine Nachricht über Telegram, ob es sich aktuell lohnt, tanken zu fahren. Es kann ein paar Tagen dauern bis die Durchschnittswerte aussagekräftig werden. Erst recht die Monatsdurchschnittswerte brauchen ein paar Tage bis sich ein aussagekräftiger Wert gebildet hat.  

Der eingerichtete Tankalarm kann natürlich auch getestet werden. Dazu einfach über "setreading" den Preis für SuperE10 manuell auf einen niedrigen Wert festlegen.

setreading TankstelleESSO SuperE10 1.10

Da der Literpreis von 1.10 höchstwahrscheinlich alle Durchschnittswerte unterbietet, solltet ihr nun eine 5-Sterne-Tankempfehlung auf euer Handy bekommen. Beim nächsten Aktualisieren der Spritpreise wird der manuell gesetzte Wert wieder durch den richtigen Wert überschrieben. Wer möchte, kann die Aktualisierung auch manuell starten:

set TankstelleESSO reread

Manuelles Abfragen der Preissituation

Neben dem automatischen Tankalarm, kann man sich eine kleine SubRoutine schreiben, um auch ein manuelles Abfragen der Preissituation über Telegram zu ermöglichen. Dazu einfach in der "99_myUtils.pm" eine weitere SubRoutine erstellen.

sub Telegram($$) {
my ($Device, $msgText) = @_;
my $Nachricht = ReadingsVal($Device,$msgText,"0");
my @array = split(/ /,$Nachricht);
if(@array[0] eq "Spritkosten")
{
my $Device = "Tankstelle".@array[1];
my $aktuell = ReadingsVal("$Device","@array[2]",0);
fhem("set Telegram message Aktueller Preis für @array[2] an der @array[1]-Tankstelle: $aktuell €");
}
}

Damit die erstellte SubRoutine auch die empfangene Nachricht erhält, ist das Definieren eines weiteren Notifys nötig:

define TelegramNotify notify Telegram:msgText:.* { Telegram("Telegram","msgText")}

Der SubRoutine "Telegram" wird nun beim Empfangen einer Nachricht der Inhalt dieser übergeben. Innerhalb der Routine wird der empfangende Nachrichtenstring aufgeteilt und in ein Array abgespeichert. Das erste Wort beinhaltet das Steuerungswort "Spritkosten". Das zweite Wort dann die gewünschte Tankstelle und das dritte den gewünschten Kraftstoff. So lassen sich zum Beispiel durch senden der Nachricht "Spritkosten ESSO SuperE10 der entsprechende Preis ausgeben.

Nachrichten nur zu bestimmten Zeiten

Wem die vielen Nachrichten etwas nerven, bzw. nur welche zu bestimmten Zeitpunkten haben möchte, der kann natürlich das Notify nur zu bestimmten Zeitpunkten aktivieren. Dazu kann man sehr gut den WeekdayTimer verwenden, mehr dazu auf meinem Blogbeitrag zum Modul.​

define TimerSprit WeekdayTimer SpritkostenNotify Mo-Fr|16:00|active Mo-Fr|19:00|inactiv

Jetzt wird das Notify, welches für das Versenden der Nachrichten verantwortlich ist, nur von Montag bis Freitag zwischen 16 und 19 Uhr aktiviert. Außerhalb dieser Zeiträume ist es deaktiviert und versendet somit keine Nachrichten.

Spritmonitor in TabletUI einbinden

Neben der readingsGroup und dem Tankalarm lässt der Spritmonitor auch im alternativen FrontEnd TabletUI einbinden.

Der Aufbau ist im Grunde nichts anderes als eine Tabelle. Ähnlich wie ich sie bereits im Abfahrtsmonitor verwende. Den benötigten Code könnt ihr auf meinem Blog-Beitrag über mein TabletUI nachlesen.

Ich hoffe ich konnte euch das Einrichten eines Tankalarms verständlich erklären und euch inspirieren diesen selber umzusetzen. Wie oben schon erwähnt, solltet ihr für das Bewertungssystem eine bessere Idee haben, so lasst sie mir diese gerne über die Kommentare zukommen.

Hinterlasse einen Kommentar

41 Kommentare auf "Spritpreismonitor und Tankalarm – Spritpreise der Umgebung per FHEM überwachen"

Benachrichtige mich zu:
avatar
Fotos und Bilder
 
 
 
sonstiges Dateiformat
 
 
 
Sortiert nach:   neuste | älteste | beste Bewertung
Peter Gottschalk
Gast
Peter Gottschalk

Hallo Daniel

Wenn man noch wissen möchte wann die letzte Preisänderung war.

attr TankstelleOWM readingsName_aktZeit  aktZeit

attr TankstelleOWM readingsRegex_aktZeit 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))

vielleicht für einige interesant.

 

Gruß Peter

GordonShumway
Gast
GordonShumway

Hey Daniel,

hab deine Anleitung nachgebaut. Danke erstmal.

 

Dabei sind mir zwei kleine Fehler aufgefallen:

Bei define SpritkostenNotify

fehlt einmal das Wort notify und

bei attr SpritpreiseStatistik minAvgMaxReadings Diesen,SuperE5,SuperE10

sollte es wohl Diesel und nicht Diesen heißen

Gruß

Gordon

GordonShumway
Gast
GordonShumway

Einen hab ich noch gefunden:

Das define
define SpritkostenNotify Tankstelle.*:SuperE10:.* {
my $Nachricht = Tankalarm("$NAME","SuperE10");
if($Nachricht ne "keineAenderung"){
fhem("set Telegram message $Nachricht");}
}

braucht am Ende noch eine geschweifte Klammer mehr.

GordonShumway
Gast
GordonShumway

Stimmt da hab ich mich verguckt…

Tobikus
Gast
Tobikus
Hallo Daniel, Erstmal großes Lob für die super Beschreibungen!!! Danke dafür. Nun zu meinem Problem. Habe eigentlich soweit alles wie von dir beschrieben angelegt. Bis auf Telegram. Hier heisst mein Device teleBot. Preise werden geholt und richtig angezeigt. Soweit alles fein. Bis auf die Benachrichtigung via Telegram. Hier tut sich leider nichts. Im EventViewer sehe ich das die „Anfrage“ nach einem Spritpreis eingeht. Aber anscheinend laufen die SubRoutinen nicht richtig. Vielleicht hast Du einen Tipp oder eine Idee. Hier meine beiden Routinen. Wie gesagt, angepasst auf teleBot: sub Tankalarm2($$) { my ($Tankstelle, $Kraftstoff) = @_; my $ALIAS = AttrVal($Tankstelle,"alias",$Tankstelle); my… weiterlesen »
Tobikus
Gast
Tobikus

DANKE DIR VORAB! Bin hier etwas am verzweifeln.

Tobikus
Gast
Tobikus

Hallo Daniel,
Danke für die schnelle Antwort. Die Gänsefüßchen sind richtig. Das scheint im Kommentarfeld falsch formatiert zu sein. Wenn ich die Subrountine teste, bekomme ich folgende Meldung:

Undefined subroutine &main::Tankalarm called at (eval 24818) line 1.

Also scheint hier wohl schonmal was falsch zu sein. Sorry, aber ich bin noch Anfänger und kenne mich da noch nicht so aus.

LG
Tobias

Tobikus
Gast
Tobikus
Hallo Daniel. Vielen DANK für deine Unterstützung!! Ich hatte alles genauso wie von dir beschrieben angelegt, inkl. der Subroutine! Als es dann gestern nicht funktionniert hat und ich auf Fehlersuche war, habe ich erst die Subroutine geändert. Nachdem ich wieder den Ursprung hergestellt habe ging es nach wie vor nicht. Aber manchmal ist ein alter Spruch doch war: REBOOT TUT GUT!!!…… Nachdem ich mal auf Verdacht shutdown restart gemacht habe, gingen auf einmal die Telegram Nachrichten ein. Sie kommen zwar jetzt wenn ich manuell Abfrage 2x bei mir an, aber das werd ich schon irgendwie rausbekommen. Wenn nicht ist auch… weiterlesen »
Alex
Gast
Alex

Hallo Daniel,
danke erst mal für die gute Anleitung. Wollte nun auch Autogas einbinden.

wie wäre der Regex für Autogas?
z.B. bei folgender Tankstelle:
http://www.clever-tanken.de/tankstelle_details/35621

über diese Syntax wird es nicht erkannt: Autogas[^0-9]+([0-9.]+)

Danke

Gruß
Alex

Friedhelm Rech
Gast
Friedhelm Rech
Hallo Daniel. Vielen herzlichen Dank für die SUPER gemachte Anleitung. Es hat alles auf Anhieb funktioniert ( habs nur bis zum Punkt „Statistik über die Spritpreise“ gemacht). Ich bitte um Entschuldigung für folgende Fragen. Da ich erst vor kurzem mit FHEM angefangen habe, bin ich noch ein blutiger Anfänger und habe keine Erfahrung. Was mir aufgefallen ist beim Punkt „Einrichten einer readingsGroup“: 1) define GroupSpritpreise……. Bei mir steht über der Tabelle „GroupSpritpreise“, bei Dir auf dem Bild steht „Spritpreise“. Sollte es dann nicht „define Spritpreise…..“ heißen ? Oder macht man das über ALIAS ? Da ich keinen Vermerk gefunden habe,… weiterlesen »
Friedhelm Rech
Gast
Friedhelm Rech

Hallo Daniel.

Wer beim Benzinpreis die obligatorische „9“ am Schluß haben möchte, muß folgendes ändern:

attr TankstelleOWM stateFormat {
sprintf("Diesel: %.2f € - Super: %.2f € - E10: %.2f €",
ReadingsVal("TankstelleOWM","Diesel",0),
ReadingsVal("TankstelleOWM","SuperE5",0),
ReadingsVal("TankstelleOWM","SuperE10",0))}

in

attr TankstelleOWM stateFormat {
sprintf("Diesel: %.2f9 € - Super: %.2f9 € - E10: %.2f9 €",
ReadingsVal("TankstelleOWM","Diesel",0),
ReadingsVal("TankstelleOWM","SuperE5",0),
ReadingsVal("TankstelleOWM","SuperE10",0))}

Statt 1.10 € wird dann 1.109 € angezeigt.

Auch bei der readingsGroup muss folgendes geändert werden:

attr GroupSpritpreise valueFormat {"%.2f €"}

in

attr GroupSpritpreise valueFormat {"%.2f9 €"}

Auch hier wird statt 1.10 € dann 1.109 € angezeigt.

Gruß,
Friedhelm.

Friedhelm Rech
Gast
Friedhelm Rech
Hallo an Alle. Eine Frage hätte ich noch. Mit der „Statistik über die Spritpreise“ habe ich zwar bei jeder Tankstelle die Readings „stat…“, also Min, Max, Durchschnitt Tag, Monat und Jahr, aber eben nur unter der jeweiligen Tankstelle. Wie kann ich eine gezielte Auflistung erstellen, das ich nur bestimmte „stats“ untereinander angezeigt bekomme ? So zum Beispiel: Tankstelle A statDieselDay Min: 1.10 Avg: 1.13 Max: 1.21 Tankstelle A statDieselMonth Min: 1.10 Avg: 1.13 Max: 1.21 Tankstelle A statDieselYear Min: 1.10 Avg: 1.13 Max: 1.21 Tankstelle A statSuperE5Day Min: 1.27 Avg: 1.30 Max: 1.39 Tankstelle A statSuperE5Month Min: 1.27 Avg: 1.30… weiterlesen »
Sebastian
Gast
Sebastian

Hallo Daniel,

vielen Dank für das tolle HowTo, das hat alles wunderbar funktioniert, jetzt bin ich allerdings noch Anfänger was FHEM angeht, vllt. deshalb meine Frage:

Gibt es die Möglichkeit, das Skript nur zu bestimmten Zeiten ausführen zu lassen? z.B. in der Woche von 16:00 – 19:00 Uhr? (Tanke meist nach Feierabend)

Gibt es alternativ die Möglichkeit, KEINE Benachrichtigung über eine Verschlechterung des Spritpreises zu bekommen? Wenn das Benzin in der Woche Spät Abends oder früh Morgens deutlich teurer wird, benötige ich idR keine Info.

Vielen Dank für deine Hilfe

viele Grüße

Sebastian

Peer
Gast
Peer
Moin Daniel, super klasse, habe mir die Spamming Funktion (das notify) deaktiviert, weil einfach zuviel Spam, ich muss doch nur einmal alle 2 Wochen tanken, da brauche ich nicht jeden Tag 6 mal alle Statusupdates via Telegram aufm mobile.. Das aber nur am Rande. Wiedermal die Logeinträge, weiß jmd Rat? 2017.04.26 21:43:36 3: Tankstelle_aral: Defined with URL http://www.clever-tanken.de/tankstelle_details/XXXX(removed here for provacy stuff) and interval 600 2017.04.26 21:43:36 3: Tankstelle_aral: the attribute readingsName_Diesel should no longer be used. Please use reading01Name syntax instead 2017.04.26 21:43:36 3: Tankstelle_aral: For most old attributes you can specify enableControlSet and then set device upgradeAttributes to… weiterlesen »
Sven
Gast
Sven

Moin Moin
Leider komme ich beim erstellen des notify nicht weiter
ich gebe das oben in der Befehlleiste FHEM ein :
define SpritkostenNotify notify Tankstelle.*:SuperE10:.* { my $Nachricht = Tankalarm(„$NAME“,“SuperE10″); if($Nachricht ne „keineAenderung“){ fhem(„set teleBot message $Nachricht“);} }

und bekomme diese Fehlermeldung:
Missing right curly or square bracket at (eval 31371) line 1, at end of line
syntax error at (eval 31371) line 1, at EOF

Unknown command if($Nachricht, try help.
Unknown command }, try help.

was übersehe ich, wo liegt der fehler?
Vielleicht kannst du mir ja weiterhelfen, oder jemand anderes? 🙂

Gruß
Sven

Ralf Büttner-Arlt
Gast
Ralf Büttner-Arlt

Hallo,
ich habe heute den Spritpreismonitor integriert.
Da ich keine Benachrichtigung brauche habe ich auch nur die erste Version übernommen. Jetzt wollte ich mit Hilfe des Statistikmodul die Tendenz auslesen und in der TabletUI mittels Klimatrend anzeigen.
Nur leider werden die Tendenzen nicht als Reading angelegt.

wpDiscuz