From 6c16e2344356e46e491add3aaa2dfa1e172113cc Mon Sep 17 00:00:00 2001 From: amenomade <> Date: Sat, 28 Nov 2020 18:06:22 +0000 Subject: [PATCH] httpmod.template: add homematic ip git-svn-id: https://svn.fhem.de/fhem/trunk@23251 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/AttrTemplate/httpmod.template | 33 ++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/fhem/FHEM/lib/AttrTemplate/httpmod.template b/fhem/FHEM/lib/AttrTemplate/httpmod.template index 8493dabd0..ee95e8ab5 100644 --- a/fhem/FHEM/lib/AttrTemplate/httpmod.template +++ b/fhem/FHEM/lib/AttrTemplate/httpmod.template @@ -532,15 +532,16 @@ setreading DEVICE attrTemplateVersion 20200522 or prior ################################# #Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144 -#Contributed by Pfriemler & yersinia, see https://forum.fhem.de/index.php/topic,78501.msg1043080.html#msg1043080 +#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)
Define a HTTPMOD device like
define hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
Source: Forum +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 a HTTPMOD device like
define DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400
Source: Forum order:X_01a 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)} defmod DEVICE HTTPMOD https://update.homematic.com/firmware/api/firmware/search/\DEVICE INTERVAL attr DEVICE userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no +attr DEVICE userattr reading01AutoNumLen reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete showNewFWOnly:yes,no attr DEVICE do_not_notify 1 attr DEVICE enableControlSet 1 attr DEVICE icon hm_ccu @@ -563,8 +564,8 @@ attr DEVICE stateFormat { my $ret ="";;\ 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 homematic-fw-check => '.$lastCheck;;\ - $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 .= '
';;\ @@ -575,19 +576,19 @@ attr DEVICE stateFormat { my $ret ="";;\ $ret .= $check;;\ $ret .= '
';;\ } else {\ - $ret .= '
';;\ + $ret .= '
';;\ $ret .= '
';;\ $ret .= '
device
';;\ - $ret .= '
model
';;\ - $ret .= '
current
';;\ - $ret .= '
new
';;\ + $ret .= '
model
';;\ + $ret .= '
current
';;\ + $ret .= '
new
';;\ $ret .= '
';; #header\ my @devices = split(',',$check);;\ foreach my $devStr (@devices) {\ - #my ($dev,$md,$idx,$ofw,$nfw) = $devStr =~ m/([^\s]+)\s[(]([^\s]+)\s[(](\d+)[)]\sofw_([\d\.]+)\s=>\snfw_([\d\.]+)/;;\ my ($dev,$idx) = $devStr =~ m/([^\s]+)\s[(](\d+)[)]/;;\ my $md = ReadingsVal($name,("hmfw-type-".$idx),"?");;\ - my $ofw = AttrVal($dev,"firmware","?");;\ + #my $ofw = AttrVal($dev,"firmware","?");;\ + 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 .= '
';;\ @@ -609,7 +610,7 @@ attr DEVICE stateFormat { my $ret ="";;\ }\ $ret .= '
';; #table\ }\ - $ret .= "
(next check: ".$nextCheck.")
";;\ + $ret .= "
(next check: ".$nextCheck.")
";;\ $ret .= '
';;\ return $ret;;\ } @@ -621,9 +622,9 @@ attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\ sprintf(uc(ReadingsVal($name,"hmfw-type-".$_,"?")).":".ReadingsVal($name,"hmfw-version-".$_,"?").":".$_);;\ } ReadingsVal($name,"MATCHED_READINGS","?")=~ m/hmfw-version-(\d\d)/g;;\ \ - foreach my $dev (devspec2array("TYPE=CUL_HM:FILTER=DEF=......:FILTER=subType!=(virtual|)")) {\ - my $md = AttrVal($dev,"model","?");;\ - my $v = AttrVal($dev,"firmware","0.0");;\ + 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);;\ foreach my $newFW (grep m/^${md}:/i,@eq3FwList) {\ my ($fwmd, $fwv, $idx) = $newFW =~ m/([^:]+):(\d+[.]\d+[.]\d+):(\d+)$/;;\ @@ -640,9 +641,7 @@ attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\ return ($ret eq "")?"no fw-updates needed!":$ret;;\ } attr DEVICE webCmd reread -attr DEVICE model homematic_fw_check_v2 -setreading DEVICE attrTemplateVersion 20200522 or prior - +attr DEVICE model hm_fw_check_v2 #Contributed by yersinia, see https://forum.fhem.de/index.php/topic,97694.msg1045829.html#msg1045829 name:aculfw_fw_check