From 3832fa4e898ddbe495f25f3ee9db0ae50337cddc Mon Sep 17 00:00:00 2001 From: Beta-User <> Date: Tue, 29 Sep 2020 06:32:25 +0000 Subject: [PATCH] zwave.template: add channel identification code + small changes; mqtt2.template: add toggle to 1. chan of 2chan zigbee2mqtt device git-svn-id: https://svn.fhem.de/fhem/trunk@22883 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/lib/AttrTemplate/mqtt2.template | 4 +- fhem/FHEM/lib/AttrTemplate/zwave.template | 14 +++-- .../AttrTemplate/99_attrT_ZWave_Utils.pm | 60 +++++++++++++------ 3 files changed, 51 insertions(+), 27 deletions(-) diff --git a/fhem/FHEM/lib/AttrTemplate/mqtt2.template b/fhem/FHEM/lib/AttrTemplate/mqtt2.template index e1930257a..1270819b7 100644 --- a/fhem/FHEM/lib/AttrTemplate/mqtt2.template +++ b/fhem/FHEM/lib/AttrTemplate/mqtt2.template @@ -451,7 +451,7 @@ attr DEVICE setList \ on:noArg $\DEVICETOPIC/l1/set {"state":"ON"}\ off:noArg $\DEVICETOPIC/l1/set {"state":"OFF"}\ toggle:noArg $\DEVICETOPIC/l1/set {"state":"TOGGLE"} -attr DEVICE setStateList on off +attr DEVICE setStateList on off toggle deletereading -q DEVICE (?!associatedWith).* set DEVICE attrTemplate set_associatedWith \CHANNELS=2 \MAKECOPIES=1 attr DEVICE_CH2 setList \ @@ -463,7 +463,7 @@ deletereading -q DEVICE_CH2 (?!associatedWith).* attr DEVICE_CH2 jsonMap state_l1:0 state_l2:state state:0 consumption:0 linkquality:0 power:0 temperature:0 set DEVICE,DEVICE_CH2 attrTemplate speechcontrol_type_switch attr DEVICE,DEVICE_CH2 model zigbee2mqtt_2channel_split -setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20200904 +setreading DEVICE,DEVICE_CH2 attrTemplateVersion 20200929 # zigbee2mqtt 2 channel device with buttons, forum #102866 name:zigbee2mqtt_2channel_split_w_buttons diff --git a/fhem/FHEM/lib/AttrTemplate/zwave.template b/fhem/FHEM/lib/AttrTemplate/zwave.template index 9bb75fdb4..aaae220bb 100644 --- a/fhem/FHEM/lib/AttrTemplate/zwave.template +++ b/fhem/FHEM/lib/AttrTemplate/zwave.template @@ -39,11 +39,12 @@ name:zwave_showcase_show_main_and_channel_devices_2 filter:TYPE=ZWave desc:example template just to identify all main and channel devices for a 2-channel device like Fibaro FGs-223 order:000003 -par:MAINCHANNEL;Main channel of the device - do not proceed if it can't be identified!;{ my $parent = InternalVal("DEVICE","endpointParent",0); return $parent ? $parent : InternalVal("DEVICE","endpointChildren",0) ? "DEVICE" : undef } -#par:CHANNEL01;First channel of the device - do not proceed if it can't be identified!;{ my $parent = InternalVal("DEVICE","endpointParent",0); $parent ne "0" ? $parent : InternalVal("DEVICE","endpointChildren",0) ? "DEVICE" : return undef; my @children = split(",", InternalVal("DEVICE","endpointChildren",0)); return if !$children[0]; $children[0]} -#par:CHANNEL02;Second channel of the device - do not proceed if it can't be identified!;{ my $parent = InternalVal("DEVICE","endpointParent",0); $parent = $parent ? $parent : InternalVal("DEVICE","endpointChildren",0) ? "DEVICE" : return undef; my @children = split(",", InternalVal("DEVICE","endpointChildren",0)); return if !$children[0]; $children[1]} -show MAINCHANNEL -#show MAINCHANNEL,CHANNEL01,CHANNEL02 +par:MAINCHANNEL;Main channel of the device - do not proceed if it can't be identified!;{ FHEM::attrT_ZWave_Utils::identify_channel_devices("DEVICE",0) } +par:CHANNEL01;First channel of the device - do not proceed if it can't be identified!;{ FHEM::attrT_ZWave_Utils::identify_channel_devices("DEVICE",1) } +par:CHANNEL02;Second channel of the device - do not proceed if it can't be identified!;{ FHEM::attrT_ZWave_Utils::identify_channel_devices("DEVICE",2) } +show MAINCHANNEL,CHANNEL01,CHANNEL02 +#{ fhem "trigger $FW_wname JS:location.href='$FW_ME?show=MAINCHANNEL,CHANNEL01,CHANNEL02'" if($cl && $cl->{TYPE} eq "FHEMWEB") } +#http://192.168.2.72:8083/fhem?room=%23devspec%3dZWave%5fSWITCH%5fMULTILEVEL%5f8%2cJalousie%5fWZ%2cZWave%5fSWITCH%5fMULTILEVEL%5f8%2e02&fw_id=15253 name:----Fibaro-devices-section-------- filter:TYPE=ZWave @@ -58,6 +59,7 @@ par:CALLSPEECHRECOGN;Set this to 0 to not set any speech recogn. related attribu par:ICON;ICON as set, defaults to fts_shutter_updown;{ AttrVal("DEVICE","icon","fts_shutter_updown") } attr DEVICE icon ICON deletereading -q DEVICE (?!associatedWith|model.*).* +attr DEVICE devStateIcon { FHEM::attrT_ZWave_Utils::devStateIcon_shutter($name,"FGRM222") } attr DEVICE eventMap { usr=>{'dim.100'=>'dim 99' } } attr DEVICE webCmd dim:stop attr DEVICE cmdIcon stop:fts_shutter_manual @@ -86,7 +88,7 @@ attr DEVICE eventMap { usr=>{'dim.100'=>'dim 99' } } attr DEVICE webCmd dim:stop attr DEVICE cmdIcon stop:fts_shutter_manual attr DEVICE widgetOverride dim:colorpicker,BRI,0,1,99 -attr DEVICE devStateIcon { FHEM::attrT_ZWave_Utils::devStateIcon_venetian_shutter($name,"FGRM222") } +attr DEVICE devStateIcon { FHEM::attrT_ZWave_Utils::devStateIcon_shutter($name,"FGRM222","venetian") } set DEVICE configRollerShutterOperatingModes 2VenetianBlindModeWith2 set DEVICE configReportsType BlindPositionReportsSentToThe1 set DEVICE configSetLamellasBackToPrevious13 0LamellasReturnToPreviouslySet0 diff --git a/fhem/contrib/AttrTemplate/99_attrT_ZWave_Utils.pm b/fhem/contrib/AttrTemplate/99_attrT_ZWave_Utils.pm index b6702d4c6..5f0c5888b 100644 --- a/fhem/contrib/AttrTemplate/99_attrT_ZWave_Utils.pm +++ b/fhem/contrib/AttrTemplate/99_attrT_ZWave_Utils.pm @@ -33,9 +33,22 @@ sub Initialize { return; } -sub devStateIcon_venetian_shutter { +sub identify_channel_devices { + my $devname = shift; + my $wanted = shift // return; + + my $mainId = substr(InternalVal($devname,"nodeIdHex","00"),0,2); + my $wantedId = $mainId; + $wantedId .= "0$wanted" if $wanted; + my @names = devspec2array("TYPE=ZWave:FILTER=nodeIdHex=$wantedId"); + return if !@names; + return $names[0]; +} + +sub devStateIcon_shutter { my $levelname = shift // return; my $model = shift // "FGR223"; + my $mode = shift // "roller"; # or "venetian" my $slatname = $levelname; my $dimlevel= ReadingsNum($levelname,"dim",0); my $ret =""; @@ -44,17 +57,22 @@ sub devStateIcon_venetian_shutter { my $moving = 0; if ($model eq "FGR223") { - my ($def,$defnr) = split(" ", InternalVal($levelname,"DEF",$levelname)); - $defnr++; - my @slatnames = devspec2array("DEF=$def".'.'.$defnr); - $slatname = shift @slatnames; - $slatlevel= ReadingsNum($slatname,"state",0); - $moving = 1 if ReadingsNum($levelname,"power",0) > 0; + if ($mode eq "venetian") { + #my ($def,$defnr) = split(" ", InternalVal($levelname,"DEF",$levelname)); + #$defnr++; + #my @slatnames = devspec2array("DEF=$def".'.'.$defnr); + + $slatname = identify_channel_devices($levelname,2); + $slatlevel= ReadingsNum($slatname,"state",0); + } + $moving = 1 if ReadingsNum($levelname,"power",0) > 0; } if ($model eq "FGRM222") { - $slatlevel= ReadingsNum($levelname,"positionSlat",0); - $slatcommand_string = "positionSlat "; - $moving = 1 if ReadingsNum($levelname,"power",0) > 0; + if ($mode eq "venetian") { + $slatlevel= ReadingsNum($slatname,"positionSlat",0); + $slatcommand_string = "positionSlat "; + } + $moving = 1 if ReadingsNum($levelname,"power",0) > 0; } #levelicon @@ -66,11 +84,13 @@ sub devStateIcon_venetian_shutter { : "" . FW_makeImage($symbol_string,"fts_shutter_10") . " "; #slat - $symbol_string = "fts_blade_arc_close_"; - $slatlevel > 49 ? $symbol_string .= "00" : $slatlevel > 24 ? $symbol_string .= "50" : $slatlevel < 25 ? $symbol_string .= "100" : undef; - $slatlevel > 49 ? $slatcommand_string .= "0" : $slatlevel > 24 ? $slatcommand_string .= "50" : $slatlevel < 25 ? $slatcommand_string .= "25" : undef; - $symbol_string = FW_makeImage($symbol_string,"fts_blade_arc_close_100"); - $ret .= qq($symbol_string $slatlevel %); + if ($mode eq "venetian") { + $symbol_string = "fts_blade_arc_close_"; + $slatlevel > 49 ? $symbol_string .= "00" : $slatlevel > 24 ? $symbol_string .= "50" : $slatlevel < 25 ? $symbol_string .= "100" : undef; + $slatlevel > 49 ? $slatcommand_string .= "0" : $slatlevel > 24 ? $slatcommand_string .= "50" : $slatlevel < 25 ? $slatcommand_string .= "25" : undef; + $symbol_string = FW_makeImage($symbol_string,"fts_blade_arc_close_100"); + $ret .= qq($symbol_string $slatlevel %); + } return "

$ret

"; @@ -81,21 +101,23 @@ sub devStateIcon_venetian_shutter { 1; __END__ - =pod =begin html

attrT_ZWave_Utils