2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

mqtt2.template: add shelly2em, change shellybulb, add tasmota venetian blind

git-svn-id: https://svn.fhem.de/fhem/trunk@25213 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
Beta-User 2021-11-11 05:15:34 +00:00
parent 1713a3cc8b
commit ca60da9233

View File

@ -1443,6 +1443,75 @@ attr DEVICE,DEVICE_CH2 model tasmota_4ch_two_shutters_invert_0
setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20210607
set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_blind
name:tasmota_2ch_shutter_venetian_invert_0
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
desc:Configures a dual chanel tasmota device as venetian shutter; needs Tasmota version 10.0.0.1 or higher, see <a href="https://github.com/arendst/Tasmota/wiki/blinds-and-roller-shades">Tasmota wiki</a><br> and <a href="https://forum.fhem.de/index.php/topic,123842.0.html">Forum Thread</a><br>NOTE: This template will configure the shutter in Homematic-style device pct 100% = open.
order:A_02b3
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:TELETOPIC;info topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}tele$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal('DEVICE','readingList','') =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
par:IO_DEV;Currently used IO;{ AttrVal('DEVICE','IODev',InternalVal('DEVICE','IODev',undef)->{NAME}) }
par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 }
par:BCKLGCMND;Send out configuration command via backlog?;{ 1 }
par:ICON;ICON as set, defaults to fts_shutter_updown;{ AttrVal('DEVICE','icon','fts_shutter_updown') }
set DEVICE attrTemplate tasmota_set_lowercase_texts_and_state1
attr DEVICE icon ICON
option:{BCKLGCMND}
set IO_DEV publish CMNDTOPIC/Backlog LedState 2; SetOption80 1; Interlock 1,2; Interlock ON; SetOption81 1; SetOption80 1; PowerOnState 0; switchmode1 3; switchmode2 3; PulseTime1 0; PulseTime2 0; SaveData 1;
set IO_DEV publish CMNDTOPIC/Restart 1
option:global
attr DEVICE setList \
close:noArg CMNDTOPIC/ShutterClose1\
open:noArg CMNDTOPIC/ShutterOpen1\
half:noArg CMNDTOPIC/ShutterPosition1 50\
pct:slider,0,1,100 CMNDTOPIC/ShutterPosition1 $EVTPART1\
stop:noArg CMNDTOPIC/ShutterStop1\
closeSlat:noArg CMNDTOPIC/ShutterClose2\
openSlat:noArg CMNDTOPIC/ShutterOpen2\
halfSlat:noArg CMNDTOPIC/ShutterPosition2 50\
pctSlat:slider,0,1,100 CMNDTOPIC/ShutterPosition2 $EVTPART1\
stopSlat:noArg CMNDTOPIC/ShutterStop2\
resetClose:noArg CMNDTOPIC/ShutterSetClose1\
resetCloseSlat:noArg CMNDTOPIC/ShutterSetClose2
x_configuration CMNDTOPIC/$EVTPART1 $EVTPART2
attr DEVICE readingList \
TELETOPIC/LWT:.* LWT\
STATTOPIC/RESULT:.* { json2nameValue($EVENT) }\
STATTOPIC/POWER1:.* POWER1\
STATTOPIC/POWER1:on {{'state' => 'opening'}}\
STATTOPIC/POWER2:.* POWER2\
STATTOPIC/POWER2:on {{'state' => 'closing'}}\
STATTOPIC/SHUTTER1:.* state\
STATTOPIC/SHUTTER1:.* pct\
STATTOPIC/SHUTTER2:.* stateSlat\
STATTOPIC/SHUTTER2:.* pctSlat\
TELETOPIC/RESULT:.* { json2nameValue($EVENT) }\
TELETOPIC/STATE:.* { json2nameValue($EVENT) }\
TELETOPIC/SENSOR:.* { json2nameValue($EVENT) }\
TELETOPIC/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ? json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
TELETOPIC/UPTIME:.* { json2nameValue($EVENT) }
attr DEVICE devStateIcon opening:fts_shutter_up@red closing:fts_shutter_down@red Online:10px-kreis-gruen Offline:10px-kreis-rot 100:fts_shutter_100 0:fts_shutter_10 9\d.*:fts_shutter_90 8\d.*:fts_shutter_80 7\d.*:fts_shutter_70 6\d.*:fts_shutter_60 5\d.*:fts_shutter_50 4\d.*:fts_shutter_40 3\d.*:fts_shutter_30 2\d.*:fts_shutter_20 1\d.*:fts_shutter_10 \b\d\b.*:fts_shutter_10 set_.*:fts_shutter_updown
attr DEVICE cmdIcon open:fts_shutter_up close:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr DEVICE webCmd :open:close:half:stop:pct
attr DEVICE eventMap open:opens close:closes
attr DEVICE stateFormat <a href="http://IPAddress" target="_blank">\
LWT\
</a>\
state
deletereading -q DEVICE (?!associatedWith|IODev).*
attr DEVICE setStateList open close half stop pct
attr DEVICE comment After applying the template set "ShutterOpenDuration1", "ShutterCloseDuration1" and "shuttertiltconfig1" first.\
Use the "set x_configuration" Option. Example: "set x_configuration ShutterOpenDuration1 35"\
Shutter specific commands available: ShutterOpenDuration1, ShutterCloseDuration1, ShutterRelay1, ShutterSetHalfway1, ShutterSetClose1, ShutterInvert1, ShutterMotordelay1, ShutterCalibration1; you may use this for general setOptions in tasmota also.\
commands may need restart to take effect.\
For calibration, use of more than one shutter device and further information on the available commands see <a href="https://tasmota.github.io/docs/Blinds-and-Shutters/</a>.
farewell:template has been applied successfully. Now it's recommended to set shutter's open and close duration and shuttertiltconfig1, see short instruction in comment attribute or the <br><a href="https://tasmota.github.io/docs/Blinds-and-Shutters/">Tasmota wiki</a>.
attr DEVICE model tasmota_2ch_shutter_venetian_invert_0
setreading DEVICE attrTemplateVersion 20211110
option:{ CALLSPEECHRECOGN }
set DEVICE attrTemplate speechcontrol_type_blind
# based on a proposal by twdotnet, https://forum.fhem.de/index.php/topic,94495.msg1137400.html#msg1137400
# shelly i3 3 channel input switches
# shelly i3 3 channel input switches with device configuration
@ -2469,10 +2538,52 @@ attr DEVICE comment To get appropriate loadState values: Change the default limi
attr DEVICE model shelly1_w_energy_measuring_washer_example
setreading DEVICE attrTemplateVersion 20200831
name:shelly2em
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
order:A_10c
desc:Applies to Shelly 2em devices. <br>See https://forum.fhem.de/index.php/topic,123920.msg1185387.html#msg1185387
par:DEVNAME;Shelly device name in the topic;{ AttrVal('DEVICE','readingList','') =~ m,shellies/([^/]*)/, ? $1 : undef }
par:RADIO_SETUSERREADING;Set userreading for total energy consumption;{ undef }
par:RADIO_DONOTSETUSERREADING;Do not set userreading for total energy consumption;{ undef }
par:NEWUSERREADINGS;NEWUSERREADINGS as set if emeter_0_energy_total is included, otherwise it will be added;{ my $tobeadded = q(emeter_0_energy_total:emeter_0_energy:.* monotonic {ReadingsNum($name,'emeter_0_energy',0)}, emeter_1_energy_total:emeter_1_energy:.* monotonic {ReadingsNum($name,'emeter_1_energy',0)}); my $old = AttrVal('DEVICE','userReadings',undef); !defined $old ? $tobeadded : $old =~ m,emeter_0_energy_total:emeter_0_energy.*, ? $old : $old." $tobeadded" }
set DEVICE attrTemplate shelly1_w_energy_measuring \RADIO_SETUSERREADING=RADIO_SETUSERREADING \RADIO_DONOTSETUSERREADING=RADIO_DONOTSETUSERREADING
attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'true'?'10px-kreis-gruen':'10px-kreis-rot'; my $light = ReadingsVal($name,'state','off'); my $cons1 = ReadingsVal($name,'emeter_0_power','unknown'); my $cons2 = ReadingsVal($name,'emeter_1_power','unknown'); my my $total1 = ReadingsVal($name,'emeter_0_kWh','unknown'); my $total2 = ReadingsVal($name,'emeter_1_kWh','unknown'); my $total_sum = $total1+$total2; '<a href="http://' .ReadingsVal($name,'ip','none').' "target="_blank">'.FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>P1: $cons1 W / Total P1: $total1 kWh<br>P2: $cons2 W / Total P2: $total2 kWh<br>2 Phases total: $total_sum kWh</div>"}
attr DEVICE stateFormat { my $light = ReadingsVal($name,'state','off'); my $cons1 = ReadingsVal($name,'emeter_0_power','unknown'); my $cons2 = ReadingsVal($name,'emeter_1_power','unknown'); my my $total1 = ReadingsVal($name,'emeter_0_kWh','unknown'); my $total2 = ReadingsVal($name,'emeter_1_kWh','unknown'); return qq(Relay: $light,<br>P1: $cons1 W / Total P1: $total1 kWh<br>P2: $cons2 W / Total P2: $total2 kWh) }
attr DEVICE readingList shellies/DEVNAME/online:.* online\
shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\
shellies/DEVNAME/relay/0:.* state\
shellies/DEVNAME/input_event/0:.* { json2nameValue($EVENT) }\
shellies/DEVNAME/input/0:.* input0\
shellies/DEVNAME/online:.* online\
shellies/DEVNAME/emeter/0/power:.* emeter_0_power\
shellies/DEVNAME/emeter/0/current:.* emeter_0_current\
shellies/DEVNAME/emeter/0/voltage:.* emeter_0_voltage\
shellies/DEVNAME/emeter/0/reactive_power:.* emeter_0_reactive_power\
shellies/DEVNAME/emeter/1/power:.* emeter_1_power\
shellies/DEVNAME/emeter/1/pf:.* emeter_1_pf\
shellies/DEVNAME/emeter/1/current:.* emeter_1_current\
shellies/DEVNAME/emeter/1/voltage:.* emeter_1_voltage\
shellies/DEVNAME/emeter/1/reactive_power:.* emeter_1_reactive_power\
shellies/DEVNAME/emeter/0/energy:.* emeter_0_energy\
shellies/DEVNAME/emeter/0/returned_energy:.* emeter_0_returned_energy\
shellies/DEVNAME/emeter/0/total:.* emeter_0_total\
shellies/DEVNAME/emeter/0/total:.* {'emeter_0_kWh' => sprintf("%.2f",$EVENT/1000)}\
shellies/DEVNAME/emeter/0/total_returned:.* emeter_0_total_returned\
shellies/DEVNAME/emeter/1/energy:.* emeter_1_energy\
shellies/DEVNAME/emeter/1/returned_energy:.* emeter_1_returned_energy\
shellies/DEVNAME/emeter/1/total:.* emeter_1_total\
shellies/DEVNAME/emeter/1/total:.* {'emeter_1_kWh' => sprintf("%.2f",$EVENT/1000)}\
shellies/DEVNAME/emeter/1/total_returned:.* emeter_1_total_returned
deletereading -q DEVICE (?!associatedWith|IODev).*
set DEVICE x_mqttcom announce
attr DEVICE model shelly2em
setreading DEVICE attrTemplateVersion 20211110
option:{ RADIO_SETUSERREADING }
attr DEVICE userReadings NEWUSERREADINGS
name:shelly3em
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
order:A_10c
order:A_10c1
desc:Applies to Shelly 3em devices. <br>NOTE: early version, might still need some testing
par:DEVNAME;Shelly1 name in the topic;{ AttrVal("DEVICE","readingList","") =~ m,shellies/([^/]*)/, ? $1 : undef }
par:RADIO_SETUSERREADING;Set userreading for total energy consumption;{ undef }
@ -2800,7 +2911,8 @@ attr DEVICE stateFormat R0: relay0 R1: relay1 R2: relay2 R3: relay3
attr DEVICE model shelly4pro_unified
setreading DEVICE attrTemplateVersion 20200522 or prior
# shellybulb using original firmware
#shellybulb using original firmware
# some modifications by Rico, https://forum.fhem.de/index.php/topic,123486.msg1185455.html#msg1185455
name:shellybulb
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
desc:shellybulb using original firmware <br>Tested with 1.49
@ -2808,26 +2920,25 @@ order:A_15
par:DEVNAME;name of this shelly;{ AttrVal('DEVICE','readingList','') =~ m,shellies/([^/]+)/, ? $1 : undef }
par:ICON;ICON as set, defaults to light_control;{ AttrVal('DEVICE','icon','light_control') }
attr DEVICE icon ICON
attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'true'?'10px-kreis-gruen':'10px-kreis-rot'; my $light = ReadingsVal($name,'state','off'); my $cons = ReadingsVal($name,'light_0_power','unknown'); '<a href="http://'.ReadingsVal($name,'ip','none').' "target="_blank">'.FW_makeImage($onl)."</a> <a href=\"/fhem?cmd.dummy=set $name toggle&XHR=1\">".FW_makeImage($light)."</a><div>Verbrauch: $cons</div>"}
attr DEVICE setList\
off:noArg shellies/DEVNAME/color/0/command off\
on:noArg shellies/DEVNAME/color/0/command on\
pct:colorpicker,BRI,0,1,100 shellies/DEVNAME/color/0/set {"gain":"$EVTPART1","brightness":$EVTPART1}\
pct_on:colorpicker,BRI,0,1,100 shellies/DEVNAME/color/0/set {"turn":"on","gain":$EVTPART1,"brightness":$EVTPART1}\
ct:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if $EVTPART1<3000;qq(shellies/DEVNAME/color/0/set {"mode":"white","temp":$EVTPART1})}\
ct_on:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if $EVTPART1<3000;qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","temp":$EVTPART1})}\
rgb:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;return if !defined $3;if($1 ne $2 || $2 ne $3){qq(shellies/DEVNAME/color/0/set {"mode":"color","gain":"100","red":).hex($1).qq(,"green":).hex($2).qq(,"blue":).hex($3).'}'}else{qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","brightness":).int(hex($1)/2.55).'}'}}\
rgb_on:colorpicker,RGB {$EVTPART1=~/(..)(..)(..)/;return if !defined $3;if($1 ne $2 || $2 ne $3){qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"color","gain":"100","red":).hex($1).qq(,"green":).hex($2).qq(,"blue":).hex($3).'}'}else{qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","brightness":).int(hex($1)/2.55).'}'}}\
effect:selectnumbers,0,1,3,0,lin shellies/DEVNAME/color/0/set {"turn": "on","mode":"color","effect":$EVTPART1}\
pct:colorpicker,BRI,0,1,100 shellies/DEVNAME/color/0/set {"turn":"on","gain":$EVTPART1,"brightness":$EVTPART1}\
ct:colorpicker,CT,3000,10,6500 {$EVTPART1=3000 if $EVTPART1<3000;qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","temp":$EVTPART1})}\
rgb:colorpicker,RGB {return 'shellies/DEVNAME/color/0/command off' if $EVTPART1 eq '000000'; return 'shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","temp":4000}' if $EVTPART1 eq 'FFFFFF'; $EVTPART1=~/(..)(..)(..)/; return if !defined $3; if($1 ne $2 || $2 ne $3){qq(shellies/DEVNAME/color/0/set {"mode":"color","gain":"100","red":).hex($1).qq(,"green":).hex($2).qq(,"blue":).hex($3).'}'}else{qq(shellies/DEVNAME/color/0/set {"turn":"on","mode":"white","brightness":).int(hex($1)/2.55).'}'}}\
x_update:noArg shellies/DEVNAME/command update_fw\
x_mqttcom shellies/DEVNAME/command $EVTPART1
deletereading -q DEVICE status_.*
attr DEVICE readingList shellies/DEVNAME/color/0/status:.* {json2nameValue($EVENT,'',$JSONMAP)}
attr DEVICE userReadings ct:temp.* {ReadingsVal($name,"temp",3000)}, rgb:red.* {if(ReadingsVal($name,'mode','') eq 'color'){sprintf("%02X%02X%02X", ReadingsVal($name,'red',99), ReadingsVal($name,'green',99), ReadingsVal($name,'blue',99))}else{my $a=sprintf("%02X",ReadingsVal($name,'brightness',0)*2.555);"$a$a$a"}}
attr DEVICE webCmd on:off:pct:ct:rgb
attr DEVICE webCmd on:off:pct:ct:rgb:effect
attr DEVICE jsonMap brightness:pct
set DEVICE x_mqttcom announce
set DEVICE attrTemplate speechcontrol_type_light
attr DEVICE model shellybulb
setreading DEVICE attrTemplateVersion 20211022
setreading DEVICE attrTemplateVersion 20211110
# contributed by KurtK https://forum.fhem.de/index.php/topic,94495.msg1055093.html#msg1055093
# shellyduo using original firmware