10_KNX.pm: minor fixes, see: (Forum #122582)
git-svn-id: https://svn.fhem.de/fhem/trunk@28603 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -169,6 +169,9 @@
|
|||||||
# additional dpts 14.xxx - see cmdref
|
# additional dpts 14.xxx - see cmdref
|
||||||
# fix dpt14 min/max values
|
# fix dpt14 min/max values
|
||||||
# performance tuning in define
|
# performance tuning in define
|
||||||
|
# MH 20240305 change dpt1.009 max-value from closed->close
|
||||||
|
# prevent gadName 'state' in define when nosuffix specified
|
||||||
|
# add on-for...|off-for... to forbidden gadNames
|
||||||
#
|
#
|
||||||
# todo replace cascading if..elsif with given
|
# todo replace cascading if..elsif with given
|
||||||
# todo-11/2023 final removal of attr answerReading conversion
|
# todo-11/2023 final removal of attr answerReading conversion
|
||||||
@@ -248,7 +251,8 @@ my $PAT_GAD_OPTIONS = 'get|set|listenonly';
|
|||||||
#pattern for GAD-suffixes
|
#pattern for GAD-suffixes
|
||||||
my $PAT_GAD_SUFFIX = 'nosuffix';
|
my $PAT_GAD_SUFFIX = 'nosuffix';
|
||||||
#pattern for forbidden GAD-Names
|
#pattern for forbidden GAD-Names
|
||||||
my $PAT_GAD_NONAME = '^(on|off|value|raw|' . $PAT_GAD_OPTIONS . q{|} . $PAT_GAD_SUFFIX . ')';
|
#my $PAT_GAD_NONAME = '^(on|off|value|raw|' . $PAT_GAD_OPTIONS . q{|} . $PAT_GAD_SUFFIX . ')';
|
||||||
|
my $PAT_GAD_NONAME = 'on|off|on-for-timer|on-until|off-for-timer|off-until|toggle|raw|rgb|string|value';
|
||||||
#pattern for DPT
|
#pattern for DPT
|
||||||
my $PAT_GAD_DPT = 'dpt\d+\.?\d*';
|
my $PAT_GAD_DPT = 'dpt\d+\.?\d*';
|
||||||
#pattern for dpt1 (standard)
|
#pattern for dpt1 (standard)
|
||||||
@@ -265,10 +269,11 @@ my $PAT_DPT16_CLR = qr/>CLR</ixms;
|
|||||||
#CODE is the identifier for the en- and decode algos. See encode and decode functions
|
#CODE is the identifier for the en- and decode algos. See encode and decode functions
|
||||||
#UNIT is appended to state and readings
|
#UNIT is appended to state and readings
|
||||||
#FACTOR and OFFSET are used to normalize a value. value = FACTOR * (RAW - OFFSET). Must be undef for non-numeric values. - optional
|
#FACTOR and OFFSET are used to normalize a value. value = FACTOR * (RAW - OFFSET). Must be undef for non-numeric values. - optional
|
||||||
#PATTERN is used to check an trim the input-values
|
#PATTERN is used to check and trim user input.
|
||||||
#MIN and MAX are used to cast numeric values. Must be undef for non-numeric dpt. Special Usecase: DPT1 - MIN represents 00, MAX represents 01
|
#MIN and MAX are used to cast numeric values. Must be undef for non-numeric dpt. Special Usecase: DPT1 - MIN represents 00, MAX represents 01
|
||||||
#SETLIST (optional) if given, is passed directly to fhemweb in order to show comand-buttons in the details-view (e.g. "colorpicker" or "item1,item2,item3")
|
#SETLIST (optional) if given, is passed directly to fhemweb in order to show comand-buttons in the details-view (e.g. "colorpicker" or "item1,item2,item3")
|
||||||
#if setlist is not supplied and min/max are given, a slider is shown for numeric values. Otherwise min/max value are shown in a dropdown list
|
#a slider is shown for dpt5 and dpt6 values.
|
||||||
|
#if setlist is not supplied and non-numeric min/max values are given, a dropdown list is shown.
|
||||||
my %dpttypes = (
|
my %dpttypes = (
|
||||||
#Binary value
|
#Binary value
|
||||||
'dpt1' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT)/ixms, MIN=>'off', MAX=>'on', SETLIST=>'on,off,toggle',
|
'dpt1' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT)/ixms, MIN=>'off', MAX=>'on', SETLIST=>'on,off,toggle',
|
||||||
@@ -282,7 +287,7 @@ my %dpttypes = (
|
|||||||
'dpt1.006' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|low|high)/ixms, MIN=>'low', MAX=>'high'},
|
'dpt1.006' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|low|high)/ixms, MIN=>'low', MAX=>'high'},
|
||||||
'dpt1.007' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|decrease|increase)/ixms, MIN=>'decrease', MAX=>'increase'},
|
'dpt1.007' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|decrease|increase)/ixms, MIN=>'decrease', MAX=>'increase'},
|
||||||
'dpt1.008' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|up|down)/ixms, MIN=>'up', MAX=>'down'},
|
'dpt1.008' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|up|down)/ixms, MIN=>'up', MAX=>'down'},
|
||||||
'dpt1.009' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|closed|open)/ixms, MIN=>'open', MAX=>'closed'},
|
'dpt1.009' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|close|open)/ixms, MIN=>'open', MAX=>'close'},
|
||||||
'dpt1.010' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|start|stop)/ixms, MIN=>'stop', MAX=>'start'},
|
'dpt1.010' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|start|stop)/ixms, MIN=>'stop', MAX=>'start'},
|
||||||
'dpt1.011' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|inactive|active)/ixms, MIN=>'inactive', MAX=>'active'},
|
'dpt1.011' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|inactive|active)/ixms, MIN=>'inactive', MAX=>'active'},
|
||||||
'dpt1.012' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|not_inverted|inverted)/ixms, MIN=>'not_inverted', MAX=>'inverted'},
|
'dpt1.012' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|not_inverted|inverted)/ixms, MIN=>'not_inverted', MAX=>'inverted'},
|
||||||
@@ -651,7 +656,8 @@ sub KNX_Define2 {
|
|||||||
$attr{$name}->{disable} = 1 if (AttrVal($name,'disable',0) != 1);
|
$attr{$name}->{disable} = 1 if (AttrVal($name,'disable',0) != 1);
|
||||||
}
|
}
|
||||||
elsif (!defined($dpttypes{$gadModel})) { #check model-type
|
elsif (!defined($dpttypes{$gadModel})) { #check model-type
|
||||||
push(@logarr,qq{invalid model $gadModel for group-number $gadNo, consult commandref - avaliable DPT});
|
push(@logarr,qq{invalid dpt $gadModel for group-number $gadNo, consult commandref - avaliable DPT});
|
||||||
|
$attr{$name}->{disable} = 1 if (AttrVal($name,'disable',0) != 1);
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
elsif ($gadNo == 1) { # gadModel ok - use first gad as mdl reference for fheminfo
|
elsif ($gadNo == 1) { # gadModel ok - use first gad as mdl reference for fheminfo
|
||||||
@@ -663,10 +669,16 @@ sub KNX_Define2 {
|
|||||||
$gadOption = lc(pop(@gadArgs)) if (@gadArgs && $gadArgs[-1] =~ /^($PAT_GAD_OPTIONS)$/ixms);
|
$gadOption = lc(pop(@gadArgs)) if (@gadArgs && $gadArgs[-1] =~ /^($PAT_GAD_OPTIONS)$/ixms);
|
||||||
$gadName = pop(@gadArgs) if (@gadArgs);
|
$gadName = pop(@gadArgs) if (@gadArgs);
|
||||||
|
|
||||||
if ($gadName =~ /^$PAT_GAD_NONAME$/ixms) {
|
# if ($gadName =~ /^($PAT_GAD_NONAME)$/ixms) {
|
||||||
push(@logarr,qq{forbidden gad-name $gadName});
|
if ($gadName =~ /^($PAT_GAD_NONAME)$/xms) { # allow mixed case
|
||||||
|
push(@logarr,qq{forbidden gadName $gadName});
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($gadName eq q{state} && defined($gadNoSuffix)) {
|
||||||
|
$gadName = q{g} . $gadNo;
|
||||||
|
push(@logarr,qq{forbidden gadName: state - modified to: $gadName});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined($hash->{GADTABLE}->{$gadCode})) {
|
if (defined($hash->{GADTABLE}->{$gadCode})) {
|
||||||
@@ -1214,22 +1226,7 @@ sub KNX_Parse {
|
|||||||
elsif ($cmd =~ /[r]/ixms) {
|
elsif ($cmd =~ /[r]/ixms) {
|
||||||
my $cmdAttr = AttrVal($deviceName, 'putCmd', undef);
|
my $cmdAttr = AttrVal($deviceName, 'putCmd', undef);
|
||||||
next if (! defined($cmdAttr) || $cmdAttr eq q{});
|
next if (! defined($cmdAttr) || $cmdAttr eq q{});
|
||||||
=begin comment
|
|
||||||
# replaced by block below !!
|
|
||||||
# special experiment for Amenophis86
|
|
||||||
if ($cmdAttr eq 'noReply') {
|
|
||||||
if ($iohash->{PhyAddr} eq KNX_hexToName2($src)) { # match src-address with phy of IOdev
|
|
||||||
# from fhem - delete ignore reply flag
|
|
||||||
delete $deviceHash->{GADDETAILS}->{$gadName}->{noreplyflag}; # allow when sent from fhem
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
KNX_Log ($deviceName, 4, q{read msg from } . KNX_hexToName2($src) . qq{ for $deviceName $gadName IODev= $iohash->{PhyAddr}});
|
|
||||||
$deviceHash->{GADDETAILS}->{$gadName}->{noreplyflag} = gettimeofday() + 2;
|
|
||||||
}
|
|
||||||
next; # cannot use putCmd logic!
|
|
||||||
}
|
|
||||||
=end comment
|
|
||||||
=cut
|
|
||||||
# generate <putname>
|
# generate <putname>
|
||||||
my $putName = $getName =~ s/get/put/irxms;
|
my $putName = $getName =~ s/get/put/irxms;
|
||||||
$putName .= ($putName eq $getName)?q{-put}:q{}; # nosuffix
|
$putName .= ($putName eq $getName)?q{-put}:q{}; # nosuffix
|
||||||
@@ -1241,6 +1238,7 @@ sub KNX_Parse {
|
|||||||
KNX_Log ($deviceName, 2, qq{putCmd eval error gadName=$gadName - no reply sent!});
|
KNX_Log ($deviceName, 2, qq{putCmd eval error gadName=$gadName - no reply sent!});
|
||||||
next; # dont send!
|
next; # dont send!
|
||||||
}
|
}
|
||||||
|
|
||||||
## special experiment for Amenophis86
|
## special experiment for Amenophis86
|
||||||
elsif ($value eq 'noReply') {
|
elsif ($value eq 'noReply') {
|
||||||
if ($iohash->{PhyAddr} eq KNX_hexToName2($src)) { # match src-address with phy of IOdev
|
if ($iohash->{PhyAddr} eq KNX_hexToName2($src)) { # match src-address with phy of IOdev
|
||||||
@@ -1300,7 +1298,12 @@ sub KNX_autoCreate {
|
|||||||
### KNX_SetReadings is called from KNX_Set and KNX_Parse
|
### KNX_SetReadings is called from KNX_Set and KNX_Parse
|
||||||
# calling param: $hash, $gadName, $value, caller (set/parse), trigger (event yes/no)
|
# calling param: $hash, $gadName, $value, caller (set/parse), trigger (event yes/no)
|
||||||
sub KNX_SetReadings {
|
sub KNX_SetReadings {
|
||||||
my ($hash, $gadName, $value, $src, $trigger) = @_;
|
# my ($hash, $gadName, $value, $src, $trigger) = @_;
|
||||||
|
my $hash = shift;
|
||||||
|
my $gadName = shift;
|
||||||
|
my $value = shift;
|
||||||
|
my $src = shift // q{fhem}; # undef when called from set
|
||||||
|
my $trigger = shift // 1; # trigger if undef
|
||||||
|
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
|
|
||||||
@@ -1314,13 +1317,14 @@ sub KNX_SetReadings {
|
|||||||
$value .= q{ } . $unit;
|
$value .= q{ } . $unit;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $lsvalue = 'fhem'; # called from set
|
my $lsvalue = q{fhem}; # called from set
|
||||||
my $rdName = $hash->{GADDETAILS}->{$gadName}->{RDNAMESET};
|
my $rdName = $hash->{GADDETAILS}->{$gadName}->{RDNAMESET};
|
||||||
if (defined($src) && ($src ne q{})) { # called from parse
|
if ($src ne q{fhem}) { # called from parse
|
||||||
|
# if (defined($src) && ($src ne q{})) { # called from parse
|
||||||
$lsvalue = KNX_hexToName2($src);
|
$lsvalue = KNX_hexToName2($src);
|
||||||
$rdName = $hash->{GADDETAILS}->{$gadName}->{RDNAMEGET};
|
$rdName = $hash->{GADDETAILS}->{$gadName}->{RDNAMEGET};
|
||||||
}
|
}
|
||||||
my $trievents = (defined($trigger))?$trigger:1;
|
# my $trievents = (defined($trigger))?$trigger:1;
|
||||||
|
|
||||||
#execute stateRegex
|
#execute stateRegex
|
||||||
my $state = KNX_replaceByRegex ($hash, $rdName, $value);
|
my $state = KNX_replaceByRegex ($hash, $rdName, $value);
|
||||||
@@ -1347,7 +1351,8 @@ sub KNX_SetReadings {
|
|||||||
}
|
}
|
||||||
readingsBulkUpdate($hash, 'state', $state);
|
readingsBulkUpdate($hash, 'state', $state);
|
||||||
}
|
}
|
||||||
readingsEndUpdate($hash, $trievents);
|
# readingsEndUpdate($hash, $trievents);
|
||||||
|
readingsEndUpdate($hash, $trigger);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2143,6 +2148,7 @@ sub KNX_chkIO {
|
|||||||
sub doKNX_scan {
|
sub doKNX_scan {
|
||||||
my $iohash = shift // return;
|
my $iohash = shift // return;
|
||||||
|
|
||||||
|
return if (! exists($iohash->{Helper}->{knxscan}));
|
||||||
my $count = scalar(@{$iohash->{Helper}->{knxscan}});
|
my $count = scalar(@{$iohash->{Helper}->{knxscan}});
|
||||||
if ($count > 0 ) {
|
if ($count > 0 ) {
|
||||||
my ($devName,$gadName) = split(/\s/xms, shift(@{$iohash->{Helper}->{knxscan}}),2);
|
my ($devName,$gadName) = split(/\s/xms, shift(@{$iohash->{Helper}->{knxscan}}),2);
|
||||||
@@ -2223,11 +2229,11 @@ This module provides a basic set of operations (on, off, toggle, on-until, on-fo
|
|||||||
devices and to send values to the bus. </p>
|
devices and to send values to the bus. </p>
|
||||||
<p>Sophisticated setups can be achieved by combining multiple KNX-groupaddresses:datapoints (GAD's:dpt's)
|
<p>Sophisticated setups can be achieved by combining multiple KNX-groupaddresses:datapoints (GAD's:dpt's)
|
||||||
in one KNX device instance.</p>
|
in one KNX device instance.</p>
|
||||||
<p>KNX defines a series of Datapoint Type as standard data types used to allow general interpretation of values
|
<p>KNX defines a series of Data-Point-Types (<a href="#KNX-dpt">dpt</a>) as standard data types to allow
|
||||||
of devices manufactured by different vendors.
|
interpretation/encoding of messages from/to devices manufactured by different vendors.
|
||||||
These datatypes are used to interpret the status of a device, so the readings in FHEM will show the
|
These datatypes are used to interpret the status of a device, so the readings in FHEM will show the
|
||||||
correct value and optional unit.</p>
|
correct value and optional unit.</p>
|
||||||
<p>For each received telegram there will be a reading containing the received value and the sender address.<br/>
|
<p>For each received message there will be a reading containing the received value and the sender address.<br/>
|
||||||
For every set, there will be a reading containing the sent value.<br/>
|
For every set, there will be a reading containing the sent value.<br/>
|
||||||
The reading <state> will be updated with the last sent or received value. </p>
|
The reading <state> will be updated with the last sent or received value. </p>
|
||||||
<p>A (german) wiki page is avaliable here: <a href="https://wiki.fhem.de/wiki/KNX">FHEM Wiki</a></p>
|
<p>A (german) wiki page is avaliable here: <a href="https://wiki.fhem.de/wiki/KNX">FHEM Wiki</a></p>
|
||||||
@@ -2236,26 +2242,27 @@ The reading <state> will be updated with the last sent or received value.&
|
|||||||
<li><a id="KNX-define"></a><strong>Define</strong><br/>
|
<li><a id="KNX-define"></a><strong>Define</strong><br/>
|
||||||
<p><code>define <name> KNX <group>:<dpt>[:[<gadName>]:[set|get|listenonly]:[nosuffix]]
|
<p><code>define <name> KNX <group>:<dpt>[:[<gadName>]:[set|get|listenonly]:[nosuffix]]
|
||||||
[<group>:<dpt> ..] <del>[IODev]</del></code></p>
|
[<group>:<dpt> ..] <del>[IODev]</del></code></p>
|
||||||
<p><strong>Important: a KNX device needs at least one valid DPT.</strong> Please refer to <a href="#KNX-dpt">avaliable DPT</a>.
|
<p><strong>Important: a KNX device needs at least one valid DPT.</strong>
|
||||||
Otherwise the system cannot en- or decode messages.<br/>
|
The system cannot en- or de-code messages without a valid <a href="#KNX-dpt">dpt</a> defined.<br/>
|
||||||
<strong>Devices defined by autocreate have to be reworked with the suitable dpt and the disable attribute deleted.
|
<strong>Devices defined by autocreate have to be configured with a correct dpt and the disable attribute deleted.
|
||||||
Otherwise they won't do anything.</strong></p>
|
Otherwise they won't do anything.</strong></p>
|
||||||
<p>The <group> parameter is either a group name notation (0-31/0-7/0-255) or the hex representation of it
|
<p>The <group> parameter is either a group name notation (0-31/0-7/0-255) or the hex representation of it
|
||||||
([00-1f][0-7][00-ff]) (5 digits). All of the defined groups can be used for bus-communication.
|
([00-1f][0-7][00-ff]) (5 digits). All of the defined groups can be used for bus-communication.
|
||||||
It is not allowed to have the same group-address more then once in one device. You can have multiple devices containing
|
It is not allowed to have the same group-address more then once in one device. You can have multiple FHEM-devices containing
|
||||||
the same group-adresses.<br/>
|
the same group-adresses.<br/>
|
||||||
As described above the parameter <dpt> has to contain the corresponding DPT - matching the dpt-spec of the KNX-Hardware.</p>
|
As described above the parameter <dpt> has to contain the corresponding DPT - matching the dpt-spec of the KNX-Hardware.</p>
|
||||||
<p>The gadNames are default named "g<number>". The corresponding reading-names are getG<number>
|
<p>The gadName default is "g<number>". The corresponding reading-names are getG<number>
|
||||||
and setG<number>.<br/>
|
and setG<number>.<br/>
|
||||||
The optional parameteter <gadName> may contain an alias for the GAD. The following gadNames are <b>not allowed:</b>
|
The optional parameteter <gadName> may contain an alias for the GAD. The following gadNames are <b>not allowed:</b>
|
||||||
on, off, on-for-timer, on-until, off-for-timer, off-until, toggle, raw, rgb, string, value, set, get, listenonly, nosuffix
|
state, on, off, on-for-timer, on-until, off-for-timer, off-until, toggle, raw, rgb, string, value, set, get, listenonly, nosuffix
|
||||||
- because of conflict with cmds & parameters.<br/>
|
- because of conflict with cmds & parameters.<br/>
|
||||||
If you supply <gadName> this name is used instead. The readings are <gadName>-get and <gadName>-set.
|
If you supply <gadName> this name is used instead. The readings are <gadName>-get and <gadName>-set.
|
||||||
The synonyms <getName> and <setName> are used in this documentation.<br/>
|
The synonyms <getName> and <setName> are used in this documentation.<br/>
|
||||||
If you add the option "nosuffix", <getName> and <setName> have the identical name - only <gadName>.<br/>
|
If you add the option "nosuffix", <getName> and <setName> have the identical name - <gadName>.
|
||||||
|
Both sent and received bus messages will be stored in the same reading <gadName><br/>
|
||||||
If you want to restrict the GAD, you can use the options "get", "set", or "listenonly". The usage should be self-explanatory.
|
If you want to restrict the GAD, you can use the options "get", "set", or "listenonly". The usage should be self-explanatory.
|
||||||
It is not possible to combine the options.</p>
|
It is not possible to combine the options.</p>
|
||||||
<p><b>Specifying an IO-Device in define is now deprecated!</b> Use attribute <a href="#KNX-attr-IODev">IODev</a> instead,
|
<p><b>Specifying an IO-Device in define is deprecated!</b> Use attribute <a href="#KNX-attr-IODev">IODev</a> instead,
|
||||||
but only if absolutely required!</p>
|
but only if absolutely required!</p>
|
||||||
<p>The first group is used for sending by default. If you want to send to a different group, you have to address it.
|
<p>The first group is used for sending by default. If you want to send to a different group, you have to address it.
|
||||||
E.g: <code>set <name> <gadName> <value> </code>
|
E.g: <code>set <name> <gadName> <value> </code>
|
||||||
@@ -2283,10 +2290,11 @@ Examples:
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li><a id="KNX-set"></a><strong>Set</strong><br/>
|
<li><a id="KNX-set"></a><strong>Set</strong><br/>
|
||||||
<p><code>set <deviceName> [<gadName>] <on|off|toggle><br/>
|
<p><code>set <deviceName> [<gadName>] on|off|toggle<br/>
|
||||||
set <deviceName> [<gadName>] <on-for-timer|off-for-timer> <duration seconds><br/>
|
set <deviceName> <gadName> blink <nr of blinks> <duration seconds><br/>
|
||||||
set <deviceName> [<gadName>] <on-until|off-until> <timespec><br/>
|
set <deviceName> <gadName> on-for-timer|off-for-timer <duration seconds><br/>
|
||||||
set <deviceName> [<gadName>] <value><br/></code></p>
|
set <deviceName> <gadName> on-until|off-until <timespec (HH:MM[:SS])><br/>
|
||||||
|
</code></p>
|
||||||
<p>Set sends the given value to the bus.<br/> If <gadName> is omitted, the first listed GAD of the device is used.
|
<p>Set sends the given value to the bus.<br/> If <gadName> is omitted, the first listed GAD of the device is used.
|
||||||
If the GAD is restricted in the definition with "get" or "listenonly", the set-command will be refused.<br/>
|
If the GAD is restricted in the definition with "get" or "listenonly", the set-command will be refused.<br/>
|
||||||
For dpt1 and dpt1.001 valid values are on, off, toggle and blink. Also the timer-functions can be used.
|
For dpt1 and dpt1.001 valid values are on, off, toggle and blink. Also the timer-functions can be used.
|
||||||
@@ -2443,7 +2451,7 @@ Examples:
|
|||||||
<li><a id="KNX-events"></a><strong>Events</strong><br/>
|
<li><a id="KNX-events"></a><strong>Events</strong><br/>
|
||||||
<p>Events are generated for each reading sent or received to/from KNX-Bus unless restricted by <code>event-xxx</code> attributes
|
<p>Events are generated for each reading sent or received to/from KNX-Bus unless restricted by <code>event-xxx</code> attributes
|
||||||
or modified by <code>eventMap, stateRegex</code> attributes.
|
or modified by <code>eventMap, stateRegex</code> attributes.
|
||||||
KNX-events have this format:</p>
|
<br/>KNX-events have this format:</p>
|
||||||
<pre> <code><device> <readingName>: <value> # reading event
|
<pre> <code><device> <readingName>: <value> # reading event
|
||||||
<device> <value> # state event</code></pre>
|
<device> <value> # state event</code></pre>
|
||||||
</li>
|
</li>
|
||||||
@@ -2462,7 +2470,7 @@ Examples:
|
|||||||
<li><b>dpt1.006 </b> low, high</li>
|
<li><b>dpt1.006 </b> low, high</li>
|
||||||
<li><b>dpt1.007 </b> decrease, increase</li>
|
<li><b>dpt1.007 </b> decrease, increase</li>
|
||||||
<li><b>dpt1.008 </b> up, down</li>
|
<li><b>dpt1.008 </b> up, down</li>
|
||||||
<li><b>dpt1.009 </b> open, closed</li>
|
<li><b>dpt1.009 </b> open, close</li>
|
||||||
<li><b>dpt1.010 </b> stop, start</li>
|
<li><b>dpt1.010 </b> stop, start</li>
|
||||||
<li><b>dpt1.011 </b> inactive, active</li>
|
<li><b>dpt1.011 </b> inactive, active</li>
|
||||||
<li><b>dpt1.012 </b> not_inverted, inverted</li>
|
<li><b>dpt1.012 </b> not_inverted, inverted</li>
|
||||||
|
|||||||
Reference in New Issue
Block a user