BenzinpreisMonitor

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

Vorheriges Thema - Nächstes Thema

kumue

ich habe mir ein Reading angelegt, wann FHEM die Daten letztmalig geholt hat...
Aber wenn ich deinen Post richtig verstanden habe, wilst Du die Zeit aus dem html-Code ziehen...


attr DEIN_SPRITPREIS_MONITOR userReadings Stand {lastCheck}

in der 99_myUtils.pm die Funktion lastCheck eingetragen

sub lastCheck() {
    my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst ) =
      localtime( time() );
    return sprintf(
        "%02d:%02d %02d.%02d.%4d",
        $hour, $min, $mday,
        ( $mon + 1 ),
        ( $year + 1900 )
    );
}


Wenn FHEM die Daten holt, wird das Reading Stand aktualisiert.
sieht bei mir dann so aus:
Stand     18:17 01.11.2016

Ascos

Zitat von: kumue am 01 November 2016, 19:19:14
ich habe mir ein Reading angelegt, wann FHEM die Daten letztmalig geholt hat...
Aber wenn ich deinen Post richtig verstanden habe, wilst Du die Zeit aus dem html-Code ziehen...

Hi Kumue,

danke für deine Antwort. Genau, mein Plan ist, mir anzeigen zu lassen, wann die Spritpreise online das letzte Mal aktualisiert wurden.
Das Ganze nennt sich:

Letzte MTS-K Preisänderung: 01.11.2016 16:30

Diesen Wert würde ich gerne extrahieren. Denn es kann ja gut sein, das FHEM sich aktualisiert, aber die Werte unverändert und somit alt sind.

Viele Grüße
Tino
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Cruiser79

Zitat von: Ascos am 01 November 2016, 19:27:47
Hi Kumue,

danke für deine Antwort. Genau, mein Plan ist, mir anzeigen zu lassen, wann die Spritpreise online das letzte Mal aktualisiert wurden.
Das Ganze nennt sich:

Letzte MTS-K Preisänderung: 01.11.2016 16:30

Diesen Wert würde ich gerne extrahieren. Denn es kann ja gut sein, das FHEM sich aktualisiert, aber die Werte unverändert und somit alt sind.

Viele Grüße
Tino
Poste doch mal, welche URL du genau abfragst und wie du momentan versucht hast, den Wert auszulesen?

Gruß,
Tim
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Pankratius

#393
Zitat von: Ascos am 01 November 2016, 19:27:47
Hi Kumue,

danke für deine Antwort. Genau, mein Plan ist, mir anzeigen zu lassen, wann die Spritpreise online das letzte Mal aktualisiert wurden.
Das Ganze nennt sich:

Letzte MTS-K Preisänderung: 01.11.2016 16:30

Diesen Wert würde ich gerne extrahieren. Denn es kann ja gut sein, das FHEM sich aktualisiert, aber die Werte unverändert und somit alt sind.

Viele Grüße


Tino

Hallo Tino,

lustig, genau das habe ich heute vormittag gemacht.

Hier meine Codes:

fhem.cfg

define Geilenkirchen HTTPMOD http://www.clever-tanken.de/tankstelle_details/52861 600
attr Geilenkirchen userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex
attr Geilenkirchen group Spritpreise
attr Geilenkirchen icon car
attr Geilenkirchen reading01Name Diesel
attr Geilenkirchen reading01Regex <span>Diesel</span>[^0-9]+([0-9\.]+)
attr Geilenkirchen reading02Name SuperE10
attr Geilenkirchen reading02Regex <span>Super E10</span>[^0-9]+([0-9\.]+)
attr Geilenkirchen reading03Name aktZeit
attr Geilenkirchen reading03Regex 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))
attr Geilenkirchen reading04Name test
attr Geilenkirchen reading04Regex Letzte MTS-K Preisänderung: (([01]?\d|2[0-3]):([0-5]?\d))
attr Geilenkirchen room Spritpreise
attr Geilenkirchen stateFormat SuperE10 Diesel aktZeit-1
attr Geilenkirchen timeout 5

define Jet HTTPMOD http://www.clever-tanken.de/tankstelle_details/13660 600
attr Jet userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex
attr Jet group Spritpreise
attr Jet icon gasoline
attr Jet reading01Name Diesel
attr Jet reading01Regex <span>Diesel</span>[^0-9]+([0-9\.]+)
attr Jet reading02Name SuperE10
attr Jet reading02Regex <span>Super E10</span>[^0-9]+([0-9\.]+)
attr Jet reading03Name aktZeit
attr Jet reading03Regex 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))
attr Jet room Spritpreise
attr Jet stateFormat SuperE10 Diesel aktZeit-1
attr Jet timeout 5

define Spritpreise readingsGroup (PM24|Geilenkirchen|Jet):(SuperE10|Diesel).*
attr Spritpreise group Spritpreisuebersicht
attr Spritpreise notime 1
attr Spritpreise room Spritpreise
attr Spritpreise valueFormat {'%.2f €'}

und in tablet UI

