mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 07:16:03 +00:00
32_TechemWZ.pm: Compact 5 heatmeter fixed
git-svn-id: https://svn.fhem.de/fhem/trunk@10465 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
86534b0786
commit
652c6a3b24
@ -71,6 +71,8 @@ TechemWZ_Define(@) {
|
|||||||
# subscribe broadcast channels
|
# subscribe broadcast channels
|
||||||
# TechemWZ_subscribe($hash, 'foo');
|
# TechemWZ_subscribe($hash, 'foo');
|
||||||
TechemWZ_Run($hash) if $init_done;
|
TechemWZ_Run($hash) if $init_done;
|
||||||
|
# DEBUG
|
||||||
|
TechemWZ_Parse($hash, "b364468501081015045438837A1009F1FD31400085101008015152AA87AB81C64DB1BBA64614101000400000009083C48A04105101C92CA4635CD47E179B47731::-35.5");
|
||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,18 +211,22 @@ TechemWZ_Parse(@) {
|
|||||||
($message->{long}, $message->{short}) = TechemWZ_ParseID(@m);
|
($message->{long}, $message->{short}) = TechemWZ_ParseID(@m);
|
||||||
$message->{type} = TechemWZ_ParseSubType(@m);
|
$message->{type} = TechemWZ_ParseSubType(@m);
|
||||||
$message->{version} = TechemWZ_ParseSubVersion(@m);
|
$message->{version} = TechemWZ_ParseSubVersion(@m);
|
||||||
$message->{lastVal} = TechemWZ_ParseLastPeriod(@m);
|
|
||||||
$message->{actualVal} = TechemWZ_ParseActualPeriod(@m);
|
|
||||||
($message->{actual}->{year}, $message->{actual}->{month}, $message->{actual}->{day}) = TechemWZ_ParseActualDate(@m);
|
|
||||||
($message->{last}->{year}, $message->{last}->{month}, $message->{last}->{day}) = TechemWZ_ParseLastDate(@m);
|
|
||||||
$message->{rssi} = ($rssi)?$rssi:"?";
|
$message->{rssi} = ($rssi)?$rssi:"?";
|
||||||
|
|
||||||
# metertype specific adjustment
|
# metertype specific adjustment
|
||||||
if ($message->{type} =~ /62|72/) {
|
if ($message->{type} =~ /62|72/) {
|
||||||
|
$message->{lastVal} = TechemWZ_ParseLastPeriod(@m);
|
||||||
|
$message->{actualVal} = TechemWZ_ParseActualPeriod(@m);
|
||||||
|
($message->{actual}->{year}, $message->{actual}->{month}, $message->{actual}->{day}) = TechemWZ_ParseActualDate(@m);
|
||||||
|
($message->{last}->{year}, $message->{last}->{month}, $message->{last}->{day}) = TechemWZ_ParseLastDate(@m);
|
||||||
$message->{lastVal} /= 10;
|
$message->{lastVal} /= 10;
|
||||||
$message->{actualVal} /= 10;
|
$message->{actualVal} /= 10;
|
||||||
$message->{meter} = $message->{lastVal} + $message->{actualVal};
|
$message->{meter} = $message->{lastVal} + $message->{actualVal};
|
||||||
} elsif ($message->{type} =~ /43/) {
|
} elsif ($message->{type} =~ /43/) {
|
||||||
|
$message->{lastVal} = TechemWZ_WMZ_Type1_ParseLastPeriod(@m);
|
||||||
|
$message->{actualVal} = TechemWZ_WMZ_Type1_ParseActualPeriod(@m);
|
||||||
|
($message->{actual}->{year}, $message->{actual}->{month}, $message->{actual}->{day}) = TechemWZ_WMZ_Type1_ParseActualDate(@m);
|
||||||
|
($message->{last}->{year}, $message->{last}->{month}, $message->{last}->{day}) = TechemWZ_ParseLastDate(@m);
|
||||||
$message->{meter} = $message->{lastVal} + $message->{actualVal};
|
$message->{meter} = $message->{lastVal} + $message->{actualVal};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,6 +355,35 @@ TechemWZ_ParseLastDate(@) {
|
|||||||
return ($y, $m, $d);
|
return ($y, $m, $d);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
#
|
||||||
|
# Vario 5 heatmeter
|
||||||
|
#
|
||||||
|
###############################################################################
|
||||||
|
|
||||||
|
sub
|
||||||
|
TechemWZ_WMZ_Type1_ParseLastPeriod(@) {
|
||||||
|
my @m = @_;
|
||||||
|
return hex("$m[15]$m[14]$m[13]");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub
|
||||||
|
TechemWZ_WMZ_Type1_ParseActualPeriod(@) {
|
||||||
|
my @m = @_;
|
||||||
|
return hex("$m[19]$m[18]$m[17]");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub
|
||||||
|
TechemWZ_WMZ_Type1_ParseActualDate(@) {
|
||||||
|
my @m = @_;
|
||||||
|
my @t = localtime(time);
|
||||||
|
my $b = hex("$m[21]$m[20]");
|
||||||
|
my $d = ($b >> 7) & 0x1F;
|
||||||
|
my $m = (hex("$m[16]") >> 3) & 0x0F;
|
||||||
|
my $y = my $y = $t[5] + 1900;
|
||||||
|
return ($y, $m, $d);
|
||||||
|
}
|
||||||
|
|
||||||
sub
|
sub
|
||||||
TechemWZ_createCrcTable(@) {
|
TechemWZ_createCrcTable(@) {
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user