From e8429596eaad21d1c47eec3a8f74767d22447a3f Mon Sep 17 00:00:00 2001 From: immiimmi Date: Fri, 2 May 2014 21:43:51 +0000 Subject: [PATCH] THZ: bug-fix git-svn-id: https://svn.fhem.de/fhem/trunk@5723 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_THZ.pm | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) 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 .='