From 5846a7a768f1f2fa70f06eef7e2466f255296db3 Mon Sep 17 00:00:00 2001
From: Beta-User <>
Date: Sun, 26 Apr 2020 08:23:07 +0000
Subject: [PATCH] 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
---
fhem/FHEM/lib/AttrTemplate/httpmod.template | 90 +++++++++++++++++++++
fhem/FHEM/lib/AttrTemplate/mqtt2.template | 2 +-
2 files changed, 91 insertions(+), 1 deletion(-)
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 .= '
';;\
+ $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 \