/
manager.php
98 lines (82 loc) · 2.43 KB
/
manager.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
// manager.php
// Called every minuite via cron. Performs the logic to decide if heating should be turned on or off
chdir(dirname(__FILE__));
include("functions.php");
$heatingActive = isHeatingActive();
// Boost
$boostExit = "cancelled";
if(isBoostActive()) {
$heatingBoost = true;
if(getBoostRemaining() <= 0) {
file_put_contents($logFile, date("d/m/y @ H:i") . " Boost Expired\n", FILE_APPEND);
$boostExit = "expired";
unlink("schedule/boost");
$heatingBoost = false;
}
}
else {
$heatingBoost = false;
}
// Timer
$now = date("N")-1 . "-" . date("G") . "-" . floor(date("i")/15)*15;
if(file_exists("schedule/" . $now)) {
$heating = true;
}
else {
$heating = false;
}
// Weather
$tempNow = getTemp();
$tempCold = getTempCold();
if($tempNow <= $tempCold) {
$weatherCold = true;
}
else {
$weatherCold = false;
}
// Logic
if($heatingBoost) {
if(!$heatingActive) {
file_put_contents($gpioFile, $gpioOn);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating On (Boost Active)\n", FILE_APPEND);
}
exit();
}
if($heating && $weatherCold) {
if(!$heatingActive) {
file_put_contents($gpioFile, $gpioOn);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating On (Timer active & temp below $tempCold C)\n", FILE_APPEND);
}
exit();
}
if(!$weatherCold && !$heating) {
if($heatingActive) {
file_put_contents($gpioFile, $gpioOff);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating Off (Timer inactive & temp above $tempCold C)\n", FILE_APPEND);
}
exit();
}
if($weatherCold && !$heating) {
if($heatingActive) {
file_put_contents($gpioFile, $gpioOff);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating Off (Timer inactive)\n", FILE_APPEND);
}
exit();
}
if(!$weatherCold && $heating) {
if($heatingActive) {
file_put_contents($gpioFile, $gpioOff);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating Off (Temp above $tempCold C)\n", FILE_APPEND);
}
exit();
}
if(!$heatingBoost) { // not sure if this ever gets triggered?
if($heatingActive) {
file_put_contents($gpioFile, $gpioOff);
file_put_contents($logFile, date("d/m/y @ H:i") . " Heating Off (Boost $boostExit)\n", FILE_APPEND);
}
exit();
}
file_put_contents($logFile, date("d/m/y @ H:i") . "ERROR: We shouldn't get here!... heatingboost=$heatingBoost / heatingActive=$heatingActive / weatherCold=$weatherCold / heating=$heating ", FILE_APPEND);
?>