-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate.php
93 lines (73 loc) · 3.1 KB
/
update.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
<?php
require_once dirname(__FILE__).'/classes/authentication.php';
$authentication = new Authentication();
require_once dirname(__FILE__).'/classes/request-parser.php';
$requestParser = new RequestParser();
$jsonBody = $authentication->getRequestJSON(file_get_contents('php://input'));
$authentication->authenticateRequest($jsonBody);
$requestParser->requestBody = $jsonBody;
$requestParser->parseRequest();
require_once dirname(__FILE__).'/classes/nature.php';
$nature = new Nature();
require_once dirname(__FILE__).'/classes/htd.php';
$htd = new HTD();
require_once dirname(__FILE__).'/classes/myq.php';
$myQ = new MyQ();
require_once dirname(__FILE__).'/classes/smartthings.php';
$smartThings = new SmartThings();
require_once dirname(__FILE__).'/classes/nest.php';
$nest = new Nest();
require_once dirname(__FILE__).'/classes/pushbullet.php';
$pushbullet = new Pushbullet();
if (!is_file("control-files/$requestParser->location.json"))
{
touch("control-files/$requestParser->location.json");
}
$locationTriggersEnabled = true;
$firstPersonArrived = false;
$lastPersonDeparted = false;
$allPeople = json_decode(file_get_contents('control-files/people.json'), true);
if (!in_array($requestParser->person, $allPeople))
{
throw new Exception("Person {$requestParser->person} not found");
}
$locationPeople = json_decode(file_get_contents("control-files/$requestParser->location.json"), true);
if ($requestParser->status == 'arrived' && !in_array($requestParser->person, $locationPeople))
{
if (empty($locationPeople)) $firstPersonArrived = true;
$locationPeople[] = $requestParser->person;
file_put_contents("control-files/$requestParser->location.json", json_encode($locationPeople));
}
else if ($requestParser->status == 'departed' && in_array($requestParser->person, $locationPeople))
{
unset($locationPeople[array_search($requestParser->person, $locationPeople, true)]);
file_put_contents("control-files/$requestParser->location.json", json_encode($locationPeople));
if (empty($locationPeople)) $lastPersonDeparted = true;
}
if ($locationTriggersEnabled)
{
if ($requestParser->location == 'home' && $requestParser->status == 'arrived') {
$currentTemperature = $nest->getTemperature();
$currentHumidity = $nest->getHumidity();
if ($currentHumidity != '' && ($currentHumidity < 35 || $currentHumidity > 60)) {
$deviceName = ucwords(strtolower($requestParser->person))." - Phone";
$noteBody = "Temperature: ".round($currentTemperature, 1)."° Humidity: $currentHumidity%";
$pushbullet->pushNote($deviceName, "Humidity Alert", $noteBody);
}
}
if ($requestParser->location == 'home' && $firstPersonArrived)
{
$dayOrNight = $nature->dayOrNight();
if ($dayOrNight == 'night')
{
$smartThings->setSwitchPowerState('Kitchen Main Light', true);
}
}
if ($requestParser->location == 'home' && $lastPersonDeparted)
{
$smartThings->setAllSwitchesPowerState(false, array('Master Main Light'));
$htd->turnOffAllSpeakers();
$myQ->closeGarageDoor('Main Door');
}
}
?>