mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-12 22:56:34 +00:00
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
This commit is contained in:
parent
1ef8b79a64
commit
3832fa4e89
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
: "<a href=\"/fhem?cmd.dummy=set $levelname $command_string&XHR=1\">" . FW_makeImage($symbol_string,"fts_shutter_10") . "</a> ";
|
||||
|
||||
#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(<a href="/fhem?cmd.dummy=set $slatname $slatcommand_string&XHR=1">$symbol_string $slatlevel %</a>);
|
||||
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(<a href="/fhem?cmd.dummy=set $slatname $slatcommand_string&XHR=1">$symbol_string $slatlevel %</a>);
|
||||
}
|
||||
|
||||
return "<div><p style=\"text-align:right\">$ret</p></div>";
|
||||
|
||||
@ -81,21 +101,23 @@ sub devStateIcon_venetian_shutter {
|
||||
1;
|
||||
|
||||
__END__
|
||||
|
||||
=pod
|
||||
=begin html
|
||||
|
||||
<a name="attrT_ZWave_Utils"></a>
|
||||
<h3>attrT_ZWave_Utils</h3>
|
||||
<ul>
|
||||
<b>devStateIcon_venetian_shutter</b>
|
||||
<b>devStateIcon_shutter</b>
|
||||
<br>
|
||||
Use this to get a multifunctional iconset to control shutter devices like Fibaro FGRM222 devices in venetian blind mode<br>
|
||||
Examples:
|
||||
<ul>
|
||||
<code>attr Jalousie_WZ devStateIcon {{FHEM::attrT::ZWave::devStateIcon_venetian_shutter($name,"FGRM222")}<br> attr Jalousie_WZ webCmd dim<br>attr Jalousie_WZ userReadings dim:(dim|reportedState).* {$1 =~ /reportedState/ ? ReadingsNum($name,"reportedState",0):ReadingsNum($name,"state",0)}
|
||||
<code>attr Jalousie_WZ devStateIcon {FHEM::attrT_ZWave_Utils::devStateIcon_shutter($name,"FGRM222")}<br> attr Jalousie_WZ webCmd dim<br>attr Jalousie_WZ userReadings dim:(dim|reportedState).* {$1 =~ /reportedState/ ? ReadingsNum($name,"reportedState",0):ReadingsNum($name,"state",0)}
|
||||
</code><br>
|
||||
If slat level is not part of the main device (like Fibaro FGR223, the second FHEM device to control slat level has to have a userReadings attribute for state like this:<br>
|
||||
or <br>
|
||||
<code>attr Jalousie_WZ devStateIcon {FHEM::attrT_ZWave_Utils::devStateIcon_shutter($name,"FGR223", "venetian")}<br> attr Jalousie_WZ webCmd dim<br>attr Jalousie_WZ userReadings dim:(dim|reportedState).* {$1 =~ /reportedState/ ? ReadingsNum($name,"reportedState",0):ReadingsNum($name,"state",0)}
|
||||
</code><br>
|
||||
Code can be used for blinds with or without venetian blind mode. In cas if and slat level is not part of the main device (like Fibaro FGR223, the second FHEM device to control slat level has to have a userReadings attribute for state like this:<br>
|
||||
<code>attr ZWave_SWITCH_MULTILEVEL_8.02 userReadings state:swmStatus.* {ReadingsNum($name,"swmStatus",0)}</code>
|
||||
</ul>
|
||||
</ul>
|
||||
|
Loading…
x
Reference in New Issue
Block a user