diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index f384b07d7..4f7727d9d 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -3320,50 +3320,97 @@ setreading DEVICE attrTemplateVersion 20200831 # SHELLY plus section # # shelly devices using the V2 MQTT API https://shelly-api-docs.shelly.cloud/gen2/Overview/RPCChannels#mqtt -# Shelly Plus 1PM using original firmware. +# Shelly Plus 1 using original firmware. name:shellyPlus_1 filter:TYPE=MQTT2_DEVICE -desc:First experimental version of a base template for second generation shelly devices (names with "plus", without power measurement) -par:DEV_TOPIC;Shelly name in the topic;{ AttrVal('DEVICE','devicetopic',AttrVal('DEVICE','readingList','')) =~ m<(shellies/[^/]+|shellyplus[^/:_]{4,}+)> ? $1 : undef } +desc:Early version of a base template for second generation shelly devices (names with "plus", without power measurement) +par:DEV_TPC;Shelly name in the topic;{ AttrVal('DEVICE','devicetopic',AttrVal('DEVICE','readingList','')) =~ m<(shellies/[^/]+|shellyp(lus|ro4pm)[^/:_]{4,}+)> ? $1 : undef } par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 } order:A_20 par:ICON;ICON as set, defaults to message_socket;{ AttrVal('DEVICE','icon','message_socket') } deletereading -q DEVICE (?!associatedWith|IODev).* attr DEVICE icon ICON -attr DEVICE devicetopic DEV_TOPIC +attr DEVICE devicetopic DEV_TPC attr DEVICE setList\ - toggle:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Switch.Toggle","params": {"id":0}}\ - off:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Switch.Set","params": {"id":0,"on":false}}\ - on:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Switch.Set","params": {"id":0,"on":true}}\ - on-for-timer $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}\ - x_update:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Shelly.Update","params": {"stage":"stable"}}\ - x_reboot:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem","method":"Shelly.Reboot"} + toggle:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}\ + off:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\ + on:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}\ + on-for-timer $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}\ + x_update:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}\ + x_reboot:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"} attr DEVICE readingList $\DEVICETOPIC/online:.* online\ $\DEVICETOPIC/events/rpc:.* { json2nameValue($EVENT,'',$JSONMAP) }\ $\DEVICETOPIC/status/mqtt:.* { json2nameValue($EVENT, 'mqtt_', $JSONMAP) }\ $\DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }\ - $\DEVICETOPIC/status/switch_0:.* { json2nameValue($EVENT, 'switch_0_', $JSONMAP) } -attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen'; $onl = FW_makeImage($onl); my $light = ReadingsVal($name,'switch_0_output','false') =~ m{false|off}?'off':'on'; $light = FW_makeImage($light); my $ip = ReadingsVal($name,'ip','none'); qq(${onl}${light})} -attr DEVICE jsonMap params_switch_0_aenergy_total:aenergy_total params_switch_0_apower:apower temperature_tC:temperature temperature_tF:0 params_wifi_sta_ip:ip + $\DEVICETOPIC/status/switch_0:.* { $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT, 'switch_', $JSONMAP) }\ + fhem2shelly/rpc:.* {} +attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen';; $onl = FW_makeImage($onl); my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $temp = ReadingsVal($name,'temperature','-100'); my $ip = ReadingsVal($name,'ip','none'); qq(${onl}${light}
Temp: $temp °C
)} +attr DEVICE jsonMap switch_state:state params_switch_0_aenergy_total:aenergy_total params_switch_0_apower:apower temperature_tC:temperature temperature_tF:0 params_wifi_sta_ip:ip +attr DEVICE setStateList on off toggle +attr DEVICE webCmd : attr DEVICE model shellyPlus_1 -setreading DEVICE attrTemplateVersion 20211224 +setreading DEVICE attrTemplateVersion 20220104 option:{ CALLSPEECHRECOGN } set DEVICE attrTemplate speechcontrol_type_switch # Shelly Plus 1PM using original firmware. name:shellyPlus_1pm filter:TYPE=MQTT2_DEVICE -desc:First experimental version of a base template for second generation shelly devices (names with "plus", with power measurement) +desc:Early version of a base template for second generation shelly devices (names with "plus", with power measurement) par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 } order:A_20a -set DEVICE attrTemplate shellyPlus_1 CALLSPEECHRECOGN=0 -attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen'; $onl = FW_makeImage($onl); my $light = ReadingsVal($name,'output','false') =~ m{false|off}?'off':'on'; $light = FW_makeImage($light); my $cons = ReadingsNum($name,'apower',0); my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1); my $temp = ReadingsVal($name,'temperature','-100'); my $ip = ReadingsVal($name,'ip','none'); qq(${onl}${light}
Verbrauch: $cons W / Total: $total kwh / Temp: $temp °C
)} -attr DEVICE jsonMap params_switch_0_aenergy_total:aenergy_total switch_0_apower:apower switch_0_temperature_tC:temperature switch_0_temperature_tF:0 params_wifi_sta_ip:ip +set DEVICE attrTemplate shellyPlus_1 \CALLSPEECHRECOGN=0 +attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen'; $onl = FW_makeImage($onl); my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $cons = ReadingsNum($name,'apower',0); my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1); my $temp = ReadingsVal($name,'temperature','-100'); my $ip = ReadingsVal($name,'ip','none'); qq(${onl}${light}
Verbrauch: $cons W / Total: $total kwh / Temp: $temp °C
)} +attr DEVICE jsonMap switch_state:state params_switch_0_aenergy_total:aenergy_total switch_apower:apower switch_temperature_tC:temperature switch_temperature_tF:0 params_wifi_sta_ip:ip attr DEVICE model shellyPlus_1pm -setreading DEVICE attrTemplateVersion 20211224 +setreading DEVICE attrTemplateVersion 20220104 option:{ CALLSPEECHRECOGN } set DEVICE attrTemplate speechcontrol_type_switch + +name:shellypro4pm +filter:TYPE=MQTT2_DEVICE +desc:Incomlete first version of split template for second generation shelly devices (names with "plus", with power measurement). NOTE: as channels 2-4 do not work, only channel 2 is created for further testing... +par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attributes;{ 1 } +order:A_20d +set DEVICE attrTemplate shellyPlus_1 \CALLSPEECHRECOGN=0 +attr DEVICE devStateIcon {my $onl = ReadingsVal($name,'online','false') eq 'false'?'10px-kreis-rot': ReadingsVal($name,'new_fw','false') eq 'true' ? '10px-kreis-gelb' : '10px-kreis-gruen'; $onl = FW_makeImage($onl); my $light = FW_makeImage(ReadingsVal($name,'state','off')); my $cons = ReadingsNum($name,'apower',0); my $total = round(ReadingsNum($name,'aenergy_total',0)/1000,1); my $temp = ReadingsVal($name,'temperature','-100'); my $ip = ReadingsVal($name,'ip','none'); qq(${onl}${light}
Verbrauch: $cons W / Total: $total kwh / Temp: $temp °C
)} +attr DEVICE readingList $DEVICETOPIC/online:.* online\ + $DEVICETOPIC/events/rpc:.* { return if $EVENT =~ m{switch:[1-3]}; $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT,'',$JSONMAP) }\ + fhem2shelly/rpc:.* {} +attr DEVICE setList toggle:noArg $DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":0}}\ + off:noArg $DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false}}\ + on:noArg $DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true}}\ + on-for-timer $DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":true,"toggle_after":$EVTPART1}}\ + x_update:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Update","params": {"stage":"stable"}}\ + x_reboot:noArg $DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Shelly.Reboot"} +attr DEVICE jsonMap params_switch_0_state:state params_switch_0_aenergy_total:aenergy_total params_switch_0_apower:apower params_switch_0_temperature_tC:temperature params_switch_0_temperature_tF:0 params_wifi_sta_ip:ip +copy DEVICE DEVICE_CH2 +defmod DEVICE_CH2 MQTT2_\DEVICE DEVICE_CH2 +deleteattr DEVICE_CH2 stateFormat +deleteattr DEVICE_CH2 devStateIcon +attr DEVICE_CH2 readingList $DEVICETOPIC/events/rpc:.* { return if $EVENT !~ m{switch:1}; $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT,'',$JSONMAP) } +attr DEVICE_CH2 setList toggle:noArg $DEVICETOPIC/rpc {"id":1,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":1}}\ + off:noArg $DEVICETOPIC/rpc {"id":1, "src":"fhem2shelly", "method":"Switch.Set", "params":{"id":1, "on":false}}\ + on:noArg $DEVICETOPIC/rpc {"id":1, "src":"fhem2shelly", "method":"Switch.Set", "params":{"id":1, "on":true}}\ + on-for-timer $DEVICETOPIC/rpc {"id":1, "src":"fhem2shelly", "method":"Switch.Set", "params":{"id":1, "on":true, "toggle_after":$EVTPART1}} +#loop:#:3:4 +#copy DEVICE_CH2 DEVICE_CH# +#attr DEVICE_CH# $DEVICETOPIC/events/rpc:.* { return if $EVENT !~ m{switch:#}; $EVENT =~ s/"output":true/"state":"on"/g; $EVENT =~ s/"output":false/"state":"off"/g; json2nameValue($EVENT,'',$JSONMAP) } +#attr DEVICE_CH2 setList toggle:noArg $\DEVICETOPIC/rpc {"id":#,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":#}}\ +# off:noArg $\DEVICETOPIC/rpc {"id":#,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":false}}\ +# on:noArg $\DEVICETOPIC/rpc {"id":#,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":true}}\ +# on-for-timer $\DEVICETOPIC/rpc {"id":#,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":true,"toggle_after":$EVTPART1}} +#loop:END +set DEVICE attrTemplate set_associatedWith \CHANNELS=2 +#set DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 attrTemplate speechcontrol_type_switch +#setreading DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 attrTemplateVersion 20220104 +#attr DEVICE,DEVICE_CH2,DEVICE_CH3,DEVICE_CH4 model shellypro4pm +set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_switch +setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20220104 +attr DEVICE,DEVICE_CH2 model shellypro4pm + + ########################################### # ESPurna #