diff --git a/delay.html b/delay.html index e52c098..821baa0 100644 --- a/delay.html +++ b/delay.html @@ -90,6 +90,15 @@ $(function () { name: "Heat, down", data: data[1] }; + seriesOptions[2] = { + name: "Cool, Cooling", + data: data[2] + }; + seriesOptions[3] = { + name: "Cool, up", + data: data[3] + }; + createChart(); diff --git a/delay.php b/delay.php index c32dd3b..cd3919c 100644 --- a/delay.php +++ b/delay.php @@ -6,7 +6,7 @@ $conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } -$sql = 'SELECT UNIX_TIMESTAMP(date),dispTemperature,weatherTemperature,heatSetPoint,systemSwitchPosition from stat'; +$sql = 'SELECT UNIX_TIMESTAMP(date),id,dispTemperature,weatherTemperature,heatSetPoint,coolSetPoint,systemSwitchPosition from stat'; $result = $conn->query($sql); if (!$result) { @@ -31,48 +31,73 @@ $cool_up = NULL; $cool_down = NULL; $type = NULL; +//Start at index 1 so index 0 is the prior one for($i = 1; $i < count($rows); $i++){ $now = $rows[$i]; $last= $rows[$i-1]; // echo $startTime; -// print_r($now); - if($startTime == -1){ -// echo "no start
"; - if($now['heatSetPoint'] <> $last['heatSetPoint']){ - //Down! -// echo "down
"; - $startTime = $now['date']; - $startTemp = $now['dispTemperature']; - $startSetPoint = $last['heatSetPoint']; - $targetSetPoint = $now['heatSetPoint']; - if($now['heatSetPoint'] > $last['heatSetPoint']){ - $type = "up"; - } else { - $type = "down"; - } - } - } else{ - //looking for end -// echo "yes start
"; - if($now['dispTemperature'] == $targetSetPoint || $now['heatSetPoint'] <> $targetSetPoint){ - $changeTime = ($now['date']-$startTime)/60; - $changeTemp = abs($startTemp - $now['dispTemperature']); - $outside = $now['weatherTemperature']; - $minperdeg = $changeTime/$changeTemp; - - if($type == "up"){ - $heat_up[] = [$minperdeg,intval($outside)]; - } else{ - $heat_down[] = [$minperdeg,intval($outside)]; - } - - $startTime = -1; - } +// print_r($now); + switch ($now['systemSwitchPosition']){ + case 1: + // heating + $setPoint = 'heatSetPoint'; + break; + case 3: + // cooling + $setPoint = 'coolSetPoint'; + break; + default: + //AUTOCOOL: 5, AUTOHEAT: 4, EMHEAT: 0, OFF: 2, SOUTHERN_AWAY: 6, UNKNOWN: 7 + $setPoint = NULL; + break; + } + if($setPoint){ + if($startTime == -1){ + if($now[$setPoint] <> $last[$setPoint]){ + if($setPoint == 'heatSetPoint' && $now[$setPoint] > $now['dispTemperature'] || + $setPoint == 'coolSetPoint' && $now[$setPoint] < $now['dispTemperature']){ +// print "Temperature started to change and is different!"; + $startTime = $now['date']; + $startTemp = $now['dispTemperature']; + $startSetPoint = $last[$setPoint]; + $targetSetPoint = $now[$setPoint]; + if($now[$setPoint] > $last[$setPoint]){ + $type = "up"; + } else { + $type = "down"; + } + } + } + } else{ + //looking for end + if($now['dispTemperature'] == $targetSetPoint || $now[$setPoint] <> $targetSetPoint){ + $changeTime = ($now['date']-$startTime)/60; + $changeTemp = abs($startTemp - $now['dispTemperature']); + $outside = $now['weatherTemperature']; + $minperdeg = $changeTime/$changeTemp; + if(!$minperdeg){ + $minperdeg = 0; + } + if($setPoint == 'heatSetPoint'){ + if($type == "up"){ + $heat_up[] = [$minperdeg,intval($outside)]; + } else{ + $heat_down[] = [$minperdeg,intval($outside)]; + } + } else if($setPoint == 'coolSetPoint'){ + if($type == "up"){ + $cool_up[] = [$minperdeg,intval($outside)]; + } else{ + $cool_down[] = [$minperdeg,intval($outside)]; + } + } + $startTime = -1; + } + } } - } -$return = [$heat_up, $heat_down]; +$return = [$heat_up, $heat_down, $cool_up, $cool_down]; print json_encode($return);