diff --git a/fhem/FHEM/00_THZ.pm b/fhem/FHEM/00_THZ.pm
index 65e313e62..d28e08c44 100644
--- a/fhem/FHEM/00_THZ.pm
+++ b/fhem/FHEM/00_THZ.pm
@@ -2,7 +2,7 @@
# 00_THZ
# $Id$
# by immi 04/2014
-# v. 0.093
+# v. 0.094
# this code is based on the hard work of Robert; I just tried to port it
# http://robert.penz.name/heat-pump-lwz/
# http://heatpumpmonitor.penz.name/heatpumpmonitorwiki/
@@ -506,7 +506,7 @@ sub THZ_Set($@){
if ($msg eq "10") {
$cmdHex2=THZ_encodecommand(($cmdHex2 . substr((sprintf("%04X", $arg)), -4)),"set"); #04X converts to hex and fills up 0s; for negative, it must be trunckated.
THZ_Write($hash, $cmdHex2); # send request SOH start of heading -- Null -- ?? -- DLE data link escape -- EOT End of Text
- select(undef, undef, undef, 0.1); #maybe important for older firmware
+ select(undef, undef, undef, 0.2); #maybe important for older firmware
($err, $msg) = THZ_ReadAnswer($hash); #Expectedanswer is "10", DLE data link escape
}
$msgtmp= $msgtmp ."\n" ."set--" . $cmdHex2 ."\n" . $msg;
@@ -571,6 +571,7 @@ sub THZ_Get($@){
my $cmdHex3 = $cmdhash->{cmd3};
if(defined($cmdHex3)) {
+ select(undef, undef, undef, 0.1);
my $msg3= " ";
($err, $msg3) = THZ_Get_Comunication($hash, $cmdHex3);
if (defined($err)) {return ($msg3 ."\n msg3 " . $err);}
@@ -843,7 +844,7 @@ sub THZ_Parse($) {
}
when ("0B") { #set parameter HC1
if (substr($message,4,2) eq "14") {$message = quaters2time(substr($message, 8,2)) ."--". quaters2time(substr($message, 10,2))} #value 1Ch 28dec is 7 ; value 1Eh 30dec is 7:30
- elsif (substr($message,4,4) eq "059E") {$message = hex(substr($message, 8,4)) ." K" }
+ elsif (substr($message,4,4) eq "059E") {$message = hex(substr($message, 8,4))/10 ." K" }
elsif (substr($message,4,4) eq "059D") {$message = hex(substr($message, 8,4)) ." %" }
elsif (substr($message,4,4) eq "010E") {$message = hex(substr($message, 8,4))/100}
elsif (substr($message,4,4) eq "010F") {$message = hex(substr($message, 8,2))/10 . " °C"}
@@ -851,7 +852,7 @@ sub THZ_Parse($) {
}
when ("0C") { #set parameter HC2
if (substr($message,4,2) eq "15") {$message = quaters2time(substr($message, 8,2)) ."--". quaters2time(substr($message, 10,2))} #value 1Ch 28dec is 7 ; value 1Eh 30dec is 7:30
- elsif (substr($message,4,4) eq "059E") {$message = hex(substr($message, 8,4)) ." K" }
+ elsif (substr($message,4,4) eq "059E") {$message = hex(substr($message, 8,4))/10 ." K" }
elsif (substr($message,4,4) eq "010E") {$message = hex(substr($message, 8,4))/100}
elsif (substr($message,4,4) eq "010F") {$message = hex(substr($message, 8,2))/10 . " °C"}
else {$message = hex2int(substr($message, 8,4))/10 ." °C" }
@@ -1223,17 +1224,17 @@ polyline { stroke:black; fill:none; }
21
15
- 19
- 23
- 27
- 31
+ 23
+ 21
+ 39
+ 47
15
- 19
- 23
- 27
- 31
+ 23
+ 31
+ 39
+ 47
Actual working point
Heat curve
@@ -1245,15 +1246,15 @@ my $p13GradientHC1 = ReadingsVal("Mythz","p13GradientHC1",0);
my $heatSetTemp =(split ' ',ReadingsVal("Mythz","sHC1",0))[11];
my $outside_tempFiltered =(split ' ',ReadingsVal("Mythz","sGlobal",0))[65];
my $p14LowEnDHC1 =(split ' ',ReadingsVal("Mythz","p14LowEnDHC1",0))[0];
-my $a= 1.5 + ($roomSetTemp * 1.3) + $p14LowEnDHC1;
-my $b= -10 * $p13GradientHC1 / $roomSetTemp;
-my $c= -0.01;
+my $a= 1 + ($roomSetTemp * (1 + $p13GradientHC1 * 0.87)) + $p14LowEnDHC1;
+my $b= -14 * $p13GradientHC1 / $roomSetTemp;
+my $c= -1 * $p13GradientHC1 /75;
my $Simul_heatSetTemp;
$ret .='