Hauptmenü

BenzinpreisMonitor

Begonnen von Phil__, 16 April 2014, 18:52:21

Vorheriges Thema - Nächstes Thema

PeMue

#195
Hallo cocojambo,


http://www.clever-tanken.de
gibt leider keine Zeitinformation aus, dann kann fhem diese auch nicht auslesen. Wenn Du eine Website mit der entsprechenden Zeitinformation hast, kann ich schauen, wie diese extrahiert werden kann.

@Schiltkamp: ich habe leider keine Ahnung, wie man den User bzw. das Passwort in HTTPMOD übergibt, die commandref gibt leider auch keinen Hinweis.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

frank

wenn du den preis zb alle 5 minuten abfragst, und event-on-change aktiviert hast, wird immer ein neues event bei preisänderung erzeugt (auch der timestamp). dann kann der wert im reading nur ca 5min älter sein als der timestamp des readings.
mein nachbar ist eine tankstelle, da kann ich das mit dem fernglas gut überprüfen.  ;) das passt eigentlich besser als gedacht.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

justme1968

auch bei event-on-change wird der timestamp bei jedem schreiben des readings aktualisiert. auch wenn kein event erzeugt wird.

wenn du readings mit einem bestimmten timestamp erzeugen möchtest muss das im modul explizit berücksichtigt werden. und es kann dann Probleme mit FileLog geben.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

frank

Zitatauch bei event-on-change wird der timestamp bei jedem schreiben des readings aktualisiert. auch wenn kein event erzeugt wird.
das ist aber schade. dann müsste doch aber ein userreading (mit ReadingsVal), das durch das originale reading getriggert wird, funktionieren.

gruss frank
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

stenny73

#199
Ausserdem der Preis muss aktuell sein.

Jede Tankstelle ist verpflichtet den Preis innerhalb von 5 Minuten der MTS-K zu melden. Diese Daten werden unmittelbar an die Preisnehmer - clever-tanken usw - weitergeleitet.

Was du also nicht abfangen kannst ist wann die nächste Umstellung erfolgt und dieses hat nichts mit der letzten Meldung zutun.

Wenn du dir jedoch die durch die entstehende Kurve der vorherigen Tage ansiehst kann man schon eine gewisse Tendenz erkennen - zu mindestens bei mir in der Gegend....
FHEM auf XEN, Ubuntu-Server 14.04   - HM-Lan - Max - ZWave -WS1080 -BlueTooth

FHEM auf Ubuntu-Server 14.04   - HM-LAN

FHEM auf Raspberry Pi   - CSM für Max - HM-USB - WiFi-LED

olli84

Ich habe öfter mal folgende Meldungen:

2014.10.16 21:07:55 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out
2014.10.16 21:53:15 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out
2014.10.16 21:58:15 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out
2014.10.16 22:00:15 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out
2014.10.16 22:09:25 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out
2014.10.16 22:12:35 3: HTTPMOD got error in callback: connect to http://www.clever-tanken.de:80 timed out


timeout steht auf 5 - einfach mal erhöhen?

PeMue

... ich vermute mal, dass der Server in dieser Zeit gerade nicht erreichbar ist. Timeout erhöhen wäre sinnvoll.

Gruß PeMue
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

olli84

Danke, mit Timeout 7 hab ich nur noch ca. 2 Timeouts pro Tag. :)

Phil__

#203
Hallo an alle,

ich bin auch mal wieder aus meiner "Sommerpause" erwacht...  :P
Hier hat sich ja einiges getan, in bezug auf den Spritpreismonitor/Benzinpreismonitor.

Ersteinmal einen Dank an alle die sich hier so rege beteiligt haben. Ich habe das ganze bei mir auch mal umgesetzt und will hier mal ein komplettes Beispiel zur verfügung stellen, da der Thread schon ziemlich lang und unübersichtlich ist. Werde das Ganze dann auch auf Seite 1 im ersten Post einfügen. Für Ergänzungen, einfach hier schreiben oder eine kurze PN an mich.
Angefangen von Tankstellen define, über ReadingsGroup, Filelog, bis hin zum Plot ist hier mal alles zusammengefasst:

#########################################################
###                   Spritpreise                    ####
#########################################################
#########################################################



#########################################################
###       Spritpreise Diesel/SuperE5 - Langen        ####
#########################################################

#########################################################
###          Tankstellen - Langen             ####
#########################################################


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

#########################################################
###            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


