diff --git a/fhem/FHEM/23_LUXTRONIK2.pm b/fhem/FHEM/23_LUXTRONIK2.pm
index b0b1526a9..4198a814a 100644
--- a/fhem/FHEM/23_LUXTRONIK2.pm
+++ b/fhem/FHEM/23_LUXTRONIK2.pm
@@ -69,9 +69,9 @@ LUXTRONIK2_Initialize($)
"autoSynchClock:slider,10,5,300 ".
"boilerVolumn ".
"heatPumpElectricalPowerFactor ".
- "heatPumpElectricalPowerWatt:slider,1000,16000,100 ".
- "heatRodElectricalPowerWatt:slider,1000,16000,100 ".
- "compressor2ElectricalPowerWatt:slider,1000,16000,100 ".
+ "heatPumpElectricalPowerWatt ".
+ "heatRodElectricalPowerWatt ".
+ "compressor2ElectricalPowerWatt ".
"doStatistics:0,1 ".
"ignoreFirmwareCheck:0,1 ".
"statusHTML ".
@@ -247,6 +247,9 @@ LUXTRONIK2_Set($$@)
elsif($cmd eq 'activeTariff' && int(@_)==4 ) {
$val = 0 if( $val < 1 || $val > 9 );
readingsSingleUpdate($hash,"activeTariff",$val, 1);
+ $hash->{LOCAL} = 1;
+ LUXTRONIK2_GetUpdate($hash);
+ $hash->{LOCAL} = 0;
return "$name: activeTariff set to $val.";
}
@@ -292,11 +295,11 @@ LUXTRONIK2_Set($$@)
my $list = "statusRequest:noArg"
." activeTariff:0,1,2,3,4,5,6,7,8,9"
." resetStatistics:all,statBoilerGradientCoolDownMin,statAmbientTemp...,statElectricity...,statHours...,statHeatQ..."
- ." hotWaterTemperatureTarget:slider,30.0,0.5,65.0"
- ." returnTemperatureSetBack:slider,-5,0.5,5"
+ ." hotWaterTemperatureTarget "
+ ." returnTemperatureSetBack "
." opModeHotWater:Auto,Party,Off"
." synchronizeClockHeatPump:noArg"
- ." INTERVAL:slider,30,30,1800";
+ ." INTERVAL ";
return "Unknown argument $cmd, choose one of $list";
}
@@ -778,16 +781,16 @@ LUXTRONIK2_UpdateDone($)
if ($value ne "") {
readingsBulkUpdate($hash,"statBoilerGradientCoolDown",$value);
Log3 $name,3,"$name: statBoilerGradientCoolDown set to $value";
+ my @new = split / /, $value;
if ( exists( $hash->{READINGS}{statBoilerGradientCoolDownMin} ) ) {
- my @new = split / /, $value;
my @old = split / /, $hash->{READINGS}{statBoilerGradientCoolDownMin}{VAL};
if ($new[5]>6 && $new[1]>$old[1] && $new[1] < 0) {
- readingsBulkUpdate($hash,"statBoilerGradientCoolDownMin",$value);
- Log3 $name,3,"$name: statBoilerGradientCoolDownMin set to $value";
+ readingsBulkUpdate($hash,"statBoilerGradientCoolDownMin",$value,1);
+ Log3 $name,3,"$name: statBoilerGradientCoolDownMin set to '$value'";
}
- } else {
- readingsBulkUpdate($hash,"statBoilerGradientCoolDownMin",$value);
- Log3 $name,3,"$name: statBoilerGradientCoolDownMin set to $value";
+ } elsif ($new[5]>6 && $new[1] < 0) {
+ readingsBulkUpdate($hash,"statBoilerGradientCoolDownMin",$value,1);
+ Log3 $name,3,"$name: statBoilerGradientCoolDownMin set to '$value'";
}
}
@@ -852,9 +855,9 @@ LUXTRONIK2_UpdateDone($)
&& $a[11] == 1
&& $averageAmbientTemperature >= $thresholdHeatingLimit) {
if ($ambientTemperature>=10 ) {
- $value = "Heizungsgrenze (Soll 1°C)";
+ $value = "Heizungsgrenze (Soll 15 C)";
} else {
- $value = "Frostschutz (Soll 20°C)";
+ $value = "Frostschutz (Soll 20 C)";
}
} else {
$value = $heatingState{$a[46]};
@@ -862,9 +865,9 @@ LUXTRONIK2_UpdateDone($)
# Consider heating reduction limit
if ($a[46] == 0) {
if ($thresholdTemperatureSetBack <= $ambientTemperature) {
- $value .= " ".LUXTRONIK2_CalcTemp($a[47])."°C";
+ $value .= " ".LUXTRONIK2_CalcTemp($a[47])." C"; #° ° ° °
} else {
- $value = "Normal da < ".$thresholdTemperatureSetBack."°C";
+ $value = "Normal da < ".$thresholdTemperatureSetBack." C";
}
}
}
@@ -950,14 +953,14 @@ LUXTRONIK2_UpdateDone($)
$value .= "$opStateHeatPump1
\n";
$value .= "$opStateHeatPump2
\n";
$value .= "$opStateHeatPump3
\n";
- $value .= "Brauchwasser: ".$hotWaterTemperature."°C";
+ $value .= "Brauchwasser: ".$hotWaterTemperature."°C";
readingsBulkUpdate($hash,"floorplanHTML",$value);
}
# State update
$value = "$opStateHeatPump1 $opStateHeatPump2 - $opStateHeatPump3";
if ($thermalPower != 0) {
- $value .= " (".sprintf ("%.1f", $thermalPower)." kW";
- if ($heatPumpPower>0) {$value .= ", COP: ".sprintf ("%.2f", $cop);}
+ $value .= sprintf (" (%.1f kW", $thermalPower);
+ if ($heatPumpPower>0) {$value .= sprintf (", COP: %.2f", $cop);}
$value .= ")"; }
readingsBulkUpdate($hash, "state", $value);
@@ -1235,22 +1238,20 @@ LUXTRONIK2_doStatisticThermalPower ($$$$$$$$$)
$save = 1;
$last[0] = $currOpState;
$value2 = ($currOpHours - $last[2])/60;
- if ($value2 > 9.5) {
+ if ($value2 >= 6) {
$value1 = $last[3] / $last[5];
- $returnStr = "aT: " . sprintf "%.1f", $value1;
+ $returnStr = sprintf "aT: %.1f", $value1;
$value1 = $last[4] / $last[5];
- $returnStr .= " iT: " . sprintf "%.1f", $value1;
- $returnStr .= " tT: " . sprintf "%.1f", $targetTemp;
+ $returnStr .= sprintf " iT: %.1f", $value1;
+ $returnStr .= " tT: " . $targetTemp;
$value1 = $currHeatQuantity - $last[1];
$value3 = $value1 * 60 / $value2;
- $returnStr .= " thP: " . sprintf "%.1f", $value3;
- $returnStr .= " DQ: " . sprintf "%.1f", $value1;
- $returnStr .= " t: " . sprintf "%.0f", $value2;
+ $returnStr .= sprintf " thP: %.1f DQ: %.1f t: %.0f", $value3, $value1, $value2;
if ($last[7]>0) {
$value1 = $value3 *1000 / $last[7] * $last[5];;
- $returnStr .= " COP: " . sprintf "%.2f", $value1;
+ $returnStr .= sprintf " COP: %.2f", $value1;
}
- if ($last[6] > $targetTemp) { $returnStr .= " tTStart: " . sprintf "%.1f", $last[6]; }
+ if ($last[6] > $targetTemp) { $returnStr .= " tTStart: " . $last[6]; }
}
}
@@ -1339,21 +1340,16 @@ LUXTRONIK2_doStatisticBoilerHeatUp ($$$$$$)
Log3 $name, 4, "$name: Statistic Boiler Heat-Up step 3->1: Boiler heat-up measurement finished";
$value1 = ( int(10 * $maxTemp) - int(10 * $minTemp) ) / 10; # delta hot water temperature
$value2 = ( $currOpHours - $lastOpHours ) / 60; # delta time (minutes)
- $returnStr = "DT/min: ".sprintf("%.2f", $value1/$value2)." DT: ".sprintf("%.2f", $value1)." Dmin: ".sprintf("%.0f", $value2);
-
- $value3 = $currHQ - $lastHQ; # delta heat quantity
- # Delta Heat Quantity
- $returnStr .= " DQ: ".sprintf("%.1f",$value3);
- # Average thermal power
- $returnStr .= " thP: ".sprintf("%.1f",$value3 * 60 / $value2);
-
+ $value3 = $currHQ - $lastHQ; # delta heat quantity, average thermal power
+
+ $returnStr = sprintf "DT/min: %.2f DT: %.2f Dmin: %.0f DQ: %.1f thP: %.1f", $value1/$value2, $value1, $value2, $value3, $value3*60/$value2;
#real (mixed) Temperature-Difference
my $boilerVolumn = AttrVal($name, "boilerVolumn", 0);
if ($boilerVolumn >0 ) {
# (delta T) [K] = Wärmemenge [kWh] / #Volumen [l] * ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O Wärmekapazität bei 40°C) * 0,992 [kg/l] (H2O Dichte bei 40°C) ) [K/(kWh*l)] )
$value2 = 868.4 * $value3 / $boilerVolumn ;
- $returnStr .= " realDT: ".sprintf("%.0f", $value2);
+ $returnStr .= sprintf " realDT: %.0f", $value2;
}
$step = 1;
@@ -1416,9 +1412,9 @@ LUXTRONIK2_doStatisticBoilerCoolDown ($$$$$$)
$value1 = $currTemp - $maxTemp; # delta hot water temperature
$value2 = ( $time - $startTime ) / 3600; # delta time (hours)
}
- $value3 = sprintf("%.2f", $value1 / $value2 ); # Temperature gradient over time rounded to 1/100th
- $value2 = sprintf("%.2f", $value2 ); # rounded to 1/100th
- $value1 = sprintf("%.1f", $value1 ); # rounded to 1/10th
+ $value3 = sprintf("%.2f", $value1 / $value2); # Temperature gradient over time rounded to 1/100th
+ $value2 = sprintf("%.2f", $value2); # rounded to 1/100th
+ $value1 = sprintf("%.1f", $value1); # rounded to 1/10th
$returnStr = "DT/h: $value3 DT: $value1 Dh: $value2";
$step = 0;
}
@@ -1509,7 +1505,7 @@ LUXTRONIK2_doStatisticMinMaxSingle ($$$$)
$a[1]++; # Count
$a[3] += $value; # Sum
if ($value < $b[1]) { $b[1]=$value; } # Min
- if ($a[1]>0) {$b[3] = sprintf "%.1f" , $a[3] / $a[1];} # Avg
+ if ($a[1]>0) {$b[3] = sprintf "%.1f" , $a[3] / $a[1] ;} # Avg
if ($value > $b[5]) { $b[5]=$value; } # Max
# in case of period change, save "last" values and reset counters
@@ -1712,7 +1708,7 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$)
statusHTML
statusHTML
+ singularReadings <GerätenameRegExp:GerätewertRegExp>:Statistiktypen(Min|Avg|Max|Delta):ZeitPeriode(Hour|Day|Month|Year)
Wettersensor:rain:Delta:(Hour|Day))|(FritzDect:(current|power):(Avg|Max|Delta):(Hour|Day)