mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-29 23:47:10 +00:00
10_ZWave.pm: better parameter parsing for METER get (Forum #136912)
git-svn-id: https://svn.fhem.de/fhem/trunk@28490 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
a834d213e0
commit
9838479145
@ -1925,16 +1925,31 @@ ZWave_meterSet($$)
|
|||||||
sub
|
sub
|
||||||
ZWave_meterGet($)
|
ZWave_meterGet($)
|
||||||
{
|
{
|
||||||
my ($scale) = @_;
|
my ($scale, $exp) = split(" ", $_[0]);
|
||||||
|
|
||||||
if ($scale eq "%s") { # no parameter specified, use V1 get without scale
|
if ($scale eq "%s") { # no parameter specified, use V1 get without scale
|
||||||
return("", "01");
|
return("", "01");
|
||||||
};
|
};
|
||||||
|
|
||||||
if($scale < 7) {
|
if($scale !~ m/^[0-9]+/) {
|
||||||
return ("",sprintf('01%02x', $scale << 3));
|
my $scaleAsInt;
|
||||||
|
foreach my $arr (values %zwm_unit) {
|
||||||
|
for(my $i1=0; $i1<@{$arr}; $i1++) {
|
||||||
|
$scaleAsInt = $i1 if($arr->[$i1] eq $scale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "unknown unit $scale" if(!defined($scaleAsInt));
|
||||||
|
$scale = $scaleAsInt;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "invalid parameter $exp, only import or export is allowed"
|
||||||
|
if($exp && $exp !~ m/^(export|import)$/);
|
||||||
|
$exp = ($exp ? ($exp eq "export" ? 0x80 : 0x40) : 0);
|
||||||
|
|
||||||
|
if($scale < 7) { # V1:no scale, V2:2 bits, V3: 3bits
|
||||||
|
return ("",sprintf('01%02x', ($scale << 3) | $exp));
|
||||||
} else { # Version 4
|
} else { # Version 4
|
||||||
return ("",sprintf('01%02x%02x', 7<<3, $scale-8));
|
return ("",sprintf('01%02x%02x', (7<<3) | $exp, $scale-7));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7125,18 +7140,14 @@ ZWave_tmSet($)
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<br><br><b>Class METER</b>
|
<br><br><b>Class METER</b>
|
||||||
<li>meter scale<br>
|
<li>meter [scale [export|import]]<br>
|
||||||
return the meter report for the requested scale.<br>
|
return the meter report for the requested scale.<br>
|
||||||
Note: protocol V1 does not support the scale parameter, the parameter
|
Note: protocol V1 does not support the scale parameter, the parameter
|
||||||
will be ignored and the default scale will be returned.<br>
|
will be ignored and the default scale will be returned.<br>
|
||||||
For protocol V2 and higher, scale is supported and depends on the
|
For protocol V2 and higher scale can be specified as integer or text, see
|
||||||
type of the meter (energy, gas or water).<br>
|
the output ot the meterSupported command.<br>
|
||||||
The device may not support all scales, see the meterSupported
|
If the scale parameter is omitted, the default unit will be reported.
|
||||||
command and its output. If the scale parameter is omitted, the
|
export/import is only valid for protocol V4 or higher.
|
||||||
default unit will be reported.<br>
|
|
||||||
Example: For an electric meter, meter 0 will report energy in kWh,
|
|
||||||
meter 2 will report power in W and meter 6 will report current in A
|
|
||||||
(if these scales are supported).<br>
|
|
||||||
</li>
|
</li>
|
||||||
<li>meterSupported<br>
|
<li>meterSupported<br>
|
||||||
request the type of the meter, the supported scales and the
|
request the type of the meter, the supported scales and the
|
||||||
|
Loading…
x
Reference in New Issue
Block a user