From 14e93f8abda5c6c2ab8c82e9100ce6f0a8d74cd3 Mon Sep 17 00:00:00 2001 From: kaihs <> Date: Wed, 20 Aug 2014 18:55:04 +0000 Subject: [PATCH] WMBUS: yet another bugfix for hour in timestamp git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@6434 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- FHEM/WMBus.pm | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/FHEM/WMBus.pm b/FHEM/WMBus.pm index a213dabd9..53198f9a4 100644 --- a/FHEM/WMBus.pm +++ b/FHEM/WMBus.pm @@ -103,7 +103,7 @@ sub valueCalcDate($$) { if ($day > 31 || $month > 12 || $year > 2099) { return "invalid"; } else { - return $year . "-" . $month . "-" . $day; + return sprintf("%04d-%02d-%02d", $year, $month, $day); } } @@ -135,9 +135,13 @@ sub valueCalcDateTime($$) { my $dateTime = valueCalcDate($datePart, $dataBlock); if ($timeInvalid == 0) { my $min = ($value & 0b111111); - my $hour = ($value >> 6) & 0b11111; - my $su = ($value & 0b10000000000000000); - $dateTime .= sprintf(' %02d:%02d %s', $hour, $min, $su ? 'DST' : ''); + my $hour = ($value >> 8) & 0b11111; + my $su = ($value & 0b1000000000000000); + if ($min > 59 || $hour > 23) { + $dateTime = 'invalid'; + } else { + $dateTime .= sprintf(' %02d:%02d %s', $hour, $min, $su ? 'DST' : ''); + } } return $dateTime; @@ -848,7 +852,7 @@ sub decodePayload($$) { $dataBlock->{value} = $dataBlock->{calcFunc}->($value, $dataBlock); #print "Value raw " . $value . " value calc " . $dataBlock->{value} ."\n"; } else { - $dataBlock->{value} = ""; + $dataBlock->{value} = $value; } push @dataBlocks, $dataBlock;