
Zitat von: betateilchen am 14 Dezember 2025, 14:01:24Sowas kann zu völlig unvorhergesehenen Effekten führen, wenn sich bei Anwendern in einem Verzeichnis bereits Dateien angesammelt haben, an die der Anwender nicht mehr denkt und er "der Einfachheit halber" ein Wildcard einsetzt.
Zitat von: betateilchen am 14 Dezember 2025, 14:01:24Außerdem würden wir damit vom in FHEM weitverbreiteten Prinzip abweichen, dass wir bei der Verwendung von Wildcards auf regex setzen und nicht auf die alte DOS Nomenklatur.
Internals:
BUSY 0
CFGFN
DEF https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=%%PLZ%%&litre=%%MENGE%%&unloadingpoints=%%ENTLADESTELLEN%%&oilgrade=standard 43200
FUUID 693af639-f33f-7539-f121-98c0e83bffc3ec0b
Interval 43200
MainURL https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=%%PLZ%%&litre=%%MENGE%%&unloadingpoints=%%ENTLADESTELLEN%%&oilgrade=standard
ModuleVersion 4.2.0 - 11.8.2023
NAME Heizoelpreis
NOTIFYDEV global
NR 39797
NTFY_ORDER 50-Heizoelpreis
STATE <div style="text-align: left;;">: <a href="https://www.heizoel24.de/heizoel/angebotsliste?zipCode=40477&amount=CN.Blaubrenner:Bestellmenge&stations=1&product=1" rel="noopener noreferrer" target="_blank" style="font-weight:bold;;">-€</a>/100l (CN.Blaubrenner:Bestellmengel = 0.00€)</div>
TYPE HTTPMOD
eventCount 30
value
CompiledRegexes:
HttpUtils:
NAME
addr https://www.heizoel24.de:443
auth 0
buf
code 400
compress 1
conn
data
displayurl https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=40477&litre=CN.Blaubrenner:Bestellmenge&unloadingpoints=1&oilgrade=standard
header
host www.heizoel24.de
httpheader HTTP/1.1 400 Bad Request
Cache-Control: no-store, no-cache, must-revalidate, private
Pragma: no-cache
Content-Type: application/xml
Content-Encoding: gzip
Vary: Accept-Encoding
Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
X-Powered-By:
X-Powered-By:
X-Content-Type-Options: nosniff
Date: Sun, 14 Dec 2025 14:35:16 GMT
Connection: close
Content-Length: 192
httpversion 1.0
hu_blocking 0
hu_filecount 1
hu_port 443
hu_portSfx
ignoreredirects 1
loglevel 4
path /DailyPriceXml.ashx?zipcode=40477&litre=CN.Blaubrenner:Bestellmenge&unloadingpoints=1&oilgrade=standard
protocol https
redirects 0
timeout 10
url https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=40477&litre=CN.Blaubrenner:Bestellmenge&unloadingpoints=1&oilgrade=standard
sslargs:
OLDREADINGS:
QUEUE:
READINGS:
2025-12-14 15:35:17 Bestellmenge 26
2025-12-14 15:35:17 Fuellkosten 0.00
2025-12-14 15:35:17 Fuellstand 8174.00
2025-12-13 13:19:17 Tankvolumen 8200
2025-12-11 17:51:24 attrTemplateVersion 20210626
REQUEST:
context reading
data
header
ignoreredirects 0
num unknown
retryCount 0
type update
url https://www.heizoel24.de/DailyPriceXml.ashx?zipcode=%%PLZ%%&litre=%%MENGE%%&unloadingpoints=%%ENTLADESTELLEN%%&oilgrade=standard
Attributes:
enableControlSet 1
model fuel_oil_check_heizoel24_v2
reading010Name Heizoelpreis
reading010OExpr $val =~ s/,/\./; $val;
reading010Regex ([\d\,]+)<\/price
replacement01Mode text
replacement01Regex %%PLZ%%
replacement01Value 40477
replacement02Mode text
replacement02Regex %%MENGE%%
replacement02Value CN.Blaubrenner:Bestellmenge
replacement03Mode text
replacement03Regex %%ENTLADESTELLEN%%
replacement03Value 1
room HTTPMOD,Heizung
stateFormat { my $price = 0.0;
$price = ("CN.Blaubrenner:Bestellmenge"*ReadingsNum($name,"Heizoelpreis",0))/100; # hier rechn
my $lastCheck = ReadingsTimestamp($name,"Heizoelpreis","");
my $ret = "<div style=\"text-align: left;;\">".$lastCheck.":";
my $link = "https://www.heizoel24.de/heizoel/angebotsliste?";
$link .= "zipCode=".AttrVal($name,"replacement01Value","");
$link .= "&amount="."CN.Blaubrenner:Bestellmenge";
$link .= "&stations=".AttrVal($name,"replacement03Value","");
$link .= "&product=1";
$ret .= " <a href=\"".$link."\" rel=\"noopener noreferrer\" target=\"_blank\" style=\"font-weight:bold;;\">";
$ret .= ReadingsVal($name,"Heizoelpreis","-");
$ret .= "€</a>/100l";
$ret .= " ("."CN.Blaubrenner:Bestellmenge"."l = ";
$ret .= sprintf("%.2f",$price);
$ret .= "€)</div>";
return $ret;
}
timeout 10
userReadings Bestellmenge {ReadingsNum("Heizoelpreis","Tankvolumen",0)-ReadingsNum("CN.Blaubrenner","appTanklevel",0)},
Fuellkosten {sprintf("%.2f",ReadingsNum("Heizoelpreis","Bestellmenge",0)/100*ReadingsNum("Heizoelpreis","Heizoelpreis",0))},
Fuellstand {sprintf("%.2f", ReadingsNum("CN.Blaubrenner","appTanklevel",0))}
userattr replacement03Value:1,2,3,4,5,6,7,8,9,10
webCmd reread