From 55ed9026fa3326e5606cceb3f94bc2f72099a86d Mon Sep 17 00:00:00 2001 From: eisler Date: Thu, 11 Oct 2018 12:41:53 +0000 Subject: [PATCH] 12_HProtocolGateway: fix Filllevel decimal, Strapping table linear interpolation git-svn-id: https://svn.fhem.de/fhem/trunk@17508 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/12_HProtocolGateway.pm | 18 +++++++++++------- fhem/FHEM/12_HProtocolTank.pm | 2 +- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/fhem/FHEM/12_HProtocolGateway.pm b/fhem/FHEM/12_HProtocolGateway.pm index 27ee010d2..c071b9698 100644 --- a/fhem/FHEM/12_HProtocolGateway.pm +++ b/fhem/FHEM/12_HProtocolGateway.pm @@ -28,6 +28,7 @@ package main; use strict; use warnings; use DevIo; +use Math::Round qw/round/; my @tankList = undef; @@ -192,8 +193,8 @@ sub HProtocolGateway_ParseMessage($$) { # convert to HEX $check = sprintf '%02X', $check; - # Unitronics Vision130 - if ($water == 0 && $temperature == 0 && $probe_offset == 0 && $version == 0 && $error == 0 && $checksum == 0 ) { + # Unitronics + if ($version == 0 && $error == 0 && $checksum == 0) { $check = 0; } @@ -203,7 +204,7 @@ sub HProtocolGateway_ParseMessage($$) { my $mode = AttrVal($tankHash->{NAME},"mode",""); if ($mode eq "FillLevel") { - $filllevel = $tankdata; + $filllevel = $tankdata/100; $volume = HProtocolGateway_Tank($hash,$tankHash,$filllevel); } elsif ($mode eq "Volume") { $volume = $tankdata; @@ -363,14 +364,17 @@ sub HProtocolGateway_Tank($$$) { } close $fh; - my $messwert = $filllevel/100; my $volume = 0; - + my $volume1 = 0; + my $level1 = 0; foreach my $level (sort keys %TankChartHash) { - if ($level ne "level" && $messwert <= $level) { - $volume = $TankChartHash{$level}; + if ($level ne "level" && $filllevel <= $level) { + $volume = $volume1 + ($TankChartHash{$level} - $volume1) / ($level - $level1) * ($filllevel-$level1); + $volume = Math::Round::nearest('0.01',$volume); last; } + $level1 = $level; + $volume1 = $TankChartHash{$level}; } return $volume; } diff --git a/fhem/FHEM/12_HProtocolTank.pm b/fhem/FHEM/12_HProtocolTank.pm index a0a8f29e4..c99eecb23 100644 --- a/fhem/FHEM/12_HProtocolTank.pm +++ b/fhem/FHEM/12_HProtocolTank.pm @@ -149,7 +149,7 @@ sub HProtocolTank_Attr (@) {
  • waterlevel
    0..9999 Water level in mm
  • probe_offset
    - -9999 - +9999 Probe offset in mm)
  • + -9999 - +9999 Probe offset in mm
  • version
    00..999 Software version
  • error