mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-03 04:36:36 +00:00
HMCCU: Features and bugfixes
git-svn-id: https://svn.fhem.de/fhem/trunk@28381 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
24b426313d
commit
1746efcd0d
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,7 @@ sub HMCCUCHN_Set ($@);
|
||||
sub HMCCUCHN_Get ($@);
|
||||
sub HMCCUCHN_Attr ($@);
|
||||
|
||||
my $HMCCUCHN_VERSION = '5.0 232691829';
|
||||
my $HMCCUCHN_VERSION = '5.0 240121821';
|
||||
|
||||
######################################################################
|
||||
# Initialize module
|
||||
@ -57,7 +57,7 @@ sub HMCCUCHN_Initialize ($)
|
||||
'ccureadingname:textField-long ccuSetOnChange ccuReadingPrefix '.
|
||||
'ccuscaleval ccuverify:0,1,2 ccuget:State,Value devStateFlags '.
|
||||
'disable:0,1 hmstatevals:textField-long statevals substitute:textField-long '.
|
||||
'substexcl stripnumber peer:textField-long traceFilter '. $readingFnAttributes;
|
||||
'substexcl stripnumber traceFilter '. $readingFnAttributes;
|
||||
}
|
||||
|
||||
######################################################################
|
||||
@ -279,6 +279,9 @@ sub HMCCUCHN_Attr ($@)
|
||||
my @t = split(':', $attrval);
|
||||
return "$clType [$name] Missing flag and or value expression in attribute $attrname" if (scalar(@t) != 3);
|
||||
}
|
||||
elsif ($attrname eq 'peer') {
|
||||
return "$clType [$name] Attribute 'peer' is no longer supported. Please use DOIF or NOTIFY";
|
||||
}
|
||||
}
|
||||
elsif ($cmd eq 'del') {
|
||||
if ($attrname =~ /^(state|control)datapoint$/) {
|
||||
@ -327,13 +330,13 @@ sub HMCCUCHN_Set ($@)
|
||||
# Command readingFilter depends on readable datapoints
|
||||
my ($add, $chn) = split(":", $hash->{ccuaddr});
|
||||
my @dpRList = ();
|
||||
my $dpRCount = HMCCU_GetValidDatapoints ($hash, $hash->{ccutype}, $chn, 5, \@dpRList);
|
||||
my $dpRCount = HMCCU_GetValidParameters ($hash, $chn, 'VALUES', 5, \@dpRList);
|
||||
$syntax .= ' readingFilter:multiple-strict,'.join(',', @dpRList) if ($dpRCount > 0);
|
||||
|
||||
# Commands only available in read/write mode
|
||||
if ($hash->{readonly} ne 'yes') {
|
||||
$syntax .= ' config';
|
||||
my $dpWCount = HMCCU_GetValidDatapoints ($hash, $hash->{ccutype}, $chn, 2);
|
||||
my $dpWCount = HMCCU_GetValidParameters ($hash, $chn, 'VALUES', 2);
|
||||
$syntax .= ' datapoint' if ($dpWCount > 0);
|
||||
my $addCmds = $hash->{hmccu}{cmdlist}{set} // '';
|
||||
$syntax .= " $addCmds" if ($addCmds ne '');
|
||||
@ -349,9 +352,9 @@ sub HMCCUCHN_Set ($@)
|
||||
elsif ($lcopt eq 'datapoint') {
|
||||
return HMCCU_ExecuteSetDatapointCommand ($hash, $a, $h);
|
||||
}
|
||||
elsif ($lcopt eq 'toggle') {
|
||||
return HMCCU_ExecuteToggleCommand ($hash);
|
||||
}
|
||||
# elsif ($lcopt eq 'toggle') {
|
||||
# return HMCCU_ExecuteToggleCommand ($hash);
|
||||
# }
|
||||
elsif (exists($hash->{hmccu}{roleCmds}{set}{$opt})) {
|
||||
return HMCCU_ExecuteRoleCommand ($ioHash, $hash, 'set', $opt, $a, $h);
|
||||
}
|
||||
@ -384,6 +387,9 @@ sub HMCCUCHN_Set ($@)
|
||||
HMCCU_RefreshReadings ($hash) if ($rc);
|
||||
return HMCCU_SetError ($hash, $retMsg);
|
||||
}
|
||||
elsif ($lcopt eq 'echo') {
|
||||
return HMCCU_RefToString ($h);
|
||||
}
|
||||
else {
|
||||
return "Unknown argument $opt choose one of $syntax";
|
||||
}
|
||||
@ -420,7 +426,7 @@ sub HMCCUCHN_Get ($@)
|
||||
# Command datapoint depends on readable datapoints
|
||||
my ($add, $chn) = split(":", $hash->{ccuaddr});
|
||||
my @dpRList;
|
||||
my $dpRCount = HMCCU_GetValidDatapoints ($hash, $ccutype, $chn, 1, \@dpRList);
|
||||
my $dpRCount = HMCCU_GetValidParameters ($hash, $chn, 'VALUES', 1, \@dpRList);
|
||||
$syntax .= ' datapoint:'.join(",", @dpRList) if ($dpRCount > 0);
|
||||
|
||||
# Additional device specific commands
|
||||
@ -432,13 +438,7 @@ sub HMCCUCHN_Get ($@)
|
||||
if ($opt ne '?' && $ccuflags =~ /logCommand/ || HMCCU_IsFlag ($ioName, 'logCommand'));
|
||||
|
||||
if ($lcopt eq 'datapoint') {
|
||||
my $objname = shift @$a // return HMCCU_SetError ($hash, "Usage: get $name datapoint {datapoint}");
|
||||
return HMCCU_SetError ($hash, -8, $objname)
|
||||
if (!HMCCU_IsValidParameter ($hash, $ccuaddr, 'VALUES', $objname, 1));
|
||||
|
||||
$objname = "$ccuif.$ccuaddr.$objname";
|
||||
my ($rc, $result) = HMCCU_GetDatapoint ($hash, $objname, 0);
|
||||
return $rc < 0 ? HMCCU_SetError ($hash, $rc, $result) : $result;
|
||||
return HMCCU_ExecuteGetDatapointCommand ($hash, $a);
|
||||
}
|
||||
elsif ($lcopt eq 'deviceinfo') {
|
||||
my $extended = shift @$a;
|
||||
@ -563,12 +563,19 @@ sub HMCCUCHN_Get ($@)
|
||||
Set value of control datapoint. This command is available only on command line
|
||||
for compatibility reasons. It should not be used any more.
|
||||
</li><br/>
|
||||
<li><b>set <name> datapoint <datapoint> <value> | <datapoint>=<value> [...]</b><br/>
|
||||
<li><b>set <name> datapoint [<no>:][<channel>.]<datapoint> <{value|'oldval'}> | [<no>:][<channel>.]<datapoint>=<value> [...]</b><br/>
|
||||
Set datapoint values of a CCU channel. If value contains blank characters it must be
|
||||
enclosed in double quotes. This command is only available, if channel contains a writeable datapoint.<br/><br/>
|
||||
enclosed in double quotes. This command is only available, if channel contains a writeable datapoint.<br/>
|
||||
By using parameter <i>no</i> one can specify the order in which datapoints are set (see 3rd example below).<br/>
|
||||
When using syntax <i>datapoint</i>=<i>value</i> with multiple datapoints always specify a <i>no</i> to ensure
|
||||
that datapoints are set in the desired order.<br/>
|
||||
The special <i>value</i> 'oldval' will set the datapoint to its previous value. This can be used to realize a toggle function
|
||||
for each datapoint. Note: the previous value of a datapoint is not available at the first 'set datapoint' command after
|
||||
FHEM start.<br/><br/>
|
||||
Examples:<br/>
|
||||
<code>set temp_control datapoint SET_TEMPERATURE 21</code><br/>
|
||||
<code>set temp_control datapoint AUTO_MODE 1 SET_TEMPERATURE=21</code>
|
||||
<code>set temp_control datapoint AUTO_MODE 1 SET_TEMPERATURE=21</code><br/>
|
||||
<code>set temp_control datapoint 2:AUTO_MODE=0 1:SET_TEMPERATURE=21</code>
|
||||
</li><br/>
|
||||
<li><b>set <name> defaults ['reset'|'forceReset'|'old'|'<u>update</u>']</b><br/>
|
||||
Set default attributes for CCU device type. Default attributes are only available for
|
||||
@ -742,9 +749,7 @@ sub HMCCUCHN_Get ($@)
|
||||
<a name="calculate"></a>
|
||||
<li><b>ccucalculate <value-type>:<reading>[:<dp-list>[;...]</b><br/>
|
||||
Calculate special values like dewpoint based on datapoints specified in
|
||||
<i>dp-list</i>. The result is stored in <i>reading</i>. For datapoints in <i>dp-list</i>
|
||||
also variable notation is supported (for more information on variables see documentation of
|
||||
attribute 'peer').<br/>
|
||||
<i>dp-list</i>. The result is stored in <i>reading</i>.<br/>
|
||||
The following <i>value-types</i> are supported:<br/>
|
||||
dewpoint = calculate dewpoint, <i>dp-list</i> = <temperature>,<humidity><br/>
|
||||
abshumidity = calculate absolute humidity, <i>dp-list</i> = <temperature>,<humidity><br/>
|
||||
@ -928,40 +933,7 @@ sub HMCCUCHN_Get ($@)
|
||||
Optionally the name of the HomeMatic state reading can be specified at the beginning of
|
||||
the attribute in format =<reading>;. The default reading name is 'hmstate'.
|
||||
</li><br/>
|
||||
<a name="peer"></a>
|
||||
<li><b>peer <datapoints>:<condition>:
|
||||
{ccu:<object>=<value>|hmccu:<object>=<value>|
|
||||
fhem:<command>}</b><br/>
|
||||
Logically peer datapoints of a HMCCUCHN or HMCCUDEV device with another device or any
|
||||
FHEM command.<br/>
|
||||
Parameter <i>datapoints</i> is a comma separated list of datapoints in format
|
||||
<i>channelno.datapoint</i> which can trigger the action.<br/>
|
||||
Parameter <i>condition</i> is a valid Perl expression which can contain
|
||||
<i>channelno.datapoint</i> names as variables. Variables must start with a '$' or a '%'.
|
||||
If a variable is preceded by a '$' the variable is substituted by the converted datapoint
|
||||
value (i.e. "on" instead of "true"). If variable is preceded by a '%' the raw value
|
||||
(i.e. "true") is used. If '$' or '%' is doubled the previous values will be used.<br/>
|
||||
If the result of this operation is true, the action specified after the second colon
|
||||
is executed. Three types of actions are supported:<br/>
|
||||
<b>hmccu</b>: Parameter <i>object</i> refers to a FHEM device/datapoint in format
|
||||
<device>:<channelno>.<datapoint><br/>
|
||||
<b>ccu</b>: Parameter <i>object</i> refers to a CCU channel/datapoint in format
|
||||
<channel>.<datapoint>. <i>channel</i> can be a channel name or address.<br/>
|
||||
<b>fhem</b>: The specified <i>command</i> will be executed<br/>
|
||||
If action contains the string $value it is substituted by the current value of the
|
||||
datapoint which triggered the action. The attribute supports multiple peering rules
|
||||
separated by semicolons and optionally by newline characters.<br/><br/>
|
||||
Examples:<br/>
|
||||
# Set FHEM device mydummy to value if formatted value of 1.STATE is 'on'<br/>
|
||||
<code>attr mydev peer 1.STATE:'$1.STATE' eq 'on':fhem:set mydummy $value</code><br/>
|
||||
# Set 2.LEVEL of device myBlind to 100 if raw value of 1.STATE is 1<br/>
|
||||
<code>attr mydev peer 1.STATE:'%1.STATE' eq '1':hmccu:myBlind:2.LEVEL=100</code><br/>
|
||||
# Set 1.STATE of device LEQ1234567 to true if 1.LEVEL < 100<br/>
|
||||
<code>attr mydev peer 1.LEVEL:$1.LEVEL < 100:ccu:LEQ1234567:1.STATE=true</code><br/>
|
||||
# Set 1.STATE of device LEQ1234567 to true if current level is different from old level<br/>
|
||||
<code>attr mydev peer 1.LEVEL:$1.LEVEL != $$1.LEVEL:ccu:LEQ1234567:1.STATE=true</code><br/>
|
||||
</li><br/>
|
||||
<a name="statedatapoint"></a>
|
||||
<a name="statedatapoint"></a>
|
||||
<li><b>statedatapoint <datapoint></b><br/>
|
||||
Set datapoint used for displaying device state. This attribute must be set, if
|
||||
state datapoint cannot be detected automatically.
|
||||
|
@ -31,7 +31,7 @@ sub HMCCUDEV_Set ($@);
|
||||
sub HMCCUDEV_Get ($@);
|
||||
sub HMCCUDEV_Attr ($@);
|
||||
|
||||
my $HMCCUDEV_VERSION = '5.0 232691829';
|
||||
my $HMCCUDEV_VERSION = '5.0 240121821';
|
||||
|
||||
######################################################################
|
||||
# Initialize module
|
||||
@ -58,7 +58,7 @@ sub HMCCUDEV_Initialize ($)
|
||||
'ccureadingname:textField-long ccuSetOnChange ccuReadingPrefix devStateFlags '.
|
||||
'ccuget:State,Value ccuscaleval ccuverify:0,1,2 disable:0,1 '.
|
||||
'hmstatevals:textField-long statevals substexcl substitute:textField-long statechannel statedatapoint '.
|
||||
'controlchannel controldatapoint stripnumber peer:textField-long traceFilter '.
|
||||
'controlchannel controldatapoint stripnumber traceFilter '.
|
||||
$readingFnAttributes;
|
||||
}
|
||||
|
||||
@ -415,13 +415,13 @@ sub HMCCUDEV_Set ($@)
|
||||
|
||||
# Command readingFilter depends on readable datapoints
|
||||
my @dpRList = ();
|
||||
my $dpRCount = HMCCU_GetValidDatapoints ($hash, $hash->{ccutype}, -1, 5, \@dpRList);
|
||||
my $dpRCount = HMCCU_GetValidParameters ($hash, undef, 'VALUES', 5, \@dpRList);
|
||||
$syntax .= ' readingFilter:multiple-strict,'.join(',', @dpRList) if ($dpRCount > 0);
|
||||
|
||||
# Commands only available in read/write mode
|
||||
if ($hash->{readonly} ne 'yes') {
|
||||
$syntax .= ' config';
|
||||
my $dpWCount = HMCCU_GetValidDatapoints ($hash, $hash->{ccutype}, -1, 2);
|
||||
my $dpWCount = HMCCU_GetValidParameters ($hash, undef, 'VALUES', 2);
|
||||
$syntax .= ' datapoint' if ($dpWCount > 0);
|
||||
my $addCmds = $hash->{hmccu}{cmdlist}{set} // '';
|
||||
$syntax .= " $addCmds" if ($addCmds ne '');
|
||||
@ -437,9 +437,9 @@ sub HMCCUDEV_Set ($@)
|
||||
elsif ($lcopt eq 'datapoint') {
|
||||
return HMCCU_ExecuteSetDatapointCommand ($hash, $a, $h);
|
||||
}
|
||||
elsif ($lcopt eq 'toggle') {
|
||||
return HMCCU_ExecuteToggleCommand ($hash);
|
||||
}
|
||||
# elsif ($lcopt eq 'toggle') {
|
||||
# return HMCCU_ExecuteToggleCommand ($hash);
|
||||
# }
|
||||
elsif (exists($hash->{hmccu}{roleCmds}{set}{$opt})) {
|
||||
return HMCCU_ExecuteRoleCommand ($ioHash, $hash, 'set', $opt, $a, $h);
|
||||
}
|
||||
@ -509,7 +509,7 @@ sub HMCCUDEV_Get ($@)
|
||||
|
||||
# Command datapoint depends on readable datapoints
|
||||
my @dpRList;
|
||||
my $dpRCount = HMCCU_GetValidDatapoints ($hash, $ccutype, -1, 1, \@dpRList);
|
||||
my $dpRCount = HMCCU_GetValidParameters ($hash, undef, 'VALUES', 1, \@dpRList);
|
||||
$syntax .= ' datapoint:'.join(",", @dpRList) if ($dpRCount > 0);
|
||||
|
||||
# Additional device specific commands
|
||||
@ -521,27 +521,7 @@ sub HMCCUDEV_Get ($@)
|
||||
if ($opt ne '?' && $ccuflags =~ /logCommand/ || HMCCU_IsFlag ($ioName, 'logCommand'));
|
||||
|
||||
if ($lcopt eq 'datapoint') {
|
||||
my $objname = shift @$a // return HMCCU_SetError ($hash, "Usage: get $name datapoint [{channel-number}.]{datapoint}");
|
||||
my $chn;
|
||||
my $dpt;
|
||||
if ($objname =~ /^([0-9]+)\.(.+)$/) {
|
||||
($chn, $dpt) = ($1, $2);
|
||||
return HMCCU_SetError ($hash, -7) if ($chn >= $hash->{hmccu}{channels});
|
||||
}
|
||||
else {
|
||||
my ($sc, $sd, $cc, $cd) = HMCCU_GetSCDatapoints ($hash);
|
||||
return HMCCU_SetError ($hash, -11) if ($sc eq '');
|
||||
($chn, $dpt) = ($sc, $objname);
|
||||
}
|
||||
|
||||
return HMCCU_SetError ($hash, -8, $objname)
|
||||
if (!HMCCU_IsValidParameter ($hash, HMCCU_GetChannelAddr ($hash, $chn), 'VALUES', $dpt, 1));
|
||||
|
||||
$objname = "$ccuif.$ccuaddr:$chn.$dpt";
|
||||
my ($rc, $result) = HMCCU_GetDatapoint ($hash, $objname, 0);
|
||||
|
||||
return HMCCU_SetError ($hash, $rc, $result) if ($rc < 0);
|
||||
return $result;
|
||||
return HMCCU_ExecuteGetDatapointCommand ($hash, $a);
|
||||
}
|
||||
elsif ($lcopt eq 'deviceinfo') {
|
||||
my $extended = shift @$a;
|
||||
@ -823,10 +803,6 @@ sub HMCCUDEV_Get ($@)
|
||||
<a href="#HMCCUCHNattr">see HMCCUCHN</a>
|
||||
</li><br/>
|
||||
<li><b>hmstatevals <subst-rule>[;...]</b><br/>
|
||||
<a href="#HMCCUCHNattr">see HMCCUCHN</a>
|
||||
</li><br/>
|
||||
<li><b>peer [<datapoints>:<condition>:
|
||||
{ccu:<object>=<value>|hmccu:<object>=<value>}</b><br/>
|
||||
<a href="#HMCCUCHNattr">see HMCCUCHN</a>
|
||||
</li><br/>
|
||||
<li><b>statechannel <channel-number></b><br/>
|
||||
|
@ -39,7 +39,7 @@ use SetExtensions;
|
||||
######################################################################
|
||||
|
||||
# HMCCURPC version
|
||||
my $HMCCURPCPROC_VERSION = '5.0 232691829';
|
||||
my $HMCCURPCPROC_VERSION = '5.0 240121821';
|
||||
|
||||
# Maximum number of events processed per call of Read()
|
||||
my $HMCCURPCPROC_MAX_EVENTS = 100;
|
||||
@ -114,6 +114,7 @@ my $BINRPC_ERROR = 0x42696EFF;
|
||||
my %BINRPC_TYPE_MAPPING = (
|
||||
'BOOL' => $BINRPC_BOOL,
|
||||
'INTEGER' => $BINRPC_INTEGER,
|
||||
'ENUM' => $BINRPC_INTEGER,
|
||||
'STRING' => $BINRPC_STRING,
|
||||
'FLOAT' => $BINRPC_DOUBLE,
|
||||
'DOUBLE' => $BINRPC_DOUBLE,
|
||||
|
@ -8,7 +8,7 @@
|
||||
#
|
||||
# Configuration parameters for HomeMatic devices.
|
||||
#
|
||||
# (c) 2022 by zap (zap01 <at> t-online <dot> de)
|
||||
# (c) 2024 by zap (zap01 <at> t-online <dot> de)
|
||||
#
|
||||
#########################################################################
|
||||
|
||||
@ -58,6 +58,9 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'ACCESSPOINT_GENERIC_RECEIVER' => {
|
||||
F => 3, S => 'VOLTAGE', C => '', V => '', P => 1
|
||||
},
|
||||
'ACOUSTIC_SIGNAL_TRANSMITTER' => {
|
||||
F => 3, S => 'LEVEL', C => 'LEVEL', V => 'on:100,off:0', P => 2
|
||||
},
|
||||
'ALARM_SWITCH_VIRTUAL_RECEIVER' => {
|
||||
F => 3, S => 'ACOUSTIC_ALARM_ACTIVE', C => 'ACOUSTIC_ALARM_SELECTION', V => '', P => 2
|
||||
},
|
||||
@ -169,6 +172,9 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'RAINDETECTOR_HEAT' => {
|
||||
F => 3, S => 'STATE', C => 'STATE', V => 'on:true,off:false', P => 2
|
||||
},
|
||||
'RGBW_COLOR' => {
|
||||
F => 3, S => 'COLOR', C => 'COLOR', V => '', P => 2
|
||||
},
|
||||
'ROTARY_HANDLE_SENSOR' => {
|
||||
F => 3, S => 'STATE', C => '', V => '', P => 2
|
||||
},
|
||||
@ -211,6 +217,9 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'TILT_SENSOR' => {
|
||||
F => 3, S => 'STATE', C => '', V => '', P => 1
|
||||
},
|
||||
'UNIVERSAL_LIGHT_RECEIVER' => {
|
||||
F => 3, S => 'LEVEL', C => 'LEVEL', V => 'on:100,off:0', P => 1
|
||||
},
|
||||
'VIRTUAL_KEY' => {
|
||||
F => 3, S => 'PRESS_SHORT', C => 'PRESS_SHORT', V => 'pressed:true', P => 1
|
||||
},
|
||||
@ -315,46 +324,60 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
);
|
||||
|
||||
#######################################################################################
|
||||
# Set commands related to channel role
|
||||
# Set/Get commands related to channel role
|
||||
# Role => { Command-Definition, ... }
|
||||
# Command-Defintion:
|
||||
# Command[:InterfaceExpr] => [No:]Datapoint-Def[:Function] [...]'
|
||||
# [Mode ]Command[:InterfaceExpr] => [No:]Datapoint-Def[:Function] [...]'
|
||||
# Mode:
|
||||
# Either 'set' or 'get'. Default is 'set'.
|
||||
# Command:
|
||||
# The command name.
|
||||
# InterfaceExpr:
|
||||
# Command is only available, if interface of device is matching the regular
|
||||
# expression.
|
||||
# No:
|
||||
# Execution order of subcommands. By default subcommands are
|
||||
# executed from left to right.
|
||||
# Execution order of subcommands. By default subcommands are executed from left to
|
||||
# right.
|
||||
# Function:
|
||||
# A Perl function name
|
||||
# Datapoint-Def:
|
||||
# No parameters: Paramset:Datapoints:[Parameter=]FixedValue[,...]
|
||||
# One parameter: Paramset:Datapoints:?Parameter
|
||||
# Command with no parameters: Paramset:Datapoints:[Parameter=]Value
|
||||
# Toggle command: Paramset:Datapoints:[Parameter=]Value1,Value2[,...]
|
||||
# Command with one parameter: Paramset:Datapoints:?Parameter
|
||||
# Optional parameter with default: Paramset:Datapoints:?Parameter=Default-Value
|
||||
# List of values (also toggle): Paramset:Datapoints:#Parameter[=FixedValue[,...]]
|
||||
# List of values: Paramset:Datapoints:#Parameter[=Value[,...]]
|
||||
# Internal value (paramset "I"): Paramset:Datapoints:*Parameter=Default-Value
|
||||
# Paramset:
|
||||
# V=VALUES, M=MASTER (channel), D=MASTER (device), I=INTERNAL
|
||||
# V=VALUES, M=MASTER (channel), D=MASTER (device), I=INTERNAL, S=VALUE_STRING
|
||||
# Datapoints:
|
||||
# List of parameter names separated by ','
|
||||
# List of datapoint or config parameter names separated by ','. Multiple names can
|
||||
# be specified to support multiple firmware revesions with different names.
|
||||
# Parameter characters:
|
||||
# ? = any value is accepted
|
||||
# # = If datapoint is of type ENUM, values are taken from
|
||||
# parameter set description. Otherwise a list of values must
|
||||
# be specified after '='.
|
||||
# * = internal value $hash->{hmccu}{values}{parameterName}
|
||||
# See also paramset "I"
|
||||
# FixedValue: Parameter values are detected in the following order:
|
||||
# 1. If command parameter name is identical with controldatapoint,
|
||||
# option values are taken from controldatapoint definition {V}. The
|
||||
# FixedValues are used as lookup key into HMCCU_STATECCONTROL.
|
||||
# The command options are identical to the FixedValues.
|
||||
# 2. FixedValues are treated as option values. The option
|
||||
# names are taken from HMCCU_CONVERSIONS by using FixedValues as
|
||||
# lookup key.
|
||||
# 3. As a fallback command options and option values are identical.
|
||||
# If Default-Value is preceeded by + or -, value is added to or
|
||||
# subtracted from current datapoint value
|
||||
# # = If datapoint is of type ENUM, values are taken from parameter set description.
|
||||
# Otherwise a list of values must be specified after '='.
|
||||
# * = internal value $hash->{hmccu}{values}{parameterName}. See also paramset "I"
|
||||
# FixedValue:
|
||||
# Parameter values are detected in the following order:
|
||||
# 1. If command parameter name is identical with controldatapoint,
|
||||
# option values are taken from controldatapoint definition {V}. The
|
||||
# FixedValues are used as lookup key into HMCCU_STATECCONTROL.
|
||||
# The command options are identical to the FixedValues.
|
||||
# 2. FixedValues are treated as option values. The option
|
||||
# names are taken from HMCCU_CONVERSIONS by using FixedValues as
|
||||
# lookup key.
|
||||
# 3. As a fallback command options and option values are identical.
|
||||
# Default-Value:
|
||||
# If Default-Value is preceeded by + or -, value is added to or
|
||||
# subtracted from current datapoint value
|
||||
#######################################################################################
|
||||
|
||||
%HMCCU_ROLECMDS = (
|
||||
'ACOUSTIC_SIGNAL_TRANSMITTER' => {
|
||||
'level' => 'V:LEVEL:?level',
|
||||
'on' => 'V:LEVEL:1',
|
||||
'off' => 'V:LEVEL:0'
|
||||
},
|
||||
'ALARM_SWITCH_VIRTUAL_RECEIVER' => {
|
||||
'opticalAlarm' => 'V:OPTICAL_ALARM_SELECTION:#alarmMode V:ACOUSTIC_ALARM_SELECTION:0 V:DURATION_UNIT:*unit=0 V:DURATION_VALUE:*duration=10',
|
||||
'acousticAlarm' => 'V:ACOUSTIC_ALARM_SELECTION:#alarmMode V:OPTICAL_ALARM_SELECTION:0 V:DURATION_UNIT:0 V:DURATION_VALUE:10',
|
||||
@ -365,24 +388,24 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
},
|
||||
'BLIND' => {
|
||||
'pct' => 'V:LEVEL:?level',
|
||||
'open' => 'V:LEVEL:100',
|
||||
'open' => 'V:LEVEL:1',
|
||||
'close' => 'V:LEVEL:0',
|
||||
'up' => 'V:LEVEL:?delta=+20',
|
||||
'down' => 'V:LEVEL:?delta=-20',
|
||||
'oldPos' => 'V:LEVEL:100.5',
|
||||
'oldPos' => 'V:LEVEL:1.005',
|
||||
'stop' => 'V:STOP:1'
|
||||
},
|
||||
'BLIND_VIRTUAL_RECEIVER' => {
|
||||
'pct' => 'V:LEVEL:?level',
|
||||
'open' => 'V:LEVEL:100',
|
||||
'open' => 'V:LEVEL:1',
|
||||
'close' => 'V:LEVEL:0',
|
||||
'oldLevel' => 'V:LEVEL:100.5',
|
||||
'oldLevel' => 'V:LEVEL:1.005',
|
||||
'up' => 'V:LEVEL:?delta=+20',
|
||||
'down' => 'V:LEVEL:?delta=-20',
|
||||
'stop' => 'V:STOP:1',
|
||||
'pctSlats' => 'V:LEVEL_2:?level V:LEVEL:100.5',
|
||||
'openSlats' => 'V:LEVEL_2:100 V:LEVEL:100.5',
|
||||
'closeSlats' => 'V:LEVEL_2:0 V:LEVEL:100.5',
|
||||
'pctSlats' => 'V:LEVEL_2:?level V:LEVEL:1.005',
|
||||
'openSlats' => 'V:LEVEL_2:100 V:LEVEL:1.005',
|
||||
'closeSlats' => 'V:LEVEL_2:0 V:LEVEL:1.005',
|
||||
},
|
||||
'CLIMATECONTROL_REGULATOR' => {
|
||||
'desired-temp' => 'V:SETPOINT:?temperature',
|
||||
@ -402,25 +425,27 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'DIMMER' => {
|
||||
'pct' => '3:V:LEVEL:?level 1:V:ON_TIME:?time=0.0 2:V:RAMP_TIME:?ramp=0.5',
|
||||
'level' => 'V:LEVEL:?level',
|
||||
'on' => 'V:LEVEL:100',
|
||||
'on' => 'V:LEVEL:1',
|
||||
'off' => 'V:LEVEL:0',
|
||||
'on-for-timer' => 'V:ON_TIME:?duration V:LEVEL:100',
|
||||
'on-till' => 'V:ON_TIME:?time V:LEVEL:100',
|
||||
'on-for-timer' => 'V:ON_TIME:?duration V:LEVEL:1',
|
||||
'on-till' => 'V:ON_TIME:?time V:LEVEL:1',
|
||||
'up' => 'V:LEVEL:?delta=+10',
|
||||
'down' => 'V:LEVEL:?delta=-10',
|
||||
'stop' => 'V:RAMP_STOP:1'
|
||||
'stop' => 'V:RAMP_STOP:1',
|
||||
'toggle' => 'V:LEVEL:0,1'
|
||||
},
|
||||
'DIMMER_VIRTUAL_RECEIVER' => {
|
||||
'pct' => '5:V:LEVEL:?level 1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?time=0.0 3:V:RAMP_TIME_UNIT:0 4:V:RAMP_TIME,RAMP_TIME_VALUE:?ramp=0.5',
|
||||
'level' => 'V:LEVEL:?level',
|
||||
'on' => 'V:LEVEL:100',
|
||||
'on' => 'V:LEVEL:1',
|
||||
'off' => 'V:LEVEL:0',
|
||||
'oldLevel' => 'V:LEVEL:100.5',
|
||||
'on-for-timer' => '1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?duration 3:V:LEVEL:100',
|
||||
'on-till' => '1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?time 3:V:LEVEL:100',
|
||||
'oldLevel' => 'V:LEVEL:1.005',
|
||||
'on-for-timer' => '1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?duration 3:V:LEVEL:1',
|
||||
'on-till' => '1:V:DURATION_UNIT:0 2:V:ON_TIME,DURATION_VALUE:?time 3:V:LEVEL:1',
|
||||
'up' => 'V:LEVEL:?delta=+10',
|
||||
'down' => 'V:LEVEL:?delta=-10',
|
||||
'color' => 'V:COLOR:#color'
|
||||
'color' => 'V:COLOR:#color',
|
||||
'toggle' => 'V:LEVEL:0,1'
|
||||
},
|
||||
'DIMMER_WEEK_PROFILE' => {
|
||||
'progMode' => 'V:WEEK_PROGRAM_TARGET_CHANNEL_LOCK:#progMode'
|
||||
@ -447,13 +472,13 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
},
|
||||
'JALOUSIE' => {
|
||||
'pct' => 'V:LEVEL:?level',
|
||||
'open' => 'V:LEVEL:100',
|
||||
'open' => 'V:LEVEL:1',
|
||||
'close' => 'V:LEVEL:0',
|
||||
'up' => 'V:LEVEL:?delta=+20',
|
||||
'down' => 'V:LEVEL:?delta=-20',
|
||||
'stop' => 'V:STOP:1',
|
||||
'pctSlats' => 'V:LEVEL_SLATS:?level',
|
||||
'openSlats' => 'V:LEVEL_SLATS:100',
|
||||
'openSlats' => 'V:LEVEL_SLATS:1',
|
||||
'closeSlats' => 'V:LEVEL_SLATS:0',
|
||||
},
|
||||
'KEY' => {
|
||||
@ -484,10 +509,14 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'on-for-timer' => 'V:ON_TIME:?duration V:STATE:1',
|
||||
'on-till' => 'V:ON_TIME:?time V:STATE:1'
|
||||
},
|
||||
'RGBW_COLOR' => {
|
||||
'color' => 'V:COLOR:?color V:ACT_HSV_COLOR_VALUE:?hsvColor',
|
||||
'brightness' => 'V:ACT_BRIGHTNESS:?brightness'
|
||||
},
|
||||
'SHUTTER_VIRTUAL_RECEIVER' => {
|
||||
'pct' => 'V:LEVEL:?level',
|
||||
'open' => 'V:LEVEL:100',
|
||||
'oldLevel' => 'V:LEVEL:100.5',
|
||||
'open' => 'V:LEVEL:1',
|
||||
'oldLevel' => 'V:LEVEL:1.005',
|
||||
'close' => 'V:LEVEL:0',
|
||||
'up' => 'V:LEVEL:?delta=+20',
|
||||
'down' => 'V:LEVEL:?delta=-20',
|
||||
@ -500,7 +529,8 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'on' => 'V:STATE:1',
|
||||
'off' => 'V:STATE:0',
|
||||
'on-for-timer' => 'V:ON_TIME:?duration V:STATE:1',
|
||||
'on-till' => 'V:ON_TIME:?time V:STATE:1'
|
||||
'on-till' => 'V:ON_TIME:?time V:STATE:1',
|
||||
'toggle' => 'V:STATE:0,1'
|
||||
},
|
||||
'SWITCH_PANIC' => {
|
||||
'panic' => 'V:STATE:#panic=on,off',
|
||||
@ -516,7 +546,8 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'on' => 'V:STATE:1',
|
||||
'off' => 'V:STATE:0',
|
||||
'on-for-timer' => 'V:ON_TIME:?duration V:STATE:1',
|
||||
'on-till' => 'V:ON_TIME:?time V:STATE:1'
|
||||
'on-till' => 'V:ON_TIME:?time V:STATE:1',
|
||||
'toggle' => 'V:STATE:0,1'
|
||||
},
|
||||
'THERMALCONTROL_TRANSMIT' => {
|
||||
'desired-temp' => 'V:SET_TEMPERATURE:?temperature',
|
||||
@ -528,6 +559,17 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'week-program' => 'D:WEEK_PROGRAM_POINTER:#program',
|
||||
'get week-program' => 'D:WEEK_PROGRAM_POINTER:#program:HMCCU_DisplayWeekProgram'
|
||||
},
|
||||
'UNIVERSAL_LIGHT_RECEIVER' => {
|
||||
'pct' => '5:V:LEVEL:?level 1:V:DURATION_UNIT:0 2:V:DURATION_VALUE:?time=0.0 3:V:RAMP_TIME_UNIT:0 4:V:RAMP_TIME_VALUE:?ramp=0.5',
|
||||
'level' => 'V:LEVEL:?level',
|
||||
'on' => 'V:LEVEL:1',
|
||||
'off' => 'V:LEVEL:0',
|
||||
'on-for-timer' => '1:V:DURATION_UNIT:0 2:V:DURATION_VALUE:?duration 3:V:LEVEL:1',
|
||||
'on-till' => '1:V:DURATION_UNIT:0 2:V:DURATION_VALUE:?time 3:V:LEVEL:1',
|
||||
'up' => 'V:LEVEL:?delta=+10',
|
||||
'down' => 'V:LEVEL:?delta=-10',
|
||||
'toggle' => 'V:LEVEL:0,1'
|
||||
},
|
||||
'VIRTUAL_KEY' => {
|
||||
'on' => 'V:PRESS_SHORT:1',
|
||||
'off' => 'V:PRESS_SHORT:1',
|
||||
@ -642,6 +684,12 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'webCmd' => 'desired-temp:auto:manu:boost:on:off',
|
||||
'widgetOverride' => 'desired-temp:slider,4.5,0.5,30.5,1'
|
||||
},
|
||||
'UNIVERSAL_LIGHT_RECEIVER' => {
|
||||
'cmdIcon' => 'on:general_an off:general_aus',
|
||||
'substexcl' => 'pct|level',
|
||||
'webCmd' => 'level:on:off',
|
||||
'widgetOverride' => 'level:slider,0,10,100'
|
||||
},
|
||||
'CLIMATECONTROL_RT_TRANSCEIVER' => {
|
||||
'substexcl' => 'desired-temp',
|
||||
'cmdIcon' => 'auto:sani_heating_automatic manu:sani_heating_manual boost:sani_heating_boost on:general_an off:general_aus',
|
||||
@ -802,6 +850,9 @@ $HMCCU_CONFIG_VERSION = '5.0';
|
||||
'CLIMATECONTROL_REGULATOR' => {
|
||||
'SETPOINT' => { '4.5' => 'off', '30.5' => 'on' }
|
||||
},
|
||||
'UNIVERSAL_LIGHT_RECEIVER' => {
|
||||
'LEVEL' => { '0' => 'off', '100' => 'on', 'off' => '0', 'on' => '100' }
|
||||
},
|
||||
'WATER_DETECTION_TRANSMITTER' => {
|
||||
'ALARMSTATE' => { '0' => 'noAlarm', '1' => 'alarm', 'false' => 'noAlarm', 'true' => 'alarm' }
|
||||
},
|
||||
@ -2300,7 +2351,7 @@ if(oTmpArray) {
|
||||
object odev = dom.GetObject((och.Device()));
|
||||
var ival = trigDP.Value();
|
||||
time sftime = oTmp.AlOccurrenceTime(); ! erste Meldezeit
|
||||
time sltime = oTmp.LastTriggerTime();!letze Meldezeit
|
||||
time sltime = oTmp.LastTriggerTime(); ! letzte Meldezeit
|
||||
var sdesc = trigDP.HssType();
|
||||
var sserial = odev.Address();
|
||||
var sname = odev.Name();
|
||||
|
Loading…
x
Reference in New Issue
Block a user