diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
index c1acaacd5..71e320faf 100644
--- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template
+++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template
@@ -1432,7 +1432,7 @@ setreading DEVICE attrTemplateVersion 20200522 or prior
name:tasmota_8channel_split
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*(tele|cmnd|stat).*
-desc:sonoff 8 channel device flashed with Tasmota.
NOTE: several additional devices will be created for each channel
+desc:sonoff 8 channel device flashed with Tasmota.
NOTE: several additional devices will be created for channels 2 to 8
order:A_04c1
par:CMNDTOPIC;Command topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}cmnd$3" : undef }
par:STATTOPIC;ack topic prefix, without trailing /;{ AttrVal("DEVICE","readingList","") =~ m,([^:]*)\b(tele|cmnd|stat)(/.*)?/LWT:, ? "${1}stat$3" : undef }
@@ -1482,7 +1482,7 @@ attr DEVICE_CH8 setList \
attr DEVICE_CH8 readingList \
STATTOPIC/POWER8:.* state
attr DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8 model tasmota_8channel_split
-setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8 attrTemplateVersion 20200828
+setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8 attrTemplateVersion 20200830
set DEVICE attrTemplate set_associatedWith \CHANNELS=8
set DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4,DEVICE_CH5,DEVICE_CH6,DEVICE_CH7,DEVICE_CH8 attrTemplate speechcontrol_type_switch
@@ -1968,7 +1968,7 @@ setreading DEVICE attrTemplateVersion 20200609
name:shelly3em
filter:TYPE=MQTT2_DEVICE:FILTER=readingList=.*shellies.*
order:A_10c
-desc:Applies to Shelly 3em devices.
NOTE: first, experimental version
+desc:Applies to Shelly 3em devices.
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 }
par:RADIO_DONOTSETUSERREADING;Do not set userreading for total energy consumption;{ undef }
@@ -1976,11 +1976,11 @@ par:NEWUSERREADINGS;NEWUSERREADINGS as set if emeter_0_energy_total is included,
set DEVICE attrTemplate shelly1_w_energy_measuring \RADIO_SETUSERREADING=0 \RADIO_DONOTSETUSERREADING=0
set DEVICE attrTemplate shelly1
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 $cons3 = ReadingsVal($name,"emeter_2_power","unknown");; my $total1 = ReadingsVal($name,"emeter_0_kWh","unknown");; my $total2 = ReadingsVal($name,"emeter_1_kWh","unknown");; my $total3 = ReadingsVal($name,"emeter_2_kWh","unknown");; my $total_sum = $total1+$total2+$total3;; "".FW_makeImage($onl)." ".FW_makeImage($light)."
P1: $cons1 W / Total P1: $total1 kWh
P2: $cons2 W / Total P2: $total2 kWh
P3: $cons3 W / Total P3: $total3 kWh
"}
-attr DEVICE stateFormat { my $cons1 = ReadingsVal($name,"emeter_0_power","unknown");; my $cons2 = ReadingsVal($name,"emeter_1_power","unknown");; my $cons3 = ReadingsVal($name,"emeter_2_power","unknown");; my $total1 = ReadingsVal($name,"emeter_0_kWh","unknown");; my $total2 = ReadingsVal($name,"emeter_1_kWh","unknown");; my $total3 = ReadingsVal($name,"emeter_2_kWh","unknown");; return qq(Relay: $state,
P1: $cons1 W / Total P1: $total1 kWh
P2: $cons2 W / Total P2: $total2 kWh
P3: $cons3 W / Total P3: $total3 kWh) }
+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 $cons3 = ReadingsVal($name,"emeter_2_power","unknown");; my $total1 = ReadingsVal($name,"emeter_0_kWh","unknown");; my $total2 = ReadingsVal($name,"emeter_1_kWh","unknown");; my $total3 = ReadingsVal($name,"emeter_2_kWh","unknown");; return qq(Relay: $light,\nP1: $cons1 W / Total P1: $total1 kWh\nP2: $cons2 W / Total P2: $total2 kWh\nP3: $cons3 W / Total P3: $total3 kWh) }
attr DEVICE readingList shellies/DEVNAME/online:.* online\
shellies/DEVNAME/announce:.* { json2nameValue($EVENT) }\
shellies/announce:.* { $EVENT =~ m,..id...DEVNAME...mac.*, ? json2nameValue($EVENT) : return }\
- shellies/DEVNAME/relay/0:.* relay_0\
+ shellies/DEVNAME/relay/0:.* state\
shellies/DEVNAME/input_event/0:.* { json2nameValue($EVENT) }\
shellies/DEVNAME/input/0:.* input0\
shellies/DEVNAME/online:.* online\
@@ -2013,8 +2013,9 @@ attr DEVICE readingList shellies/DEVNAME/online:.* online\
shellies/DEVNAME/emeter/2/total_returned:.* emeter_2_total_returned
deletereading -q DEVICE (?!associatedWith).*
set DEVICE x_mqttcom announce
+set DEVICE attrTemplate speechcontrol_type_switch
attr DEVICE model shelly3em
-setreading DEVICE attrTemplateVersion 20200828
+setreading DEVICE attrTemplateVersion 20200830
option:{ RADIO_SETUSERREADING }
attr DEVICE userReadings NEWUSERREADINGS
@@ -2203,46 +2204,32 @@ set DEVICE attrTemplate shellyplug
attr DEVICE getList \
power0:noArg shellies/DEVNAME/relay/0/power power0\
energy0:noArg shellies/DEVNAME/relay/0/energy energy0
-attr DEVICE comment Channel 1 for DEVICE, see also DEVICE_CH2, DEVICE_CH3 and DEVICE_CH4
-setreading DEVICE associatedWith DEVICE_CH2,DEVICE_CH3,DEVICE_CH4
-copy DEVICE DEVICE_CH2
+attr DEVICE model shelly4pro_split
+setreading DEVICE attrTemplateVersion 20200830
+set DEVICE attrTemplate set_associatedWith \CHANNELS=4 \MAKECOPIES=1
attr DEVICE_CH2 readingList shellies/DEVNAME/relay/1:.* state
-setreading DEVICE_CH2 associatedWith DEVICE,DEVICE_CH3,DEVICE_CH4
attr DEVICE_CH2 setList \
off:noArg shellies/DEVNAME/relay/1/command off\
on:noArg shellies/DEVNAME/relay/1/command on
attr DEVICE getList \
power1:noArg shellies/DEVNAME/relay/1/power power1\
energy1:noArg shellies/DEVNAME/relay/1/energy energy1
-attr DEVICE comment Channel 2 for DEVICE, see also DEVICE, DEVICE_CH3 and DEVICE_CH4
-copy DEVICE DEVICE_CH3
attr DEVICE_CH3 readingList shellies/DEVNAME/relay/2:.* state
-setreading DEVICE_CH3 associatedWith DEVICE,DEVICE_CH2,DEVICE_CH4
attr DEVICE_CH3 setList \
off:noArg shellies/DEVNAME/relay/2/command off\
on:noArg shellies/DEVNAME/relay/2/command on
-attr DEVICE getList \
+attr DEVICE_CH3 getList \
power2:noArg shellies/DEVNAME/relay/2/power power2\
energy2:noArg shellies/DDEVNAME/relay/2/energy energy2
-attr DEVICE comment Channel 3 for DEVICE, see also DEVICE, DEVICE_CH2 and DEVICE_CH4
-copy DEVICE DEVICE_CH4
attr DEVICE_CH4 readingList shellies/DEVNAME/relay/3:.* state
-setreading DEVICE_CH4 associatedWith DEVICE,DEVICE_CH2,DEVICE_CH3
attr DEVICE_CH4 setList \
off:noArg shellies/DEVNAME/relay/3/command off\
on:noArg shellies/DEVNAME/relay/3/command on
attr DEVICE_CH4 getList \
power3:noArg shellies/DEVNAME/relay/3/power power3\
energy3:noArg shellies/DEVNAME/relay/3/energy energy3
-attr DEVICE_CH4 comment Channel 4 for DEVICE, see also DEVICE, DEVICE_CH2 and DEVICE_CH3
-attr DEVICE model shelly4pro_split
-setreading DEVICE attrTemplateVersion 20200522 or prior
-attr DEVICE_CH2 model shelly4pro_split
-setreading DEVICE_CH2 attrTemplateVersion 20200522 or prior
-attr DEVICE_CH3 model shelly4pro_split
-setreading DEVICE_CH3 attrTemplateVersion 20200522 or prior
-attr DEVICE_CH4 model shelly4pro_split
-setreading DEVICE_CH4 attrTemplateVersion 20200522 or prior
+set DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 attrTemplate speechcontrol_type_switch
+
# shelly4pro unified device using original firmware
# source: https://forum.fhem.de/index.php/topic,97218.msg905689.html#msg905689
@@ -2453,11 +2440,11 @@ attr DEVICE readingList \
attr DEVICE userReadings 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:white:gain:rgb:effect
attr DEVICE setStateList on off
-attr DEVICE devStateIcon {my $onl = ReadingsVal($name,"online","false") eq "true"?"10px-kreis-gruen":"10px-kreis-rot";; my $cons = ReadingsVal($name,"power","unknown");; "".FW_makeImage($onl)." ".FW_makeImage($state)."Verbrauch: $cons
"}
+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,"power","unknown");; "".FW_makeImage($onl)." ".FW_makeImage($light)."Verbrauch: $cons
"}
set DEVICE x_mqttcom announce
set DEVICE attrTemplate speechcontrol_type_light
attr DEVICE model shelly2rgbw_color
-setreading DEVICE attrTemplateVersion 20200801
+setreading DEVICE attrTemplateVersion 20200830
#contributed by user sledge
name:shelly2rgbw_4w_split