2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 09:16:53 +00:00

mqtt2.template: bugfix in shellydimmer; httpmod.template: add aculfw update check

git-svn-id: https://svn.fhem.de/fhem/trunk@21779 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2020-04-26 08:23:07 +00:00
parent 379ea7f34b
commit 5846a7a768
2 changed files with 91 additions and 1 deletions

View File

@ -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<br />Define a HTTPMOD device like<br />define aculfw_fw_check HTTPMOD https://github.com/heliflieger/a-culfw/blob/master/CHANGELOG 86400<br /><a href="https://forum.fhem.de/index.php/topic,97694.msg1045829.html#msg1045829">Source: Forum</a>
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 .= '<div style="text-align:left;;">';;\
$ret .= 'last <a href="https://github.com/heliflieger/a-culfw" title="aculfw" rel="noopener noreferrer" target="_blank">a-culfw</a> version check => '.$lastCheck;;\
$ret .= '<br />';;\
my $check = ReadingsVal($name,"updatableDevices","error => no or wrong data from server!");;\
if($check eq "no updates needed!") {\
$ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
$ret .= $check;;\
$ret .= '</div>';;\
} elsif($check eq "error => no or wrong data from server!") {\
$ret .= '<div style="color:limegreen;;font-weight:bold;;">';;\
$ret .= $check;;\
$ret .= '</div>';;\
} else {\
my @devices = split(',',$check);;\
$ret .= '<br /><div style="display:table;;width:80%;;">';;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:60%;;font-weight:bold;;">device</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:20%;;font-weight:bold;;">current</div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:20%;;font-weight:bold;;">new</div>';;\
$ret .= '</div>';; #header\
foreach my $devStr (@devices) {\
my ($dev,$old,$new) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\s([^\)]+)\)$/;;\
$ret .= '<div style="display:table-row;;">';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:60%;;">';;\
$ret .= '<a href="/fhem?detail='.$dev.'" title="'.$dev.' ('.$old.')">';;\
$ret .= AttrVal($dev,"alias",$dev);;\
$ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:20%;;font-weight:bold;;">';;\
$ret .= '<a href="https://github.com/heliflieger/a-culfw/releases/tag/'.$old.'" title="a-culfw '.$old.'" rel="noopener noreferrer" target="_blank" style="color:lightgray;;">';;\
$ret .= $old;;\
$ret .= '</a></div>';;\
$ret .= '<div style="display:table-cell;;'.$cellstyle.'width:20%;;font-weight:bold;;">';;\
$ret .= '<a href="https://github.com/heliflieger/a-culfw/releases/tag/'.$new.'" title="a-culfw '.$new.'" rel="noopener noreferrer" target="_blank" style="color:red;;">';;\
$ret .= $new;;\
$ret .= '</a></div>';;\
$ret .= '</div>';; #row\
}\
$ret .= '</div>';; #table\
}\
$ret .= "<br /><div style=\"text-align:left;;\">(next check: ".$nextCheck.")</div>";;\
$ret .= '</div>';;\
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

View File

@ -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 \