mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-08 01:14:19 +00:00
HMCCU: Version 5.0
git-svn-id: https://svn.fhem.de/fhem/trunk@25028 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
a396166a1f
commit
ee4042bb42
@ -57,7 +57,7 @@ my %HMCCU_CUST_CHN_DEFAULTS;
|
|||||||
my %HMCCU_CUST_DEV_DEFAULTS;
|
my %HMCCU_CUST_DEV_DEFAULTS;
|
||||||
|
|
||||||
# HMCCU version
|
# HMCCU version
|
||||||
my $HMCCU_VERSION = '5.0';
|
my $HMCCU_VERSION = '5.0 212691835';
|
||||||
|
|
||||||
# Timeout for CCU requests (seconds)
|
# Timeout for CCU requests (seconds)
|
||||||
my $HMCCU_TIMEOUT_REQUEST = 4;
|
my $HMCCU_TIMEOUT_REQUEST = 4;
|
||||||
@ -193,7 +193,7 @@ sub HMCCU_SubstVariables ($$$);
|
|||||||
|
|
||||||
# Update client device readings
|
# Update client device readings
|
||||||
sub HMCCU_BulkUpdate ($$$;$);
|
sub HMCCU_BulkUpdate ($$$;$);
|
||||||
sub HMCCU_GetUpdate ($$$);
|
sub HMCCU_GetUpdate ($$;$$);
|
||||||
sub HMCCU_RefreshReadings ($);
|
sub HMCCU_RefreshReadings ($);
|
||||||
sub HMCCU_UpdateCB ($$$);
|
sub HMCCU_UpdateCB ($$$);
|
||||||
sub HMCCU_UpdateClients ($$$$;$$);
|
sub HMCCU_UpdateClients ($$$$;$$);
|
||||||
@ -9093,12 +9093,14 @@ sub HMCCU_SetVariable ($$$$$)
|
|||||||
# Update all datapoints / readings of device or channel considering
|
# Update all datapoints / readings of device or channel considering
|
||||||
# attribute ccureadingfilter.
|
# attribute ccureadingfilter.
|
||||||
# Parameter $ccuget can be 'State', 'Value' or 'Attr'.
|
# Parameter $ccuget can be 'State', 'Value' or 'Attr'.
|
||||||
# Return 1 on success, <= 0 on error
|
# Return 1 on success, < 0 on error
|
||||||
######################################################################
|
######################################################################
|
||||||
|
|
||||||
sub HMCCU_GetUpdate ($$$)
|
sub HMCCU_GetUpdate ($$;$$)
|
||||||
{
|
{
|
||||||
my ($clHash, $addr, $ccuget) = @_;
|
my ($clHash, $addr, $filter, $ccuget) = @_;
|
||||||
|
$filter //= '.*';
|
||||||
|
$ccuget //= 'Value';
|
||||||
my $name = $clHash->{NAME};
|
my $name = $clHash->{NAME};
|
||||||
my $type = $clHash->{TYPE};
|
my $type = $clHash->{TYPE};
|
||||||
|
|
||||||
@ -9140,7 +9142,7 @@ sub HMCCU_GetUpdate ($$$)
|
|||||||
if (HMCCU_IsFlag ($ioHash->{NAME}, 'nonBlocking')) {
|
if (HMCCU_IsFlag ($ioHash->{NAME}, 'nonBlocking')) {
|
||||||
# Non blocking request
|
# Non blocking request
|
||||||
HMCCU_HMScriptExt ($ioHash, $script, { list => $list, ccuget => $ccuget },
|
HMCCU_HMScriptExt ($ioHash, $script, { list => $list, ccuget => $ccuget },
|
||||||
\&HMCCU_UpdateCB);
|
\&HMCCU_UpdateCB, { filter => $filter });
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9151,7 +9153,7 @@ sub HMCCU_GetUpdate ($$$)
|
|||||||
"Script response = \n".$response);
|
"Script response = \n".$response);
|
||||||
return -2 if ($response eq '' || $response =~ /^ERROR:.*/);
|
return -2 if ($response eq '' || $response =~ /^ERROR:.*/);
|
||||||
|
|
||||||
HMCCU_UpdateCB ({ ioHash => $ioHash }, undef, $response);
|
HMCCU_UpdateCB ({ ioHash => $ioHash, filter => $filter }, undef, $response);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9173,6 +9175,7 @@ sub HMCCU_UpdateCB ($$$)
|
|||||||
}
|
}
|
||||||
|
|
||||||
my $hash = $param->{ioHash};
|
my $hash = $param->{ioHash};
|
||||||
|
my $filter = $param->{filter} // '.*';
|
||||||
my $logcount = exists($param->{logCount}) && $param->{logCount} == 1 ? 1 : 0;
|
my $logcount = exists($param->{logCount}) && $param->{logCount} == 1 ? 1 : 0;
|
||||||
|
|
||||||
my $count = 0;
|
my $count = 0;
|
||||||
@ -9186,7 +9189,7 @@ sub HMCCU_UpdateCB ($$$)
|
|||||||
my ($chnname, $dpspec, $value) = split /=/, $dp;
|
my ($chnname, $dpspec, $value) = split /=/, $dp;
|
||||||
next if (!defined($value));
|
next if (!defined($value));
|
||||||
my ($iface, $chnadd, $dpt) = split /\./, $dpspec;
|
my ($iface, $chnadd, $dpt) = split /\./, $dpspec;
|
||||||
next if (!defined($dpt));
|
next if (!defined($dpt) || $dpt !~ /$filter/);
|
||||||
my ($add, $chn) = ('', '');
|
my ($add, $chn) = ('', '');
|
||||||
if ($iface eq 'sysvar' && $chnadd eq 'link') {
|
if ($iface eq 'sysvar' && $chnadd eq 'link') {
|
||||||
($add, $chn) = HMCCU_GetAddress ($hash, $chnname);
|
($add, $chn) = HMCCU_GetAddress ($hash, $chnname);
|
||||||
|
@ -100,10 +100,10 @@ sub HMCCUCHN_Define ($@)
|
|||||||
my $n = 0;
|
my $n = 0;
|
||||||
while (my $arg = shift @$a) {
|
while (my $arg = shift @$a) {
|
||||||
return $usage if ($n == 3);
|
return $usage if ($n == 3);
|
||||||
if ($arg eq 'readonly') { $hash->{readonly} = 'yes'; }
|
if ($arg eq 'readonly') { $hash->{readonly} = 'yes'; }
|
||||||
elsif (lc($arg) eq 'nodefaults' && $init_done) { $hash->{hmccu}{nodefaults} = 1; }
|
elsif (lc($arg) eq 'nodefaults') { $hash->{hmccu}{nodefaults} = 1 if ($init_done); }
|
||||||
elsif (lc($arg) eq 'defaults' && $init_done) { $hash->{hmccu}{nodefaults} = 0; }
|
elsif (lc($arg) eq 'defaults') { $hash->{hmccu}{nodefaults} = 0 if ($init_done); }
|
||||||
else { return $usage; }
|
else { return $usage; }
|
||||||
$n++;
|
$n++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,7 +390,7 @@ sub HMCCUCHN_Get ($@)
|
|||||||
my $ccuflags = AttrVal ($name, 'ccuflags', 'null');
|
my $ccuflags = AttrVal ($name, 'ccuflags', 'null');
|
||||||
|
|
||||||
# Build set command syntax
|
# Build set command syntax
|
||||||
my $syntax = 'update:noArg config:noArg paramsetDesc:noArg deviceInfo:noArg values:noArg';
|
my $syntax = 'update config paramsetDesc:noArg deviceInfo:noArg values extValues';
|
||||||
|
|
||||||
# Command datapoint depends on readable datapoints
|
# Command datapoint depends on readable datapoints
|
||||||
my ($add, $chn) = split(":", $hash->{ccuaddr});
|
my ($add, $chn) = split(":", $hash->{ccuaddr});
|
||||||
@ -428,6 +428,11 @@ sub HMCCUCHN_Get ($@)
|
|||||||
return HMCCU_SetError ($hash, "Can't get device description") if (!defined($result));
|
return HMCCU_SetError ($hash, "Can't get device description") if (!defined($result));
|
||||||
return HMCCU_DisplayGetParameterResult ($ioHash, $hash, $result);
|
return HMCCU_DisplayGetParameterResult ($ioHash, $hash, $result);
|
||||||
}
|
}
|
||||||
|
elsif ($lcopt eq 'extvalues') {
|
||||||
|
my $filter = shift @$a;
|
||||||
|
my $rc = HMCCU_GetUpdate ($hash, $ccuaddr, $filter);
|
||||||
|
return $rc < 0 ? HMCCU_SetError ($hash, $rc) : 'OK';
|
||||||
|
}
|
||||||
elsif ($lcopt eq 'paramsetdesc') {
|
elsif ($lcopt eq 'paramsetdesc') {
|
||||||
my $result = HMCCU_ParamsetDescToStr ($ioHash, $hash);
|
my $result = HMCCU_ParamsetDescToStr ($ioHash, $hash);
|
||||||
return defined($result) ? $result : HMCCU_SetError ($hash, "Can't get device model");
|
return defined($result) ? $result : HMCCU_SetError ($hash, "Can't get device model");
|
||||||
@ -636,6 +641,11 @@ sub HMCCUCHN_Get ($@)
|
|||||||
Please add this information to your post in the FHEM forum, if you have a question about
|
Please add this information to your post in the FHEM forum, if you have a question about
|
||||||
the integration of a new device. See also command 'get paramsetDesc'.
|
the integration of a new device. See also command 'get paramsetDesc'.
|
||||||
</li><br/>
|
</li><br/>
|
||||||
|
<li><b>get <name> extValues [<filter-expr>]</b><br/>
|
||||||
|
Update all readings for all parameters of parameter set VALUES (datapoints) and connected system
|
||||||
|
variables by using CCU Rega (Homematic script).
|
||||||
|
If <i>filter-expr</i> is specified, only datapoints matching the expression are stored as readings.
|
||||||
|
</li><br/>
|
||||||
<li><b>get <name> paramsetDesc</b><br/>
|
<li><b>get <name> paramsetDesc</b><br/>
|
||||||
Display description of parameter sets of channel and device. The output of this command
|
Display description of parameter sets of channel and device. The output of this command
|
||||||
is helpful to gather information about new / not yet supported devices. Please add this
|
is helpful to gather information about new / not yet supported devices. Please add this
|
||||||
|
@ -110,12 +110,12 @@ sub HMCCUDEV_Define ($@)
|
|||||||
|
|
||||||
# Parse optional command line parameters
|
# Parse optional command line parameters
|
||||||
foreach my $arg (@$a) {
|
foreach my $arg (@$a) {
|
||||||
if (lc($arg) eq 'readonly') { $hash->{readonly} = 'yes'; }
|
if (lc($arg) eq 'readonly') { $hash->{readonly} = 'yes'; }
|
||||||
elsif (lc($arg) eq 'nodefaults' && $init_done) { $hash->{hmccu}{nodefaults} = 1; }
|
elsif (lc($arg) eq 'nodefaults') { $hash->{hmccu}{nodefaults} = 1 if ($init_done); }
|
||||||
elsif (lc($arg) eq 'defaults' && $init_done) { $hash->{hmccu}{nodefaults} = 0; }
|
elsif (lc($arg) eq 'defaults') { $hash->{hmccu}{nodefaults} = 0 if ($init_done); }
|
||||||
elsif (lc($arg) eq 'forcedev') { $hash->{hmccu}{forcedev} = 1; }
|
elsif (lc($arg) eq 'forcedev') { $hash->{hmccu}{forcedev} = 1; }
|
||||||
elsif ($arg =~ /^[0-9]+$/) { $attr{$name}{controlchannel} = $arg; }
|
elsif ($arg =~ /^[0-9]+$/) { $attr{$name}{controlchannel} = $arg; }
|
||||||
else { return $usage; }
|
else { return $usage; }
|
||||||
}
|
}
|
||||||
|
|
||||||
# IO device can be set by command line parameter iodev, otherwise try to detect IO device
|
# IO device can be set by command line parameter iodev, otherwise try to detect IO device
|
||||||
@ -466,7 +466,7 @@ sub HMCCUDEV_Get ($@)
|
|||||||
my $ccuflags = AttrVal ($name, 'ccuflags', 'null');
|
my $ccuflags = AttrVal ($name, 'ccuflags', 'null');
|
||||||
|
|
||||||
# Build set command syntax
|
# Build set command syntax
|
||||||
my $syntax = 'update:noArg config:noArg paramsetDesc:noArg deviceInfo:noArg values:noArg';
|
my $syntax = 'update config paramsetDesc:noArg deviceInfo:noArg values extValues';
|
||||||
|
|
||||||
# Command datapoint depends on readable datapoints
|
# Command datapoint depends on readable datapoints
|
||||||
my @dpRList;
|
my @dpRList;
|
||||||
@ -519,6 +519,11 @@ sub HMCCUDEV_Get ($@)
|
|||||||
return HMCCU_SetError ($hash, "Can't get device description") if (!defined($result));
|
return HMCCU_SetError ($hash, "Can't get device description") if (!defined($result));
|
||||||
return HMCCU_DisplayGetParameterResult ($ioHash, $hash, $result);
|
return HMCCU_DisplayGetParameterResult ($ioHash, $hash, $result);
|
||||||
}
|
}
|
||||||
|
elsif ($lcopt eq 'extvalues') {
|
||||||
|
my $filter = shift @$a;
|
||||||
|
my $rc = HMCCU_GetUpdate ($hash, $ccuaddr, $filter);
|
||||||
|
return $rc < 0 ? HMCCU_SetError ($hash, $rc) : 'OK';
|
||||||
|
}
|
||||||
elsif ($lcopt eq 'paramsetdesc') {
|
elsif ($lcopt eq 'paramsetdesc') {
|
||||||
my $result = HMCCU_ParamsetDescToStr ($ioHash, $hash);
|
my $result = HMCCU_ParamsetDescToStr ($ioHash, $hash);
|
||||||
return defined($result) ? $result : HMCCU_SetError ($hash, "Can't get device model");
|
return defined($result) ? $result : HMCCU_SetError ($hash, "Can't get device model");
|
||||||
@ -718,7 +723,10 @@ sub HMCCUDEV_Get ($@)
|
|||||||
<li>device and channel description</li>
|
<li>device and channel description</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<li><b>get <name> update [{State | <u>Value</u>}]</b><br/>
|
<li><b>get <name> extValues [<filter-expr>]</b><br/>
|
||||||
|
<a href="#HMCCUCHNget">see HMCCUCHN</a>
|
||||||
|
</li><br/>
|
||||||
|
<li><b>get <name> update [{State | <u>Value</u>}]</b><br/>
|
||||||
<a href="#HMCCUCHNget">see HMCCUCHN</a>
|
<a href="#HMCCUCHNget">see HMCCUCHN</a>
|
||||||
</li><br/>
|
</li><br/>
|
||||||
<li><b>get <name> weekProgram [<program-number>|<u>all</u>]</b><br/>
|
<li><b>get <name> weekProgram [<program-number>|<u>all</u>]</b><br/>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
UPD 2021-09-09_19:12:29 103713 FHEM/88_HMCCURPCPROC.pm
|
UPD 2021-09-09_19:12:29 103713 FHEM/88_HMCCURPCPROC.pm
|
||||||
UPD 2021-09-11_15:40:16 84901 FHEM/HMCCUConf.pm
|
UPD 2021-09-11_15:40:16 84901 FHEM/HMCCUConf.pm
|
||||||
UPD 2021-09-02_19:33:39 43994 FHEM/88_HMCCUCHN.pm
|
UPD 2021-09-27_10:23:35 44472 FHEM/88_HMCCUCHN.pm
|
||||||
UPD 2021-09-11_16:31:05 358198 FHEM/88_HMCCU.pm
|
UPD 2021-09-27_10:29:06 358364 FHEM/88_HMCCU.pm
|
||||||
UPD 2021-09-02_19:33:39 31267 FHEM/88_HMCCUDEV.pm
|
UPD 2021-09-27_10:19:43 31506 FHEM/88_HMCCUDEV.pm
|
||||||
|
Loading…
x
Reference in New Issue
Block a user