Gut, wenn es klappt. Ich würde beim Rechnen mit Werten aber eher mit ReadingsNum anstelle von ReadingsVal arbeiten:
attr Heizoel_esyoil userReadings Bestellmenge {return (ReadingsNum($name,"Tankvolumen",0)-ReadingsNum($name,"Fuellstand",0));},\
Fuellkosten {return ((ReadingsNum($name,"Bestellmenge",0)/100)*ReadingsNum("Heizoel_esyoil","Heizoelpreis",0));}, Fuellstand {return sprintf("%.d", ReadingsNum("CN.Blaubrenner","appTanklevel",0));}
Weiterhin könntest du die replacmentValues noch optimieren, aber das ist nur nice-to-have:
attr Heizoel_esyoil userattr replacement03Value:1,2,3,4,5,6,7,8,9,10 replacement04Value:hose=,hose=hose_l,hose=hose_xl replacement05Value:short_vehicle=,short_vehicle=short_vehicle replacement06Value:8,4 replacement07Value:1,2,3,4,6 replacement08Value:express=,express=1