2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-04-19 18:56:03 +00:00

10_ZWave.pm: add METER v6 resetToValue (by Qubino request)

git-svn-id: https://svn.fhem.de/fhem/trunk@22770 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig 2020-09-14 17:38:57 +00:00
parent 9c2c8f3211
commit 3891a85d4a

View File

@ -138,7 +138,8 @@ my %zwave_class = (
get => { smStatus => "04" }, get => { smStatus => "04" },
parse => { "..3105(..)(..)(.*)" => 'ZWave_multilevelParse($1,$2,$3)'} }, parse => { "..3105(..)(..)(.*)" => 'ZWave_multilevelParse($1,$2,$3)'} },
METER => { id => '32', METER => { id => '32',
set => { meterReset => "05" }, set => { meterReset => "05",
meterResetToValue => 'ZWave_meterSet($cmd, "%s")' },
get => { meter => 'ZWave_meterGet("%s")', get => { meter => 'ZWave_meterGet("%s")',
meterSupported => "03" }, meterSupported => "03" },
parse => { "..3202(.*)"=> 'ZWave_meterParse($hash, $1)', parse => { "..3202(.*)"=> 'ZWave_meterParse($hash, $1)',
@ -622,6 +623,7 @@ my %zwave_classVersion = (
dimUpDownWithDuration => { min => 2 }, dimUpDownWithDuration => { min => 2 },
dimUpDownIncDecWithDuration => { min => 3 }, dimUpDownIncDecWithDuration => { min => 3 },
meterReset => { min => 2 }, meterReset => { min => 2 },
meterResetToValue => { min => 6 },
meterSupported => { min => 2 }, meterSupported => { min => 2 },
"on-for-timer" => { min => 2 }, "on-for-timer" => { min => 2 },
"off-for-timer" => { min => 2 }, "off-for-timer" => { min => 2 },
@ -1841,6 +1843,24 @@ ZWave_meterParse($$)
} }
} }
my @meter_type_text =("undef", "energy", "gas", "water", "undef");
sub
ZWave_meterSet($$)
{
my ($cmd, $param) = @_;
if($cmd eq "meterResetToValue") {
my @p = split(" ", $param);
my $cnt = 1;
my %mtt = map { $_=>$cnt++ } grep { $_ !~ m/undef/ } @meter_type_text;
return "$cmd parameters: {".join("|", sort keys %mtt)."} numeric-value"
if(@p != 2 || !$mtt{$p[0]} || $p[1] !~ m/^-?[0-9]+$/);
return ("", sprintf("05%02x%08x",(4<<5)|$mtt{$p[0]}, $p[1]));
}
return "Not Yet Implemented: $cmd";
}
sub sub
ZWave_meterGet($) ZWave_meterGet($)
{ {
@ -1855,7 +1875,6 @@ ZWave_meterGet($)
} else { # Version 4 } else { # Version 4
return ("",sprintf('01%02x%02x', 7<<3, $scale-8)); return ("",sprintf('01%02x%02x', 7<<3, $scale-8));
} }
} }
#V2: 1b7:reset 1b65:resrvd, 1b4-0:type, 2b7-4:resrvd, 2b3-0:scale #V2: 1b7:reset 1b65:resrvd, 1b4-0:type, 2b7-4:resrvd, 2b3-0:scale
@ -1879,7 +1898,6 @@ ZWave_meterSupportedParse($$)
my $meter_rate_text = $meter_rate_text[$meter_rate_type]; my $meter_rate_text = $meter_rate_text[$meter_rate_type];
my $meter_type = ($v1 & 0x1f); my $meter_type = ($v1 & 0x1f);
my @meter_type_text =("undef", "energy", "gas", "water", "undef");
my $meter_type_text = ($meter_type > $#meter_type_text ? my $meter_type_text = ($meter_type > $#meter_type_text ?
"undef" : $meter_type_text[$meter_type]); "undef" : $meter_type_text[$meter_type]);
@ -6217,6 +6235,9 @@ ZWave_firmwareUpdateParse($$$)
value is supported by the device.<br> value is supported by the device.<br>
The command will reset ALL accumulated values, it is not possible to The command will reset ALL accumulated values, it is not possible to
choose a single value.</li> choose a single value.</li>
<li>meterResetToValue type value<br>
Reset type (one of energy, gas or water) to the value specified.
Only supported by METER version 6.</li>
<br><br><b>Class MULTI_CHANNEL</b> <br><br><b>Class MULTI_CHANNEL</b>
<li>mcCreateAll<br> <li>mcCreateAll<br>