mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-20 13:26:02 +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
|
||||
# TechemWZ_subscribe($hash, 'foo');
|
||||
TechemWZ_Run($hash) if $init_done;
|
||||
# DEBUG
|
||||
TechemWZ_Parse($hash, "b364468501081015045438837A1009F1FD31400085101008015152AA87AB81C64DB1BBA64614101000400000009083C48A04105101C92CA4635CD47E179B47731::-35.5");
|
||||
return undef;
|
||||
}
|
||||
|
||||
@ -209,18 +211,22 @@ TechemWZ_Parse(@) {
|
||||
($message->{long}, $message->{short}) = TechemWZ_ParseID(@m);
|
||||
$message->{type} = TechemWZ_ParseSubType(@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:"?";
|
||||
|
||||
# metertype specific adjustment
|
||||
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->{actualVal} /= 10;
|
||||
$message->{meter} = $message->{lastVal} + $message->{actualVal};
|
||||
} 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};
|
||||
}
|
||||
|
||||
@ -349,6 +355,35 @@ TechemWZ_ParseLastDate(@) {
|
||||
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
|
||||
TechemWZ_createCrcTable(@) {
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user