From d1ab7b4da0638c1d9ef534107b805eedc982cf3a Mon Sep 17 00:00:00 2001 From: amenomade <> Date: Sun, 6 Dec 2020 15:45:00 +0000 Subject: [PATCH] httpmod.template: relame fuel_oil_check in fuel_oil_check_esyoil and small corrections git-svn-id: https://svn.fhem.de/fhem/trunk@23302 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/AttrTemplate/httpmod.template | 209 ++++++++++---------- 1 file changed, 104 insertions(+), 105 deletions(-) diff --git a/fhem/FHEM/lib/AttrTemplate/httpmod.template b/fhem/FHEM/lib/AttrTemplate/httpmod.template index bb62e9ff1..5ed721afd 100644 --- a/fhem/FHEM/lib/AttrTemplate/httpmod.template +++ b/fhem/FHEM/lib/AttrTemplate/httpmod.template @@ -96,9 +96,9 @@ attr DEVICE model clever_tanken_multi_station setreading DEVICE attrTemplateVersion 20201129 #Contributed by subseven & yersinia, see https://forum.fhem.de/index.php/topic,107189.msg1017754.html#msg1017754 -name:fuel_oil_check +name:fuel_oil_check_esyoil filter:TYPE=HTTPMOD -desc: checks fuel oil prices via easyoil.com
Define a HTTPMOD device like
define heizoelpreis HTTPMOD https://www.esyoil.com/preisausgabe.php?pr-unloading-points=%%ENTLADESTELLEN%%&pr-product=8&pr-payment-type=2&%%ANHAENGER%%&pr-hose-length=%%SCHLAUCHLAENGE%%&pr-app=1&pr-zip=%%PLZ%%&pr-amount=%%MENGE%%&submit= 3600
Maintain Attributes for ZIP (PLZ), order volume (Bestellmenge) and unloading points (Entladestellen), hose length (Schlauchlaenge) and truck trailer accessibility (mit Anhaenger moeglich) before senseful values can be retrieved.
Further information and documentation can be found in this FHEM forum thread +desc: checks fuel oil prices via easyoil.com
Define a HTTPMOD device like
define heizoelpreis HTTPMOD https://www.esyoil.com/preisausgabe.php?pr-unloading-points=%%ENTLADESTELLEN%%&pr-product=8&pr-payment-type=2&%%ANHAENGER%%&pr-hose-length=%%SCHLAUCHLAENGE%%&pr-app=1&pr-zip=%%PLZ%%&pr-amount=%%MENGE%%&submit= 3600
Maintain Attributes for ZIP (PLZ), order volume (Bestellmenge), unloading points (Entladestellen), hose length (Schlauchlaenge) and truck trailer accessibility (mit Anhaenger moeglich) before senseful values can be retrieved.
Further information and documentation can be found in this FHEM forum thread order:FUEL03 par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )} par:INTERVAL;Actual interval for updating, defaults to hourly (3600s); {InternalVal("DEVICE","Interval",3600)} @@ -108,7 +108,7 @@ defmod DEVICE HTTPMOD https://www.esyoil.com/preisausgabe.php?pr-unloading-point attr DEVICE userattr reading010Name reading010OExpr reading010Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value:1,2,3,4,5,6,7,8,9,10 replacement04Mode:reading,internal,text,expression,key replacement04Regex replacement04Value:40m,60m,80m replacement05Mode:reading,internal,text,expression,key replacement05Regex replacement05Value:pr-truck-type=,pr-truck-type=short_vehicle attr DEVICE enableControlSet 1 attr DEVICE reading010Name Heizoelpreis -attr DEVICE reading010OExpr $val =~ s/,/\./;; $val;; +attr DEVICE reading010OExpr $val =~ s/,/\./; $val; attr DEVICE reading010Regex ([\d\,]+)[\s]+€ attr DEVICE replacement01Mode text attr DEVICE replacement01Regex %%PLZ%% @@ -126,30 +126,30 @@ attr DEVICE replacement05Mode text attr DEVICE replacement05Regex %%ANHAENGER%% attr DEVICE replacement05Value pr-truck-type= attr DEVICE room WHICHROOM -attr DEVICE stateFormat { my $price = 0.0;;\ - $price = (AttrNum($name,"replacement02Value",0)*ReadingsNum($name,"Heizoelpreis",0))/100;;\ - my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\ - my $ret = "
".$lastCheck.":";;\ - my $link = "https://www.esyoil.com/preisausgabe.php?";;\ - $link .= "pr-unloading-points=".AttrVal($name,"replacement03Value","");;\ - $link .= "&pr-product=8&pr-payment-type=2";;\ - $link .= "&".AttrVal($name,"replacement05Value","");;\ - $link .= "&pr-hose-length=".AttrVal($name,"replacement04Value","");;\ - $link .= "&pr-app=1&pr-zip=".AttrVal($name,"replacement01Value","");;\ - $link .= "&pr-amount=".AttrVal($name,"replacement02Value","");;\ - $link .= "&submit=";;\ - $ret .= " ;";;\ - $ret .= ReadingsVal($name,"Heizoelpreis","-");;\ - $ret .= "€;/100l";;\ - $ret .= " ;(".AttrVal($name,"replacement02Value","0")."l = ";;\ - $ret .= sprintf("%.2f",$price);;\ - $ret .= "€;)
";;\ - return $ret;;\ +attr DEVICE stateFormat { my $price = 0.0;\ + $price = (AttrNum($name,"replacement02Value",0)*ReadingsNum($name,"Heizoelpreis",0))/100;\ + my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\ + my $ret = "
".$lastCheck.":";\ + my $link = "https://www.esyoil.com/preisausgabe.php?";\ + $link .= "pr-unloading-points=".AttrVal($name,"replacement03Value","");\ + $link .= "&pr-product=8&pr-payment-type=2";\ + $link .= "&".AttrVal($name,"replacement05Value","");\ + $link .= "&pr-hose-length=".AttrVal($name,"replacement04Value","");\ + $link .= "&pr-app=1&pr-zip=".AttrVal($name,"replacement01Value","");\ + $link .= "&pr-amount=".AttrVal($name,"replacement02Value","");\ + $link .= "&submit=";\ + $ret .= " ";\ + $ret .= ReadingsVal($name,"Heizoelpreis","-");\ + $ret .= "€/100l";\ + $ret .= " (".AttrVal($name,"replacement02Value","0")."l = ";\ + $ret .= sprintf("%.2f",$price);\ + $ret .= "€)
";\ + return $ret;\ } attr DEVICE webCmd reread attr DEVICE timeout 10 -attr DEVICE model fuel_oil_check -setreading DEVICE attrTemplateVersion 20201204 +attr DEVICE model fuel_oil_check_esyoil +setreading DEVICE attrTemplateVersion 20201206 #Contributed by yersinia, see https://forum.fhem.de/index.php/topic,107189.msg1055334.html#msg1055334 name:fuel_oil_check_heizoel24 @@ -160,11 +160,11 @@ par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE", par:INTERVAL;Actual interval for updating, defaults to hourly (3600s); {InternalVal("DEVICE","Interval",3600)} par:ZIPCODE;German ZIP Code / deutsche Postleitzahl; {AttrVal("DEVICE","replacement01Value",undef)} par:ORDERVOLUME;fuel order volume in litre / Bestellmenge in Liter; {AttrVal("DEVICE","replacement02Value",undef)} -defmod DEVICE HTTPMOD https://www.heizoel24.de/heizoelpreise-direkt/%%PLZ%%/%%MENGE%%/%%ENTLADESTELLEN%% 3600 +defmod DEVICE HTTPMOD https://www.heizoel24.de/heizoelpreise-direkt/%%PLZ%%/%%MENGE%%/%%ENTLADESTELLEN%% INTERVAL attr DEVICE userattr reading010Name reading010OExpr reading010Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value:1,2,3,4,5,6,7,8,9,10 attr DEVICE enableControlSet 1 attr DEVICE reading010Name Heizoelpreis -attr DEVICE reading010OExpr $val =~ s/,/\./;; $val;; +attr DEVICE reading010OExpr $val =~ s/,/\./; $val; attr DEVICE reading010Regex ([\d\,]+)[\s]+".$lastCheck.":";;\ - my $link = "https://www.heizoel24.de/heizoelpreise-direkt";;\ - $link .= "/".AttrVal($name,"replacement01Value","");;\ - $link .= "/".AttrVal($name,"replacement02Value","");;\ - $link .= "/".AttrVal($name,"replacement03Value","");;\ - $ret .= " ";;\ - $ret .= ReadingsVal($name,"Heizoelpreis","-");;\ - $ret .= "€/100l";;\ - $ret .= " (".AttrVal($name,"replacement02Value","0")."l = ";;\ - $ret .= sprintf("%.2f",$price);;\ - $ret .= "€)";;\ - return $ret;;\ +attr DEVICE stateFormat { my $price = 0.0;\ + $price = (AttrNum($name,"replacement02Value",0)*ReadingsNum($name,"Heizoelpreis",0))/100;\ + my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\ + my $ret = "
".$lastCheck.":";\ + my $link = "https://www.heizoel24.de/heizoelpreise-direkt";\ + $link .= "/".AttrVal($name,"replacement01Value","");\ + $link .= "/".AttrVal($name,"replacement02Value","");\ + $link .= "/".AttrVal($name,"replacement03Value","");\ + $ret .= " ";\ + $ret .= ReadingsVal($name,"Heizoelpreis","-");\ + $ret .= "€/100l";\ + $ret .= " (".AttrVal($name,"replacement02Value","0")."l = ";\ + $ret .= sprintf("%.2f",$price);\ + $ret .= "€)
";\ + return $ret;\ } attr DEVICE timeout 10 attr DEVICE webCmd reread attr DEVICE model fuel_oil_check_heizoel24 -setreading DEVICE attrTemplateVersion 20201204 - +setreading DEVICE attrTemplateVersion 20201206 #German weather warnings from DWD, Forum: https://forum.fhem.de/index.php/topic,45176.msg905879.html#msg905879 name:DWD_weather_warnings @@ -737,7 +736,7 @@ setreading DEVICE attrTemplateVersion 20201129 #Contributed by Pfriemler, mcp & yersinia, see https://forum.fhem.de/index.php/topic,78501.msg1104534.html#msg1104534 name:hm_fw_check_v2 filter:TYPE=HTTPMOD -desc: check for homematic firmware updates; based on new link provided by Pfriemler (switch from eq-3.de to update.homematic.com) and includes HmIP adaption provided by mcp
Define an HTTPMOD device like
define DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
Further information and documentation can be found in this FHEM forum thread +desc: check for homematic firmware updates; based on new link provided by Pfriemler (switch from eq-3.de to update.homematic.com) and includes HmIP adaption provided by mcp
Define an HTTPMOD device like
define DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
Further information and documentation can be found in this FHEM forum thread order:TECHZ04 par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )} par:INTERVAL;Actual interval for updating, defaults to one day (86400s); {InternalVal("DEVICE","Interval",86400)} @@ -759,90 +758,90 @@ attr DEVICE readingMaxAgeReplacementMode delete attr DEVICE showError 1 attr DEVICE showMatched 1 attr DEVICE showNewFWOnly yes -attr DEVICE stateFormat { my $ret ="";;\ - my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));;\ - my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));;\ - my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\ - $ret .= '
';;\ - $ret .= '
last homematic-fw-check => '.$lastCheck;;\ - $ret .= '
';;\ - my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\ +attr DEVICE stateFormat { my $ret ="";\ + my $lastCheck = FmtDateTime(InternalVal($name,".LastUpdate",0));\ + my $nextCheck = FmtDateTime(InternalVal($name,".TRIGGERTIME",0));\ + my $cellstyle = "padding:3pt;border-bottom:1px dotted lightgray;";\ + $ret .= '
';\ + $ret .= '
last homematic-fw-check => '.$lastCheck;\ + $ret .= '
';\ + my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");\ if($check eq "no fw-updates needed!") {\ - $ret .= '
';;\ - $ret .= $check;;\ - $ret .= '
';;\ + $ret .= '
';\ + $ret .= $check;\ + $ret .= '
';\ } elsif($check eq "error => no or wrong data from eq3-server!") {\ - $ret .= '
';;\ - $ret .= $check;;\ - $ret .= '
';;\ + $ret .= '
';\ + $ret .= $check;\ + $ret .= '
';\ } else {\ - $ret .= '
';;\ - $ret .= '
';;\ - $ret .= '
device
';;\ - $ret .= '
model
';;\ - $ret .= '
current
';;\ - $ret .= '
new
';;\ - $ret .= '
';; #header\ - my @devices = split(',',$check);;\ + $ret .= '
';\ + $ret .= '
';\ + $ret .= '
device
';\ + $ret .= '
model
';\ + $ret .= '
current
';\ + $ret .= '
new
';\ + $ret .= '
'; #header\ + my @devices = split(',',$check);\ foreach my $devStr (@devices) {\ - my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\ - my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\ - my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\ - my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");;\ - my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;;\ - $ret .= '
';;\ - $ret .= '';;\ - $ret .= '
';;\ - $ret .= $md;;\ - $ret .= '
';;\ - $ret .= '
';;\ - $ret .= $ofw;;\ - $ret .= '
';;\ - $ret .= '';;\ - $ret .= '
';; #row\ + my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;\ + my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");\ + my $ofw = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));\ + my $nfw = ReadingsVal($name,("hmfw-version-".$idx),"none");\ + my $fw_link = "https://ccu3-update.homematic.com/firmware/download?cmd=download&serial=0&product=".$md;\ + $ret .= '
';\ + $ret .= '';\ + $ret .= '
';\ + $ret .= $md;\ + $ret .= '
';\ + $ret .= '
';\ + $ret .= $ofw;\ + $ret .= '
';\ + $ret .= '';\ + $ret .= '
'; #row\ }\ - $ret .= '
';; #table\ + $ret .= '
'; #table\ }\ - $ret .= "
(next check: ".$nextCheck.")
";;\ - $ret .= '
';;\ - return $ret;;\ + $ret .= "
(next check: ".$nextCheck.")
";\ + $ret .= '
';\ + return $ret;\ } attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\ - my $ret = "";;\ - my $newfwonly = AttrVal($name,"showNewFWOnly","yes");;\ + my $ret = "";\ + my $newfwonly = AttrVal($name,"showNewFWOnly","yes");\ if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\ my @eq3FwList = map { \ - sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\ - } ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;;\ + sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);\ + } ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d\d)/g;\ \ foreach my $dev (devspec2array("TYPE=CUL_HM|HMCCUDEV:FILTER=DEF=(......|..............):FILTER=subType!=virtual")) {\ - my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));;\ - my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));;\ - my ($h,$l) = split('\.',$v);;\ + my $md = uc(InternalVal($dev,"ccutype",AttrVal($dev,"model","?")));\ + my $v = InternalVal($dev,"firmware",AttrVal($dev,"firmware","0.0"));\ + my ($h,$l) = split('\.',$v);\ foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\ - my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\ - my ($fwh, $fwl) = split('\.',$fwv);;\ + my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;\ + my ($fwh, $fwl) = split('\.',$fwv);\ if(($newfwonly eq "no") || (($fwh > $h) || (($fwh == $h) && ($fwl > $l)))) {\ - $ret .= "," if($ret ne "");;\ - $ret .= $dev." (".$idx.")";;\ + $ret .= "," if($ret ne "");\ + $ret .= $dev." (".$idx.")";\ }\ }\ }\ } else {\ - $ret = "error => no or wrong data from eq3-server!";;\ + $ret = "error => no or wrong data from eq3-server!";\ }\ - return ($ret eq "")?"no fw-updates needed!":$ret;;\ + return ($ret eq "")?"no fw-updates needed!":$ret;\ } attr DEVICE webCmd reread attr DEVICE room WHICHROOM attr DEVICE model hm_fw_check_v2 -setreading DEVICE attrTemplateVersion 20201204 +setreading DEVICE attrTemplateVersion 20201206 #Contributed by yersinia, see https://forum.fhem.de/index.php/topic,97694.msg1045829.html#msg1045829 name:aculfw_fw_check