diff --git a/fhem/FHEM/00_THZ.pm b/fhem/FHEM/00_THZ.pm index 7d8d0e928..e31ecddd7 100644 --- a/fhem/FHEM/00_THZ.pm +++ b/fhem/FHEM/00_THZ.pm @@ -1,8 +1,8 @@ ############################################## # 00_THZ # $Id$ -# by immi 04/2014 -# v. 0.094 +# by immi 05/2014 +# v. 0.095 # 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/ @@ -255,6 +255,8 @@ my %getsonly = ( "sFirmware" => {cmd2=>"FD"}, "sHeatRecoveredDay" => {cmd2=>"0A03AE", cmd3=>"0A03AF", unit =>"Wh"}, "sHeatRecoveredTotal" => {cmd2=>"0A03B0", cmd3=>"0A03B1", unit =>"kWh"}, + "sHeatDHWDay" => {cmd2=>"0A092A", cmd3=>"0A092B", unit =>"Wh"}, + "sHeatDHWTotal" => {cmd2=>"0A092C", cmd3=>"0A092D", unit =>"kWh"}, #"sAllE8" => {cmd2=>"E8"}, "party-time" => {cmd2=>"0A05D1"} # value 1Ch 28dec is 7 ; value 1Eh 30dec is 7:30 ); @@ -298,6 +300,8 @@ sub THZ_Initialize($) ."interval_sLast10errors:0,3600,7200,28800,43200,86400 " ."interval_sHeatRecoveredDay:0,1200,3600,7200,28800,43200,86400 " ."interval_sHeatRecoveredTotal:0,3600,7200,28800,43200,86400 " + ."interval_sHeatDHWDay:0,1200,3600,7200,28800,43200,86400 " + ."interval_sHeatDHWTotal:0,3600,7200,28800,43200,86400 " . $readingFnAttributes; $data{FWEXT}{"/THZ_PrintcurveSVG"}{FUNC} = "THZ_PrintcurveSVG"; } @@ -344,11 +348,12 @@ sub THZ_Define($$) sub THZ_Refresh_all_gets($) { my ($hash) = @_; RemoveInternalTimer($hash); - my $timedelay= 5; + my $timedelay= 5; #strart after 5 seconds foreach my $cmdhash (keys %gets) { my %par = ( command => $cmdhash, hash => $hash ); RemoveInternalTimer(\%par); - InternalTimer(gettimeofday() + ($timedelay++) , "THZ_GetRefresh", \%par, 0); + InternalTimer(gettimeofday() + ($timedelay++) , "THZ_GetRefresh", \%par, 0); #increment 1.3s $timedelay++ + $timedelay += 0.3; } #refresh all registers; the register with interval_command ne 0 will keep on refreshing } @@ -366,11 +371,11 @@ sub THZ_GetRefresh($) { my $command=$par->{command}; my $interval = AttrVal($hash->{NAME}, ("interval_".$command), 0); my $replyc = ""; - if (!($hash->{STATE} eq "disconnected")) { - if ($interval) { + if ($interval) { $interval = 60 if ($interval < 60); #do not allow intervall <60 sec InternalTimer(gettimeofday()+ $interval, "THZ_GetRefresh", $par, 1) ; - } + } + if (!($hash->{STATE} eq "disconnected")) { $replyc = THZ_Get($hash, $hash->{NAME}, $command); } return ($replyc); @@ -837,7 +842,7 @@ sub THZ_Parse($) { elsif ((substr($message,4,2) eq "1D") or (substr($message,4,2) eq "17")) {$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 "05D1") {$message = quaters2time(substr($message, 10,2)) ."--". quaters2time(substr($message, 8,2))} #like above but before stop then start !!!! elsif ((substr($message,4,4) eq "05D3") or (substr($message,4,4) eq "05D4")) {$message = quaters2time(substr($message, 10,2)) } #value 1Ch 28dec is 7 - elsif ((substr($message,4,3) eq "056") or (substr($message,4,4) eq "0570") or (substr($message,4,4) eq "0575") or (substr($message,4,4) eq "03AE") or (substr($message,4,4) eq "03AF") or (substr($message,4,4) eq "03B0") or (substr($message,4,4) eq "03B1") ) {$message = hex(substr($message, 8,4))} + elsif ((substr($message,4,3) eq "056") or (substr($message,4,4) eq "0570") or (substr($message,4,4) eq "0575") or (substr($message,4,4) eq "03AE") or (substr($message,4,4) eq "03AF") or (substr($message,4,4) eq "03B0") or (substr($message,4,4) eq "03B1") or (substr($message,4,3) eq "092") ) {$message = hex(substr($message, 8,4))} elsif ((substr($message,4,4) eq "0588") or (substr($message,4,4) eq "05A0") or (substr($message,4,4) eq "0571") or (substr($message,4,4) eq "0572") or (substr($message,4,4) eq "0573") or (substr($message,4,4) eq "0574")) {$message = hex(substr($message, 8,4)) ." min" } elsif (substr($message,4,3) eq "057") {$message = hex(substr($message, 8,4)) ." m3/h" } elsif (substr($message,4,4) eq "05A2") {$message = hex(substr($message, 8,4))/10 ." K" } @@ -1163,6 +1168,10 @@ sub THZ_Undef($$) { DevIo_CloseDev($hash); return undef; } + + + + ##################################### # sub THZ_PrintcurveSVG # plots heat curve @@ -1215,14 +1224,14 @@ polyline { stroke:black; fill:none; } HC1 heat SetTemp °C -outside temperature filtered °C --15 --9 --3 -3 -9 -15 -21 +outside temperature filtered °C +-15 +-9 +-3 +3 +9 +15 +21 15 23 @@ -1237,8 +1246,6 @@ polyline { stroke:black; fill:none; } 39 47 -Actual working point -Heat curve END @@ -1252,26 +1259,30 @@ my $b= -14 * $p13GradientHC1 / $roomSetTemp; my $c= -1 * $p13GradientHC1 /75; my $Simul_heatSetTemp; +#labels ###################### +$ret .= ' --- heat curve' ; +$ret .= ' --- working point: outside_tempFiltered='; +$ret .= $outside_tempFiltered . ' heatSetTemp=' . $heatSetTemp . ''; -$ret .=''; +$ret .= 'roomSetTemp=' . $roomSetTemp . ' p13GradientHC1=' . $p13GradientHC1 . ' p14LowEnDHC1= ' . $p14LowEnDHC1 . ''; + + +#point ###################### +$ret .=''; +#curve ###################### $ret .='