luxtronik2, statistics: bug fixes

git-svn-id: https://svn.fhem.de/fhem/trunk@6799 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tpoitzsch
2014-10-21 21:06:06 +00:00
parent d5b71e4009
commit ce9a89aeed
2 changed files with 13 additions and 12 deletions

View File

@@ -1,4 +1,4 @@
############################################################### ###############################################################
# $Id$ # $Id$
# #
# 23_LUXTRONIK2.pm # 23_LUXTRONIK2.pm
@@ -767,18 +767,19 @@ LUXTRONIK2_UpdateDone($)
#WM[kW] = delta_Temp [K] * Durchfluss [l/h] / ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O W<>rmekapazit<69>t bei 30 & 40<34>C) * 0,994 [kg/l] (H2O Dichte bei 35<33>C) ) #WM[kW] = delta_Temp [K] * Durchfluss [l/h] / ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O W<>rmekapazit<69>t bei 30 & 40<34>C) * 0,994 [kg/l] (H2O Dichte bei 35<33>C) )
my $thermalPower = 0; my $thermalPower = 0;
# 0=Heizen, 5=Brauchwasser, 7=Abtauen, 16=Durchfluss<73>berwachung # 0=Heizen, 5=Brauchwasser, 7=Abtauen, 16=Durchfluss<73>berwachung
if ($a[3] =~ /^(0|5|16)$/ ) { if ($a[3] =~ /^(0|5|16)$/) {
$thermalPower = abs($flowTemperature - $returnTemperature) * $a[19] / 866.65; if ($a[19] !~ /no/) { $thermalPower = abs($flowTemperature - $returnTemperature) * $a[19] / 866.65; } #Nur bei W<>rmez<65>hlern
$heatPumpPower = AttrVal($name, "heatPumpElectricalPowerWatt", -1); $heatPumpPower = AttrVal($name, "heatPumpElectricalPowerWatt", -1);
$heatPumpPower *= (1 + ($flowTemperature-35) * AttrVal($name, "heatPumpElectricalPowerFactor", 0)); $heatPumpPower *= (1 + ($flowTemperature-35) * AttrVal($name, "heatPumpElectricalPowerFactor", 0));
} }
readingsBulkUpdate( $hash, "thermalPower", sprintf "%.1f", $thermalPower); if ($a[19] !~ /no/) { readingsBulkUpdate( $hash, "thermalPower", sprintf "%.1f", $thermalPower); } #Nur bei W<>rmez<65>hlern
if ($heatPumpPower >-1 ) { readingsBulkUpdate( $hash, "heatPumpElectricalPowerEstimated", sprintf "%.0f", $heatPumpPower); } if ($heatPumpPower >-1 ) { readingsBulkUpdate( $hash, "heatPumpElectricalPowerEstimated", sprintf "%.0f", $heatPumpPower); }
if ($heatPumpPower > 0) { if ($heatPumpPower > 0 && $a[19] !~ /no/) { #Nur bei W<>rmez<65>hlern
$cop = $thermalPower * 1000 / $heatPumpPower; $cop = $thermalPower * 1000 / $heatPumpPower;
readingsBulkUpdate( $hash, "COP", sprintf "%.2f", $cop); readingsBulkUpdate( $hash, "COP", sprintf "%.2f", $cop);
} }
# if selected, do all the statistic calculations # if selected, do all the statistic calculations
if ( $doStatistic == 1) { if ( $doStatistic == 1) {
#LUXTRONIK2_doStatisticBoilerHeatUp $hash, $currOpHours, $currHQ, $currTemp, $opState, $target #LUXTRONIK2_doStatisticBoilerHeatUp $hash, $currOpHours, $currHQ, $currTemp, $opState, $target
@@ -806,7 +807,7 @@ LUXTRONIK2_UpdateDone($)
} }
} }
# LUXTRONIK2_doStatisticThermalPower: $hash, $MonitoredOpState, $currOpState, $currHeatQuantity, $currOpHours, $currAmbTemp, $currHeatSourceIn, $TargetTemp, $electricalPower # LUXTRONIK2_doStatisticThermalPower: $hash, $MonitoredOpState, $currOpState, $currHeatQuantity, $currOpHours, $currAmbTemp, $currHeatSourceIn, $TargetTemp, $electricalPower
$value = LUXTRONIK2_doStatisticThermalPower ($hash, 5, $a[3], $a[37]/10, $a[35], $ambientTemperature, $heatSourceIN,$hotWaterTemperatureTarget, $heatPumpPower); $value = LUXTRONIK2_doStatisticThermalPower ($hash, 5, $a[3], $a[37]/10, $a[35], $ambientTemperature, $heatSourceIN,$hotWaterTemperatureTarget, $heatPumpPower);
if ($value ne "") { readingsBulkUpdate($hash,"statThermalPowerBoiler",$value); } if ($value ne "") { readingsBulkUpdate($hash,"statThermalPowerBoiler",$value); }
$value = LUXTRONIK2_doStatisticThermalPower ($hash, 0, $a[3], $a[36]/10, $a[34], $ambientTemperature, $heatSourceIN, $returnTemperatureTarget, $heatPumpPower); $value = LUXTRONIK2_doStatisticThermalPower ($hash, 0, $a[3], $a[36]/10, $a[34], $ambientTemperature, $heatSourceIN, $returnTemperatureTarget, $heatPumpPower);
@@ -1725,7 +1726,7 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<br> <br>
It has a built-in ethernet port, so it can be directly integrated into a local area network (LAN). It has a built-in ethernet port, so it can be directly integrated into a local area network (LAN).
<br> <br>
<i>The modul is reported to work with firmware: V1.51, V1.54C, V1.60, V1.69, V1.70.</i> <i>The modul is reported to work with firmware: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70.</i>
<br> <br>
More Info on the particular <a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">page of FHEM-Wiki</a> (in German). More Info on the particular <a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">page of FHEM-Wiki</a> (in German).
<br> <br>
@@ -1843,7 +1844,7 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
Siemens Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist. Siemens Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist.
Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann. Sie besitzt einen Ethernet Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
<br> <br>
<i>Das Modul wurde bisher mit folgender Steuerungs-Firmware getestet: V1.51, V1.54C, V1.60, V1.69, V1.70.</i> <i>Das Modul wurde bisher mit folgender Steuerungs-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70.</i>
<br> <br>
Mehr Infos im entsprechenden <u><a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">Artikel der FHEM-Wiki</a></u>. Mehr Infos im entsprechenden <u><a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">Artikel der FHEM-Wiki</a></u>.
<br>&nbsp; <br>&nbsp;

View File

@@ -969,8 +969,8 @@ statistics_FormatDuration($)
sub ######################################## sub ########################################
statistics_maxDecPlaces($$) statistics_maxDecPlaces($$)
{ {
my ($value,$decMax) = @_; my ($value, $decMax) = @_;
$decMax = 0 if $decMax == undef; $decMax = 0 if ! defined $decMax;
if ( $value =~ /.*\.(.*)/ ) { if ( $value =~ /.*\.(.*)/ ) {
my $decPlaces = length($1); my $decPlaces = length($1);
$decMax = $decPlaces >= $decMax ? $decPlaces : $decMax; $decMax = $decPlaces >= $decMax ? $decPlaces : $decMax;