Abfrage Heizölpreis HTTPMOD

Begonnen von subseven, 09 Januar 2020, 16:51:01

Vorheriges Thema - Nächstes Thema

Bartimaus

Ich habe mir mal erlaubt, mir die Abfrage in "stateFormat" durch ChatGPT erläutern zu lassen....

Dann hat mir ChatGPT angeboten, die Abfrage etwas umzustrukturieren. Das Ergebnis sieht so aus. Ist für mich als NichtInformatiker "leichter" zu lesen. Was hältst Du davon ?

{
  my $menge = ReadingsNum("CN.Blaubrenner","Bestellmenge",0);
  my $preis = ReadingsNum($name,"Heizoelpreis",0);
  my $zeit  = ReadingsTimestamp($name,"Heizoelpreis","");

  return '<span style="color:gray;">kein Preis</span>'
    if !$menge || !$preis;

  my $gesamt = sprintf("%.2f", ($menge * $preis) / 100);

  my $link = "https://www.heizoel24.de/heizoel/angebotsliste?"
           . "zipCode="  . AttrVal($name,"replacement01Value","")
           . "&amount="  . $menge
           . "&stations=". AttrVal($name,"replacement03Value","")
           . "&product=1";

  return
    qq(<span>$zeit: <a href="$link" target="_blank" rel="noopener noreferrer"><b>$preis&nbsp;&euro;</b></a>/100l ($menge&nbsp;l = $gesamt&nbsp;&euro;)</span>);
}

Aktuell wird mir aber kein Preis geliefert, weil die Tankmenge momentan unter dem Bestellminimum liegt, und/oder ich zu oft die Werte abgefragt habe
LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

TomLee

#121
Handarbeit, mit etwas FHEM-Erfahrung:

{
    my $oilprice = ReadingsNum($name,'Heizoelpreis',0);
    my $lastcheck = ReadingsTimestamp($name,'Heizoelpreis','');
    my $zip = AttrNum($name,'replacement01Value',0);
    my $amount = AttrNum($name,'replacement02Value',0);
    my $stations = AttrNum($name,'replacement03Value',0);
    my $price = $amount*$oilprice/100;

    my $link = qq(https://www.heizoel24.de/heizoel/angebotsliste?zipCode=$zip&amp;amount=$amount&amp;stations=$stations&amp;product=1);
   
    return sprintf(
    q(<div style="text-align: left;">%s: <a href="%s" rel="noopener noreferrer" target="_blank" style="font-weight:bold">%.2f€</a>/100l (%sL = %.2f€)</div>),$lastcheck,$link,$oilprice,$amount,$price);
}

Bartimaus

Deins habe ich mal getestet.... wenn ich auf den Link im State klicke, werde ich ordnungsgemäß zu Heizoel24 weitergeleitet, und bekomme einen Preis mit meinen Eingabeparametern, wird aber im State/Readings nicht angezeigt, stattdessen 0,0€.

LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

Bartimaus

Sorry, aber bei mir wird nur ein Heizölpreis abgefragt, wenn ich im im replacement02Value einen festen numerischen Wert eintrage. Mit einem Reading funktioniert es nicht.

Im State sehe ich dann einen Preis und Bestellmenge, aber die Bestellmenge ist die dynamische aus dem eingetragenen Reading in der Definition des Stateformats. Klicke ich auf den Link, werde ich zu Heizöl24 weitergeleitet, mit der korrekten Bestellmenge.



LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

TomLee

Mein gezeigtes Kunsthandwerk ersetzt 1:1 das stateFormat aus dem Template.

Das musst natürlich auch anpassen.


Bartimaus

Wie ich schrieb.... StateFormat ist nicht das Problem....

LG
B.


FHEM@AMD-Ryzen7-5825U@Debian-LXC (ProxmoxHOST), CUL1101,FS20,IT,DS18B20,DS2413(Heizungslogger),DS2423(Stromlogger)Homematic,HM-LAN,ZWave,MiniCULs,Shelly

yersinia

Ruf mal den generierten Link auf
https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=40477&litre=4000&unloadingpoints=1&oilgrade=standardWenn du mehr als drei Anfragen innerhalb von drei Stunden machst, bekommst du
Zitat"Sie haben in den letzten 180 Minuten mehr als 3 Mal die Preise abgefragt. Bitte versuchen Sie es später erneut."
als Rückmeldung.
Ich würde das Abfrageintervall testhalber reduzieren.
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