diff --git a/fhem/FHEM/lib/AttrTemplate/httpmod.template b/fhem/FHEM/lib/AttrTemplate/httpmod.template index 3bbef780c..059443b0c 100644 --- a/fhem/FHEM/lib/AttrTemplate/httpmod.template +++ b/fhem/FHEM/lib/AttrTemplate/httpmod.template @@ -624,6 +624,96 @@ attr DEVICE webCmd reread attr DEVICE model homematic_fw_check_v2 +#Contributed by yersinia, see https://forum.fhem.de/index.php/topic,97694.msg1045829.html#msg1045829 +name:aculfw_fw_check +filter:TYPE=X_01d +desc: checks a-culfw firmware updates
Define a HTTPMOD device like
define aculfw_fw_check HTTPMOD https://github.com/heliflieger/a-culfw/blob/master/CHANGELOG 86400
Source: Forum +order:order: XXXXX +par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )} +par:INTERVAL;Actual interval for updating, defaults to daily (86400s); {InternalVal("DEVICE","Interval",86400)} +defmod DEVICE HTTPMOD https://github.com/heliflieger/a-culfw/blob/master/CHANGELOG INTERVAL +attr DEVICE userattr reading01Name reading01Regex updatableDevicesMode:onlyUpdatable,all +attr DEVICE do_not_notify 1 +attr DEVICE enableControlSet 1 +attr DEVICE event-on-update-reading LAST_ERROR,MATCHED_READINGS +attr DEVICE handleRedirects 1 +attr DEVICE icon cul_usb +attr DEVICE reading01Name latestVersion +attr DEVICE reading01Regex \#\#\# ([\d]\.[\d]{2}\.[\d]{2}) +attr DEVICE room WHICHROOM +attr DEVICE showError 1 +attr DEVICE showMatched 1 +attr DEVICE stateFormat { my $ret ="";;\ + my $lastCheck = POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(ReadingsTimestamp($name,"MATCHED_READINGS","2000-01-01 00:00:00"))));;\ + my $nextCheck = POSIX::strftime("%d.%m. %H:%M",localtime(time_str2num(InternalVal($name,"TRIGGERTIME_FMT","2000-01-01 00:00:00"))));;\ + my $cellstyle = "padding:3pt;;border-bottom:1px dotted lightgray;;";;\ + $ret .= '
';;\ + $ret .= 'last a-culfw version check => '.$lastCheck;;\ + $ret .= '
';;\ + my $check = ReadingsVal($name,"updatableDevices","error => no or wrong data from server!");;\ + if($check eq "no updates needed!") {\ + $ret .= '
';;\ + $ret .= $check;;\ + $ret .= '
';;\ + } elsif($check eq "error => no or wrong data from server!") {\ + $ret .= '
';;\ + $ret .= $check;;\ + $ret .= '
';;\ + } else {\ + my @devices = split(',',$check);;\ + $ret .= '
';;\ + $ret .= '
';;\ + $ret .= '
device
';;\ + $ret .= '
current
';;\ + $ret .= '
new
';;\ + $ret .= '
';; #header\ + foreach my $devStr (@devices) {\ + my ($dev,$old,$new) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\s([^\)]+)\)$/;;\ + $ret .= '
';;\ + $ret .= '
';;\ + $ret .= '';;\ + $ret .= AttrVal($dev,"alias",$dev);;\ + $ret .= '
';;\ + $ret .= '
';;\ + $ret .= '';;\ + $ret .= $old;;\ + $ret .= '
';;\ + $ret .= '
';;\ + $ret .= '';;\ + $ret .= $new;;\ + $ret .= '
';;\ + $ret .= '
';; #row\ + }\ + $ret .= '
';; #table\ + }\ + $ret .= "
(next check: ".$nextCheck.")
";;\ + $ret .= '
';;\ + return $ret;;\ +} +attr DEVICE updatableDevicesMode onlyUpdatable +attr DEVICE userReadings updatableDevices {\ + my $ret = "";;\ + my $updateall = AttrVal($name,"updatableDevicesMode","");;\ + if (ReadingsVal($name,"MATCHED_READINGS","") eq "") {\ + $ret = "error => no or wrong data from server!";;\ + } else {\ + my $VERSION = ReadingsVal($name,"latestVersion","unknown");;\ + foreach my $dev (devspec2array("TYPE=CUL")) {\ + my $version = InternalVal($dev,"VERSION","unknown");;\ + $version =~ m/([\d]\.[\d]{2}\.[\d]{2})/;;\ + $version = $1;;\ + if(($updateall eq "all") || ($version ne $VERSION)) {\ + $ret .= "," if($ret ne "");;\ + $ret .= $dev." (".$version." | ".$VERSION.")";;\ + }\ + }\ + }\ + return ($ret eq "")?"no updates needed!":$ret;;\ +} +attr DEVICE webCmd reread +attr DEVICE model aculfw_fw_check + + #Contributed by OdfFHEM, see https://forum.fhem.de/index.php/topic,97694.msg992348.html#msg992348 name:tasmota_firmware_updates filter:TYPE=HTTPMOD diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index 42e5db041..9cf25ce06 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -2005,7 +2005,7 @@ attr DEVICE setList\ pct:slider,0,1,100 shellies/DEVNAME/light/0/set {"turn": "on","brightness": $EVTPART1}\ int(ReadingsNum($NAME,'pct',0)/10)*10-10 dimup:noArg { my $num=int((ReadingsNum($NAME,'pct',0)+4)/10)*10+10; return qq {shellies/DEVNAME/light/0/set {"turn": "on", "brightness": $num}}; }\ - dimdown:noArg my $num=int((ReadingsNum($NAME,'pct',0)+7)/10)*10-10; return qq {shellies/DEVNAME/light/0/set {"turn": "on", "brightness": $num}}; }\ + dimdown:noArg { my $num=int((ReadingsNum($NAME,'pct',0)+7)/10)*10-10; return qq {shellies/DEVNAME/light/0/set {"turn": "on", "brightness": $num}}; }\ x_mqttcom shellies/DEVNAME/command $EVTPART1 deletereading -q DEVICE status_.* attr DEVICE readingList \