<li data-row="5" data-col="4" data-sizex="2" data-sizey="1">
                                        <header><div data-type="label" class="large">Spritpreise</div></header>
                                        <table style="width:100%" class="top-space">
                                                <tr>
                                                        <td>Tankstelle</td>
                                                        <td>E10</td>
                                                        <td>Diesel</td>
                                                        <td>Zeit</td>
                                                </tr>
                                                <tr>
                                                        <td>GK</td>
                                                        <td>
                                                                <div data-type="label" data-device="Geilenkirchen" data-part="1" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="Geilenkirchen" data-part="2" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="Geilenkirchen" data-part="4" class="cell narrow"></div>
                                                        </td>
                                                </tr>
                                                <tr>
                                                        <td>Beggendorf</td>
                                                        <td>
                                                                <div data-type="label" data-device="PM24" data-part="1" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="PM24" data-part="2" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="PM24" data-part="4" class="cell narrow"></div>
                                                        </td>
                                                </tr>
                                                <tr>
                                                        <td>Jet</td>
                                                        <td>
                                                                <div data-type="label" data-device="Jet" data-part="1" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="Jet" data-part="2" class="cell narrow"></div>
                                                        </td>
                                                        <td>
                                                                <div data-type="label" data-device="Jet" data-part="4" class="cell narrow"></div>
                                                        </td>
                                                </tr>
                                        </table>
                                </li>

Hier das Ergebnis:


Ich habe nur die Uhrzeit ausgegeben um die Anzeige nicht zu groß werden zu lassen.

Das Grundmuster habe ich aus dem Wiki genommen und das tablet UI von jürgensTechnickwelt (Jürgen: Danke für die tollen Vorlagen )

Viel Spaß
Rüdiger


Ascos

Hallo Rüdiger,

das ist ja super, vielen Dank. Funktioniert einwandfrei.
Was für ein Timing.

Viele Grüße
Tino
1x RaspberryPi 3, HMUART, HMLAN
4x HM-CC-RT-DN, 4x HM-Sec-SCo, 4x HM-TC-IT-WM-W-EU, 1 Jeelink, 4 Lacrosse Fühler, 2 LD382A
1x ZBox mit Kodibuntu, mehrere schaltbare Steckdosen

Pankratius

Hallo Tino,

aktuell habe ich die Preise farblich hervorgehoben ( < 1.10, <1.20,>1.20).
Aber im Moment habe ich keine Idee wie ich es hinbekomme die Zeit rot zu markieren wenn der Zeitpunkt länger als
15 Stunden alt ist und evlt. grün wenn er kürzer als 1 Stunde.

Da bin ich noch am grübeln,
vielleicht hat jemand eine Idee.

Viele Grüße
Rüdiger

pHiDdeath

hallo zusammen, forgendes Problem. habe alles nach Anleitung (http://www.fhemwiki.de/wiki/Spritpreismonitor) gemacht, funzt auch soweit, nur bekomme ich es nicht hin das mir der Superplus preis angezigt wird. jemand eine idee ?

grüße

hartenthaler

Hallo pHiDdeath!
Magst Du nicht noch ein paar mehr Infos preisgeben? Oder sollen wir mal raten?

Also: Was bekommst Du nicht hin? Welche Tankstelle? Hat die überhaupt Superplus? Wie sieht die Definition Deines Devices aus? Was genau geht nicht? Welche Fehlermeldung kommt im Logfile? etc. ....

Hilfe kann man nur bekommen, wenn man es den Helfern nicht unmöglich macht zu helfen.

Viel Grüße
Hermann
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

pHiDdeath

habs nach der anleitung ausm wiki gemacht , die tankstelle ist die Sprint *01662 Meißen* und ja die bietet SuperPlus an ,
attr Shell readingsName_SuperPlus SuperPlus
attr Shell readingsName_SuperE5 SuperE5
attr Shell readingsRegex_SuperPlus <span>SuperPlus</span>[^0-9]+([0-9\.]+)
attr Shell readingsRegex_SuperE5 <span>Super E5</span>[^0-9]+([0-9\.]+)
attr Shell room Spritpreise
attr Shell stateFormat Preis: SuperE5 € SuperPlus €
attr Shell timeout 5

der SuperE5 wird angezeigt, SuperPlus wird nicht angezeigt, erscheint auch nicht in den Readings ...

hartenthaler

Dann liegt es am regulären Ausdruck in readingsRegex_SuperPlus "<span>SuperPlus</span>[^0-9]+([0-9\.]+)". Vergleiche diesen Ausdruck mal mit dem Inhalt im buf. Suche die Stelle wo "<span>SuperPlus<span>" steht. Wird das dort genau so geschrieben? Direkt danach müsste der Preis kommen.
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

pHiDdeath

so scheine den fehler gefunden zu haben , nach SuperPlus kam kein </span> mehr ... jetzt noch in telegram einbinden und gut ;)

Pankratius

Zitat von: pHiDdeath am 09 November 2016, 20:55:13
so scheine den fehler gefunden zu haben , nach SuperPlus kam kein </span> mehr ... jetzt noch in telegram einbinden und gut ;)

Ja manchmal sind es die Kleinigkeiten die einen manchmal ausbremsen,
aber mit suchen und finden klappt es halt.

:)
Rüdiger

domii666

hab das nach Wiki gemacht aber mir zeigt es leider nur das hier an

tanken Suedtank                                                                        Liter_Diesel: Diesel

Pankratius

Zitat von: domii666 am 16 November 2016, 09:58:03
hab das nach Wiki gemacht aber mir zeigt es leider nur das hier an

tanken Suedtank                                                                        Liter_Diesel: Diesel

Sieht aus als ob der reguläre Ausdruck nicht stimmt.

Müsstest mal schauen was in der heruntergeladenen Datei steht.

Zeig mal die entsprechenden Codes.

Gruß
Rüdiger


domii666

hat sich mittlerweile erledigt und es klappt danke, war zu ungeduldig, aktualisierungsintervall zu lang.