#########################################################
###            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)}

#########################################################
###            Plot                   ####
#########################################################

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


In die 99_myUtils.pm muss folgendes eingefügt werden um in der ReadingsGroup die Preis unterschiedlich farblich darzustellen, je nach Preisniveau.
Die genauen Preisgrenzen muss natürlich jeder für sich selbst festlegen:

###################################################
###     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 .gplot Datei sieht in diesem Beispiel wie nachfolgend aus:
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



Server: Intel DH77EB + Core i3-2120 mit Ubuntu Server 14.04
Backup: Beaglebone Black
Homematic: HM-LAN-Adapter, HM-CC-RT-DN, HM-CC-TC, HM-LC-SW1-PL2, HM-SEC-RHS, HM-SEC-SC, HM-TC-IT-WM-W-EU, HM-WDS10-TH-O
Weitere: Denon-AVR, PhilipsTV, PhilipsHue, Raspi+XBMC
Nexus 7 (WebViewControl + FTUI)

iCure

Guten Tag,

danke erstmal für den ausführlichen Niederschrieb.

Hast du evtl. eine erklärung für mein allgemeines Problem mit HTTPMOD:

HTTPMOD got error in callback: connect: Ein nicht blockierender Socketvorgang konnte nicht sofort ausgeführt werden.

Ich erhalte von egal welcher Internetseite keine Werte.

Hauswart

Zitat von: Phil__ am 23 Oktober 2014, 08:47:55
Angefangen von Tankstellen define, über ReadingsGroup, Filelog, bis hin zum Plot ist hier mal alles zusammengefasst:
Das schreit für mich entweder nach einem Modul oder einem Wiki Artikel :) habe es gestern erst durch Zufall entdeckt und finde es super. Werde es die Tage ausprobieren....
1. Installation:
KNX, Tasmota (KNX), Sonos, Unifi

2. Installation:
HM-CFG-USB, Unifi (, SIGNALduino 868, MySensors, SIGNALduino 433)

Puschel74

Hallo,

das Modul gibt es bereits - nennt sich HTTPMOD  ;)
Aber Wiki-Artikel wär nicht verkehrt.

Grüße
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

iCure

Zitat von: iCure am 23 Oktober 2014, 14:37:13
Guten Tag,

danke erstmal für den ausführlichen Niederschrieb.

Hast du evtl. eine erklärung für mein allgemeines Problem mit HTTPMOD:

HTTPMOD got error in callback: connect: Ein nicht blockierender Socketvorgang konnte nicht sofort ausgeführt werden.

Ich erhalte von egal welcher Internetseite keine Werte.

Keiner eine Idee?
OS ist Windows 7. Verbindung zum Internet besteht, Pushover usw. funktioniert, nur eben nicht das Seiten auslesen anhand von HTTPMOD.

Puschel74

#208
Hallo,

da du von egal welcher Internetseite keine Werte bekommst wäre der Server Windows Bereich eher was für die Frage.
Hier geht es ja nur um den BenzinpreisMonitor und nicht um die Werte egal welcher Seite  ;)

ZitatKeiner eine Idee?
Dann wäre evtl. auch das Nachfragen nicht nötig.
Richtiger Bereich = schneller eine Antwort = schneller glücklich.

Aber vielleicht findet sich hier ja noch jemand der dir helfen kann.
Da musst du aber warten bis derjenige hier vorbei kommt und deine Frage findet (so er auch den BenzinpreisMonitor verwendet).

Grüße

P.S.: Sorry das ich dir leider nicht weiter helfen kann.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

bert

Vielen Dank an alle Teilnehmer in diesem Fred. Durch mitlesen habe ich viel gelernt, z.B. über Log-Dateien und ganz speziell über SVG-Plot´s. Dabei haben sich für mich viele Fragen geklärt, bezüglich des Zusammenspiel´s der Fhem-Dateien.
2 Dinge hab ich allerdings noch nicht verstanden. @Phil du verwendest die Group´s "Spritpreisübersicht", "Spritpreisverlauf" und "Spritpreise", wäre es nicht übersichtlicher nur 1 Group zu nehmen, oder muss das so sein? Wenn ja hätte ich gerne eine Erklärung.
Das 2. woher weiss Fhem, dass für die Farbanpassung die 99_myUtils.pm zu benutzen ist? Nirgendwo habe ich einen Hinweis auf diese Datei gefunden.

Gruß Bert