From 4ae75924c34f0a53b106ddcee972c515140039f2 Mon Sep 17 00:00:00 2001 From: Beta-User <> Date: Thu, 29 Dec 2022 14:51:42 +0000 Subject: [PATCH] mqtt2.template: add shellyPlus_2pm_split git-svn-id: https://svn.fhem.de/fhem/trunk@26926 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/AttrTemplate/mqtt2.template | 46 ++++++++++++++++++++++- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index d8f6e201b..7ed766417 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -1,5 +1,4 @@ ########################################### -########################################### # $Id$ # # Comments start with #. Empty lines are ignored. @@ -3605,6 +3604,50 @@ setreading DEVICE attrTemplateVersion 20220303 option:{ CALLSPEECHRECOGN } set DEVICE attrTemplate speechcontrol_type_switch +name:shellyPlus_2pm_split +filter:TYPE=MQTT2_DEVICE +desc:May be incomlete first version of split 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 } +par:DEV_TPC;Shelly name in the topic;{ AttrVal('DEVICE','devicetopic',AttrVal('DEVICE','readingList','')) =~ m<(shellies/[^/]+|shellyp(lus|ro4pm)[^/:_]{4,}+)> ? $1 : undef } +order:A_20c1 +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) }\ + $\DEVICETOPIC/status/switch.0:.* { json2nameValue($EVENT, '', $JSONMAP) }\ + $\DEVICETOPIC/status/mqtt:.* { 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}}\ + off-for-timer $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":0,"on":false,"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 +loop:#:1 +copy DEVICE DEVICE_CH# +deleteattr DEVICE_CH# stateFormat +deleteattr DEVICE_CH# devStateIcon +attr DEVICE_CH# jsonMap params_switch_#_state:state params_switch_#_aenergy_total:aenergy_total params_switch_#_apower:apower params_switch_#_temperature_tC:temperature params_switch_#_temperature_tF:0 +attr DEVICE_CH# readingList $\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) }\ + $\DEVICETOPIC/status/switch.#:.* { json2nameValue($EVENT, '', $JSONMAP) } +attr DEVICE_CH# setList toggle:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Toggle","params": {"id":#}}\ + off:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":false}}\ + on:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":true}}\ + on-for-timer $\DEVICETOPIC/rpc {"id"shellyPlus_2pm_split:0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":true,"toggle_after":$EVTPART1}}\ + off-for-timer $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Switch.Set","params": {"id":#,"on":false,"toggle_after":$EVTPART1}} +loop:END +rename DEVICE_CH1 DEVICE_CH2 +loop:#:2 +defmod DEVICE_CH# MQTT2_\DEVICE +attr DEVICE_CH# devicetopic DEV_TPC +loop:END +set DEVICE attrTemplate set_associatedWith \CHANNELS=2 +set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_switch +setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20221229 +attr DEVICE,DEVICE_CH2 model shellyPlus_2pm_split + # Shelly Plus 2 PM using original firmware in roller mode. # based on tomleitner sample, https://forum.fhem.de/index.php/topic,128138.msg1225786.html#msg1225786 name:shellyPlus_2pm_roller_invert_0 @@ -3621,7 +3664,6 @@ attr DEVICE readingList $\DEVICETOPIC/online:.* online\ $\DEVICETOPIC/status/sys:.* { json2nameValue($EVENT, 'sys_', $JSONMAP) }\ $\DEVICETOPIC/status/cover_0:.* { json2nameValue($EVENT, 'status_', $JSONMAP) }\ fhem2shelly/rpc:.* {} - attr DEVICE setList open:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Cover.Open","params": {"id":0}}\ close:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Cover.Close","params": {"id":0}}\ half:noArg $\DEVICETOPIC/rpc {"id":0,"src":"fhem2shelly","method":"Cover.GoToPosition","params": {"id":0,"pos":50}}\