From 5e8f7e2646a23eb32277085df6bf6e0966b79b86 Mon Sep 17 00:00:00 2001
From: immiimmi <>
Date: Thu, 15 May 2014 18:53:58 +0000
Subject: [PATCH] THZ: improved simulated heat curve with roominfluence
git-svn-id: https://svn.fhem.de/fhem/trunk@5870 2b470e98-0d58-463d-a4d8-8e2adae1ed80
---
fhem/FHEM/00_THZ.pm | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/fhem/FHEM/00_THZ.pm b/fhem/FHEM/00_THZ.pm
index 814131aed..12895c105 100644
--- a/fhem/FHEM/00_THZ.pm
+++ b/fhem/FHEM/00_THZ.pm
@@ -2,7 +2,7 @@
# 00_THZ
# $Id$
# by immi 05/2014
-# v. 0.097
+# v. 0.098
# 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/
@@ -100,7 +100,6 @@ my %sets = (
"p49SummerModeTemp" => {cmd2=>"0A0116", argMin => "11", argMax => "24" }, #threshold for summer mode !!
"p50SummerModeHysteresis" => {cmd2=>"0A05A2", argMin => "0.5", argMax => "5" }, #Hysteresis for summer mode !!
"p78DualModePoint" => {cmd2=>"0A01AC", argMin => "-10", argMax => "20" },
-
"pHolidayBeginDay" => {cmd2=>"0A011B", argMin => "1", argMax => "31" },
"pHolidayBeginMonth" => {cmd2=>"0A011C", argMin => "1", argMax => "12" },
"pHolidayBeginYear" => {cmd2=>"0A011D", argMin => "12", argMax => "20" },
@@ -1263,17 +1262,15 @@ polyline { stroke:black; fill:none; }
END
-
+my $insideTemp=(split ' ',ReadingsVal("Mythz","sGlobal",0))[81];
+$insideTemp="n.a." if ($insideTemp eq "-60"); #in case internal room sensor not connected
my $roomSetTemp =(split ' ',ReadingsVal("Mythz","sHC1",0))[21];
my $p13GradientHC1 = ReadingsVal("Mythz","p13GradientHC1",0);
my $heatSetTemp =(split ' ',ReadingsVal("Mythz","sHC1",0))[11];
my $p15RoomInfluenceHC1 = (split ' ',ReadingsVal("Mythz","p15RoomInfluenceHC1",0))[0];
my $outside_tempFiltered =(split ' ',ReadingsVal("Mythz","sGlobal",0))[65];
my $p14LowEndHC1 =(split ' ',ReadingsVal("Mythz","p14LowEndHC1",0))[0];
-my $a= 1 + ($roomSetTemp * (1 + $p13GradientHC1 * 0.87)) + $p14LowEndHC1;
-my $b= -14 * $p13GradientHC1 / $roomSetTemp;
-my $c= -1 * $p13GradientHC1 /75;
-my $Simul_heatSetTemp;
+
#labels ######################
$ret .= ' --- heat curve' ;
@@ -1283,7 +1280,14 @@ $ret .= $outside_tempFiltered . ' heatSetTemp=' . $heatSetTemp . '';
#title ######################
$ret .= '';
-$ret .= 'roomSetTemp=' . $roomSetTemp . ' p13GradientHC1=' . $p13GradientHC1 . ' p14LowEndHC1=' . $p14LowEndHC1 . ' p15RoomInfluenceHC1=' . $p15RoomInfluenceHC1 . '';
+$ret .= 'roomSetTemp=' . $roomSetTemp . ' p13GradientHC1=' . $p13GradientHC1 . ' p14LowEndHC1=' . $p14LowEndHC1 . ' p15RoomInfluenceHC1=' . $p15RoomInfluenceHC1 . " insideTemp=" . $insideTemp .' ';
+
+#equation####################
+$insideTemp=$roomSetTemp if ($insideTemp eq "n.a.");
+my $a= 1 + ($roomSetTemp * (1 + $p13GradientHC1 * 0.87)) + $p14LowEndHC1 + $p15RoomInfluenceHC1 * $p13GradientHC1 * ($roomSetTemp - $insideTemp);
+my $b= -14 * $p13GradientHC1 / $roomSetTemp;
+my $c= -1 * $p13GradientHC1 /75;
+my $Simul_heatSetTemp;
#point ######################