mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
mqtt2.template: change roborock template, add ESPurna template, other small changes; httpmod.template bugfix in homematic-updates
git-svn-id: https://svn.fhem.de/fhem/trunk@21138 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
cfaa8b9c8d
commit
b8261f677c
@ -502,117 +502,15 @@ attr DEVICE model resol_solar
|
|||||||
|
|
||||||
#################################
|
#################################
|
||||||
#Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144
|
#Show updates for CUL_HM devices, Forum: https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144
|
||||||
name:CUL_HM_firmware_update_downloader
|
|
||||||
filter:TYPE=HTTPMOD
|
|
||||||
desc: Check eQ3 homepage for available new firmware files; provides also links for direct downloads<br>Define a HTTPMOD device like <br>define eq3 HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php 604800<br><a href="https://https://forum.fhem.de/index.php/topic,78501.msg972144.html#msg972144">Source: Forum</a><br><a href="https://wiki.fhem.de/wiki/HomeMatic_Firmware_Update#Basis-Definitionen_f.C3.BCr_Device_eq3">Wiki</a>
|
|
||||||
order:X_01a
|
|
||||||
par:WHICHROOM;Actual room of the device; {AttrVal("DEVICE","room","CUL_HM" )}
|
|
||||||
par:INTERVAL;Actual interval for updating, defaults to one week; {InternalVal("DEVICE","Interval","604800")}
|
|
||||||
defmod DEVICE HTTPMOD https://www.eq-3.de/ajax/downloads/downloads_eq3.php INTERVAL
|
|
||||||
attr DEVICE userattr reading01AutoNumLen reading01Format reading01Name reading01RegOpt reading01Regex reading02AutoNumLen reading02Name reading02OExpr reading02RegOpt reading02Regex readingMaxAge readingMaxAgeReplacementMode:text,reading,internal,expression,delete
|
|
||||||
attr DEVICE alignTime 00:45
|
|
||||||
attr DEVICE enableControlSet 1
|
|
||||||
attr DEVICE event-on-change-reading .*
|
|
||||||
attr DEVICE event-on-update-reading LAST_ERROR,MATCHED_READINGS
|
|
||||||
attr DEVICE httpVersion 1.1
|
|
||||||
attr DEVICE reading01AutoNumLen 2
|
|
||||||
attr DEVICE reading01Format https://www.eq-3.de%s
|
|
||||||
attr DEVICE reading01Name fw_link
|
|
||||||
attr DEVICE reading01RegOpt g
|
|
||||||
attr DEVICE reading01Regex (?i)<a.href="(\/downloads\/software\/firmware\/hm[^"]+)
|
|
||||||
attr DEVICE reading02AutoNumLen 2
|
|
||||||
attr DEVICE reading02Name changeLog_link
|
|
||||||
attr DEVICE reading02OExpr $val=~m/(\/downloads\/software\/firmware\/[^"]+)/?"https://www.eq-3.de".$1:"none"
|
|
||||||
attr DEVICE reading02RegOpt g
|
|
||||||
attr DEVICE reading02Regex (?si)(.{300})<a.href="\/downloads\/software\/firmware\/hm[^"]+
|
|
||||||
attr DEVICE readingMaxAge 10
|
|
||||||
attr DEVICE readingMaxAgeReplacementMode delete
|
|
||||||
attr DEVICE requestData suchbegriff=&quelle=29&suchkategorie=3&themenbereich=1
|
|
||||||
attr DEVICE room WHICHROOM
|
|
||||||
attr DEVICE showError 1
|
|
||||||
attr DEVICE showMatched 1
|
|
||||||
attr DEVICE stateFormat { my $ret ="";;\
|
|
||||||
my $lastCheck = ReadingsTimestamp($name,"MATCHED_READINGS","???");;\
|
|
||||||
$ret .= '<div style="text-align:left">';;\
|
|
||||||
$ret .= 'last <a title="eq3-downloads" href="http://www.eq-3.de/service/downloads.html">homematic</a>-fw-check => '.$lastCheck;;\
|
|
||||||
$ret .= '<br><br><pre>';;\
|
|
||||||
$ret .= "| device | model | cur_fw | new_fw | release |<br>";;\
|
|
||||||
$ret .= "------------------------------------------------------------------------------------<br>";;\
|
|
||||||
my $check = ReadingsVal($name,"newFwForDevices","error => no or wrong data from eq3-server!");;\
|
|
||||||
if($check eq "no fw-updates needed!") {\
|
|
||||||
$ret .= '| <b style="color:green">';;\
|
|
||||||
$ret .= sprintf("%-80s",$check);;\
|
|
||||||
$ret .= '</b> |';;\
|
|
||||||
} elsif($check eq "error => no or wrong data from eq3-server!") {\
|
|
||||||
$ret .= '| <b style="color:red">';;\
|
|
||||||
$ret .= sprintf("%-80s",$check);;\
|
|
||||||
$ret .= '</b> |';;\
|
|
||||||
} else {\
|
|
||||||
my @devices = split(',',$check);;\
|
|
||||||
foreach my $devStr (@devices) {\
|
|
||||||
my ($dev,$md,$ofw,$idx_fw,$nfw,$date) = $devStr =~ m/^([^\s]+)\s\(([^\s]+)\s\|\sfw_(\d+\.\d+)\s=>\sfw(\d\d)_([\d\.]+)\s\|\s([^\)]+)\)$/;;\
|
|
||||||
my $fw_link = ReadingsVal($name,"fw_link-".$idx_fw,"???");;\
|
|
||||||
my $cl_link = ReadingsVal($name,"changeLog_link-".$idx_fw,"???");;\
|
|
||||||
$ret .= '| <a href="/fhem?detail='.$dev.'"><b>';;\
|
|
||||||
$ret .= sprintf("%-23s",$dev);;\
|
|
||||||
$ret .= '</b></a> | ';;\
|
|
||||||
$ret .= '<b'.(($md eq "?")?' title="missing attribute model => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;\
|
|
||||||
$ret .= sprintf("%-23s",$md);;\
|
|
||||||
$ret .= '</b> | ';;\
|
|
||||||
$ret .= '<b'.(($ofw eq "0.0")?' title="missing attribute firmware => set device in teach mode to receive missing data" style="color:yellow"':' style="color:lightgray"').'>';;\
|
|
||||||
$ret .= sprintf("%6s",$ofw);;\
|
|
||||||
$ret .= '</b> | ';;\
|
|
||||||
$ret .= '<a title="download firmware file" href="'.$fw_link.'"><b style="color:red">';;\
|
|
||||||
$ret .= sprintf("%6s",$nfw);;\
|
|
||||||
$ret .= '</b></a> | ';;\
|
|
||||||
$ret .= (($cl_link ne "none")?'<a title="open changeLog file" href="'.$cl_link.'"><b style="color:black">':'<b style="color:lightgray">');;\
|
|
||||||
$ret .= sprintf("%-10s",$date);;\
|
|
||||||
$ret .= (($cl_link ne "none")?'</b></a>':'</b>');;\
|
|
||||||
$ret .= " |<br>";;\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
$ret .= '</pre></div>';;\
|
|
||||||
return $ret;;\
|
|
||||||
}
|
|
||||||
attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\
|
|
||||||
my $ret = "";;\
|
|
||||||
my @data;;\
|
|
||||||
if (ReadingsVal($name,"UNMATCHED_READINGS","?") eq "") {\
|
|
||||||
my @eq3FwList = map{\
|
|
||||||
@data = ReadingsVal($name,"fw_link-".$_,"?") =~ m/firmware\/(.*?)_update_v([\d_]+)_(\d\d)(\d\d)(\d\d)/i;;\
|
|
||||||
$data[0] =~ s/_/-/g;;\
|
|
||||||
sprintf("%s:%s:%s.%s.%s:%s",$data[0],$data[1],$data[4],$data[3],"20".$data[2],$_);;\
|
|
||||||
} ReadingsVal($name,"MATCHED_READINGS","?") =~ m/fw_link-(\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");;\
|
|
||||||
my ($h,$l) = split('\.',$v);;\
|
|
||||||
foreach my $newFw (grep m/^${md}:/i,@eq3FwList) {\
|
|
||||||
my ($nh,$nl,$no,$date,$idx) = $newFw =~ m/^[^:]+:(\d+)_(\d+)_?(\d*):([^:]+):(\d\d)$/;;\
|
|
||||||
if(($nh > $h) || (($nh == $h) && ($nl > $l))) {\
|
|
||||||
$ret .= "," if($ret ne "");;\
|
|
||||||
$ret .= $dev." (".$md." | fw_".$v." => fw".$idx."_".$nh.".".$nl.($no?sprintf(".%d",$no):"")." | ".$date.")";;\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
} else {\
|
|
||||||
$ret = "error => no or wrong data from eq3-server!";;\
|
|
||||||
}\
|
|
||||||
return ($ret eq "")?"no fw-updates needed!":$ret;;\
|
|
||||||
}
|
|
||||||
attr DEVICE webCmd reread
|
|
||||||
attr DEVICE model CUL_HM_firmware_update_downloader
|
|
||||||
|
|
||||||
|
|
||||||
#Contributed by Pfriemler & yersinia, see https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327
|
#Contributed by Pfriemler & yersinia, see https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327
|
||||||
name:hm_fw_check_v2
|
name:homematic_fw_check_v2
|
||||||
filter:TYPE=HTTPMOD
|
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)<br>Define a HTTPMOD device like <br>define hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400<a href="https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327">Source: Forum</a>
|
desc: check for homematic firmware updates; based on new link provided by Pfriemler (switch from eq-3.de to update.homematic.com)<br>Define a HTTPMOD device like <br>define hm_fw_check HTTPMOD https://update.homematic.com/firmware/api/firmware/search/DEVICE 86400<br /><a href="https://forum.fhem.de/index.php/topic,78501.msg1019327.html#msg1019327">Source: Forum</a>
|
||||||
order:X_01a1
|
order:X_01a
|
||||||
par:WHICHROOM;Actual room of the device, defaults to HTTPMOD; {AttrVal("DEVICE","room","HTTPMOD" )}
|
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)}
|
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
|
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 enableControlSet 1
|
attr DEVICE enableControlSet 1
|
||||||
attr DEVICE icon hm_ccu
|
attr DEVICE icon hm_ccu
|
||||||
@ -696,7 +594,7 @@ attr DEVICE userReadings newFwForDevices:MATCHED_READINGS.* {\
|
|||||||
return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
|
return ($ret eq "")?"no fw-updates needed!":$ret;;;;\
|
||||||
}
|
}
|
||||||
attr DEVICE webCmd reread
|
attr DEVICE webCmd reread
|
||||||
attr DEVICE model hm_fw_check_v2
|
attr DEVICE model homematic_fw_check_v2
|
||||||
|
|
||||||
|
|
||||||
#Contributed by OdfFHEM, see https://forum.fhem.de/index.php/topic,97694.msg992348.html#msg992348
|
#Contributed by OdfFHEM, see https://forum.fhem.de/index.php/topic,97694.msg992348.html#msg992348
|
||||||
|
@ -77,11 +77,9 @@ filter:TYPE=MQTT2_DEVICE:FILTER=CID=speechrecognTesting
|
|||||||
order:100003
|
order:100003
|
||||||
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant)");;return 1 if $devices[0];;return 0}
|
option:{my @devices=devspec2array("TYPE=(siri|alexa|gassistant)");;return 1 if $devices[0];;return 0}
|
||||||
set DEVICE attrTemplate mqtt2_speech_recognition_type_light
|
set DEVICE attrTemplate mqtt2_speech_recognition_type_light
|
||||||
par:NEWUSERREADINGS;NEWUSERREADINGS as set if sr_brightness is included, otherwise it will be added;{ my $old = AttrVal("DEVICE","userReadings",undef);; !defined $old ? 'sr_brightness:brightness.* {sprintf("%.0f", ReadingsNum("$name","brightness",0)/255*100)}' : $old =~ m,sr_brightness:brightness.*, ? $old : $old.', sr_brightness:brightness.* {sprintf("%.0f", ReadingsNum("$name","brightness",0)/255*100)}' }
|
#par:NEWUSERREADINGS;NEWUSERREADINGS as set if sr_brightness is included, otherwise it will be added;{ my $old = AttrVal("DEVICE","userReadings",undef);; !defined $old ? 'sr_brightness:brightness.* {sprintf("%.0f", ReadingsNum("$name","brightness",0)/255*100)}' : $old =~ m,sr_brightness:brightness.*, ? $old : $old.', sr_brightness:brightness.* {sprintf("%.0f", ReadingsNum("$name","brightness",0)/255*100)}' }
|
||||||
attr DEVICE genericDeviceType light
|
attr DEVICE genericDeviceType light
|
||||||
attr DEVICE homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=100,max=255
|
attr DEVICE homebridgeMapping Brightness=brightness::brightness,minValue=0,maxValue=255,max=255,factor=0.39216
|
||||||
#attr DEVICE homebridgeMapping Brightness=sr_brightness,cmd=brightness,max=255,minValue=0,maxValue=100
|
|
||||||
#attr DEVICE userReadings sr_brightness:brightness.* {sprintf("%.0f", ReadingsNum("$name","brightness",0)/255*100)}
|
|
||||||
#attr DEVICE userReadings NEWUSERREADINGS
|
#attr DEVICE userReadings NEWUSERREADINGS
|
||||||
option:TYPE=siri
|
option:TYPE=siri
|
||||||
option:TYPE=alexa
|
option:TYPE=alexa
|
||||||
@ -1797,6 +1795,42 @@ set DEVICE x_mqttcom announce
|
|||||||
set DEVICE attrTemplate mqtt2_speech_recognition_type_light
|
set DEVICE attrTemplate mqtt2_speech_recognition_type_light
|
||||||
attr DEVICE model shellydimmer
|
attr DEVICE model shellydimmer
|
||||||
|
|
||||||
|
|
||||||
|
###########################################
|
||||||
|
# ESPurna
|
||||||
|
#
|
||||||
|
# ESP8266 devices using ESPurna firmware.
|
||||||
|
# See project page for details: https://github.com/xoseperez/espurna/wiki
|
||||||
|
name:ESPurna_single_relay
|
||||||
|
filter:TYPE=MQTT2_DEVICE
|
||||||
|
desc:ESPurna is a alternative firmware comparable to tasmota, see <a href="https://github.com/xoseperez/espurna/wiki">project page wiki</a>. <br>NOTE: First experimental version, to contribute see <a href="https://forum.fhem.de/index.php/topic,108058.0.html">Forum Thread</a>.
|
||||||
|
order:A_30
|
||||||
|
par:DEVNAME;Device's name in the topic tree;{ AttrVal("DEVICE","readingList","") =~ m,([^:/]+)/([^/]+)/, ? $1 : undef }
|
||||||
|
attr DEVICE readingList DEVNAME/relay/0:.* relay_0\
|
||||||
|
DEVNAME/relay/0:.* { $EVENT ? {"state"=>"on"} : {"state"=>"off"} }\
|
||||||
|
DEVNAME/app:.* app\
|
||||||
|
DEVNAME/version:.* version\
|
||||||
|
DEVNAME/board:.* board\
|
||||||
|
DEVNAME/host:.* host\
|
||||||
|
DEVNAME/ssid:.* ssid\
|
||||||
|
DEVNAME/ip:.* ip\
|
||||||
|
DEVNAME/mac:.* mac\
|
||||||
|
DEVNAME/rssi:.* rssi\
|
||||||
|
DEVNAME/uptime:.* uptime\
|
||||||
|
DEVNAME/datetime:.* datetime\
|
||||||
|
DEVNAME/freeheap:.* freeheap\
|
||||||
|
DEVNAME/vcc:.* vcc\
|
||||||
|
DEVNAME/status:.* status\
|
||||||
|
DEVNAME/loadavg:.* loadavg
|
||||||
|
attr DEVICE setList on DEVNAME/relay/0/set 1\
|
||||||
|
off DEVNAME/relay/0/set 0\
|
||||||
|
toggle DEVNAME/relay/0/set 2
|
||||||
|
attr DEVICE setStateList on off toggle
|
||||||
|
attr DEVICE event-on-change-reading .*
|
||||||
|
set DEVICE attrTemplate mqtt2_speech_recognition_type_switch
|
||||||
|
attr DEVICE model ESPurna_single_relay
|
||||||
|
|
||||||
|
|
||||||
###############
|
###############
|
||||||
#ebusd
|
#ebusd
|
||||||
#
|
#
|
||||||
@ -1970,7 +2004,9 @@ attr DEVICE readingList \
|
|||||||
BASE_ID/updates/REMOTE_ID/BULB_TYPE/0:.* { json2nameValue($EVENT) }
|
BASE_ID/updates/REMOTE_ID/BULB_TYPE/0:.* { json2nameValue($EVENT) }
|
||||||
attr DEVICE setList\
|
attr DEVICE setList\
|
||||||
on:noArg BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"ON"}\
|
on:noArg BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"ON"}\
|
||||||
|
on_transition:slider,3,10,3600 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"ON","transition":$EVTPART1}\
|
||||||
off:noArg BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"OFF"}\
|
off:noArg BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"OFF"}\
|
||||||
|
off_transition:slider,3,10,3600 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"status":"OFF","transition":$EVTPART1}\
|
||||||
brightness:colorpicker,BRI,0,15,255 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}\
|
brightness:colorpicker,BRI,0,15,255 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}\
|
||||||
hue:colorpicker,HUE,0,1,359 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}\
|
hue:colorpicker,HUE,0,1,359 BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}\
|
||||||
command:uzsuSelectRadio,Weiss,Nacht BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}
|
command:uzsuSelectRadio,Weiss,Nacht BASE_ID/REMOTE_ID/BULB_TYPE/GROUP_ID {"$EVTPART0":"$EVTPART1"}
|
||||||
@ -2360,7 +2396,7 @@ attr DEVICE setList start:noArg BASE_ID/DEVNAME/command start\
|
|||||||
store_map BASE_ID/DEVNAME/custom_command {"command":"store_map","name":"$EVTPART1"}
|
store_map BASE_ID/DEVNAME/custom_command {"command":"store_map","name":"$EVTPART1"}
|
||||||
attr DEVICE setStateList charge locate pause stop start
|
attr DEVICE setStateList charge locate pause stop start
|
||||||
attr DEVICE comment For original code for "attrTmqtt2_roborock_valetudo2svg()" see <a href="https://forum.fhem.de/index.php/topic,104687.msg986304.html#msg986304">this forum thread</a>. To display generated map seperately, define a weblink device: <br>define valetudo_map weblink htmlCode <img src="fhem/images/DEVNAME_map.svg">
|
attr DEVICE comment For original code for "attrTmqtt2_roborock_valetudo2svg()" see <a href="https://forum.fhem.de/index.php/topic,104687.msg986304.html#msg986304">this forum thread</a>. To display generated map seperately, define a weblink device: <br>define valetudo_map weblink htmlCode <img src="fhem/images/DEVNAME_map.svg">
|
||||||
farewell:template has been applied successfully. <br>NOTE: additional code has been downloaded from svn (contrib). <br>Generated map will be shown as devStateIcon or define a weblink device: define valetudo_map weblink htmlCode <img src="fhem/images/DEVNAME_map.svg">.<br>For details, see <a href="https://forum.fhem.de/index.php/topic,104687.msg986304.html#msg986304">this forum thread</a>. NOTE: For use with rand256-Valetudo variant of the code, change "svg" in devStateIcon code to "png" and the following line: <br>BASE_ID/DEVNAME/map:.* { WriteFile("www/images/DEVNAME_map.png",$EVENT);; {map=>"images/DEVNAME_map.png"} }
|
farewell:template has been applied successfully. <br>NOTE: additional code has been downloaded from svn (contrib). <br>Generated map will be shown as devStateIcon or define a weblink device: define valetudo_map weblink htmlCode <img src="fhem/images/DEVNAME_map.svg">.<br>For details, see <a href="https://forum.fhem.de/index.php/topic,104687.msg986304.html#msg986304">this forum thread</a>. NOTE: For use with rand256-Valetudo variant of the code with external map generator, change "svg" in devStateIcon code to "png", change readingList entry for map_data to "BASE_ID/DEVNAME/map_data:.* {}" and add the following line: <br>BASE_ID/DEVNAME/map:.* { WriteFile("www/images/DEVNAME_map.png",$EVENT);; {map=>"images/DEVNAME_map.png"} }
|
||||||
attr DEVICE model roborock
|
attr DEVICE model roborock
|
||||||
|
|
||||||
# source: https://forum.fhem.de/index.php/topic,105222.0.html
|
# source: https://forum.fhem.de/index.php/topic,105222.0.html
|
||||||
|
Loading…
x
Reference in New Issue
Block a user