· 6 years ago · Jan 17, 2020, 12:24 AM
1<?php
2/*// ==================================================
3* API For Receiving Data From Local Nodes
4* Author: andrew@ugm.ac.id
5* Agricultural Machinery and Production Systems Design
6* Kyushu University, JAPAN
7* Modified: 15 February 2015
8=======================================================*/
9
10// include configuration database
11include("config.php");
12
13// token to connect to database
14$key = $_GET['K'];
15$D = $_GET['D'];
16$T = $_GET['T'];
17$C0 = $_GET['C0'];
18$C1 = $_GET['C1'];
19$C2 = $_GET['C2'];
20$C3 = $_GET['C3'];
21$C4 = $_GET['C4'];
22$C5 = $_GET['C5'];
23$C6 = $_GET['C6'];
24$C7 = $_GET['C7'];
25$C8 = $_GET['C8'];
26$C9 = $_GET['C9'];
27$S1 = $_GET['S1']; // status
28$L1 = $_GET['L1']; // lower limit
29$S2 = $_GET['S2']; // status upper limit
30$L2 = $_GET['L2']; // Upper limit
31$N = $_GET['N']; // duration of actuation
32$R = $_GET['R']; // flag for offline records
33
34
35// node time {date+time}
36$rawNodeTime = $D." ".$T;
37
38// conversion of digital sensor SHTX
39$C0 = $C0*0.01;
40$C1 = $C1*0.01;
41
42
43// check datetime range
44$maxTime = date('2020-12-12 60:60:60');
45$minTime = date('2000-01-01 00:00:00');
46
47// if nodeTime is abnormal, give it current datetime based on timezone
48if( ($rawNodeTime < $minTime) || ($rawNodeTime > $maxTime) ) {
49 // need to check the timezone
50 if(!empty($key) && cKey($key)) {
51 $q = mysql_query('SELECT * FROM `node` WHERE `key`=\''.$key.'\'');
52 $r = mysql_fetch_array($q);
53 $tz = $r['timezone'];
54
55 // PRINT DATE AND TIME
56 $dtm = new DateTime('now', new DateTimeZone($tz));
57 $nodeTime = $dtm->format('Y-m-d H:i:s');
58 //echo "now:".$nodeTime."\n";
59 }
60
61} else {
62 // appropriate date and time
63 $nodeTime = $rawNodeTime;
64}
65
66
67// if key has been checked, insert into database
68if(checkKey()) {
69 // insert data to database
70 $query =
71 'INSERT INTO `loger` (
72 `id`,
73 `time`,
74 `key`,
75 `C0`,
76 `C1`,
77 `C2`,
78 `C3`,
79 `C4`,
80 `C5`,
81 `C6`,
82 `C7`,
83 `C8`,
84 `C9`,
85 `lim`,
86 `lim2`,
87 `status`,
88 `status2`,
89 `dur_act1`,
90 `offline`)
91 VALUES (
92 NULL,
93 \''.$nodeTime.'\',
94 \''.$key.'\',
95 \''.$C0.'\',
96 \''.$C1.'\',
97 \''.$C2.'\',
98 \''.$C3.'\',
99 \''.$C4.'\',
100 \''.$C5.'\',
101 \''.$C6.'\',
102 \''.$C7.'\',
103 \''.$C8.'\',
104 \''.$C9.'\',
105 \''.$L1.'\',
106 \''.$L2.'\',
107 \''.$S1.'\',
108 \''.$S2.'\',
109 \''.$N.'\',
110 \''.$R.'\')';
111
112 mysql_query($query) or die("query error");
113 // print information to arduino
114 echo "R1\n";
115 echo "DATA RECEIVED..\n";
116 echo "C0: $C0\n";
117 echo "C1: $C1\n";
118 echo "C2: $C2\n";
119 echo "C3: $C3\n";
120 echo "C4: $C4\n";
121 echo "C5: $C5\n";
122 echo "C6: $C6\n";
123 echo "C7: $C7\n";
124 echo "L1: $L1\n";
125 echo "L2: $L2\n";
126 echo "S1: $S1\n";
127 echo "S2: $S2\n";
128 echo "T: $nodeTime\n";
129 echo "R: $R\n";
130 echo "SUCCESS\n";
131}
132else {
133 //echo "Failed\n";
134 echo "R0\n";
135}
136
137
138// CHECKING SECURITY KEY
139function cKey($kc) {
140 $qrc = mysql_query('SELECT `key` FROM `node` WHERE `key` = \''.$kc.'\'');
141 if(mysql_num_rows($qrc) > 0) {
142 // print succes auth information
143 //echo "Auth: ok\n";
144 return true;
145 } else {
146 // print failed info
147 //echo "auth: failed\n";
148 return false;
149 }
150}
151
152
153// CHECKING KEY AFTER EXECUTION
154function checkKey() {
155 // server information
156 $host = "agrieye.staff.ugm.ac.id";
157
158 // submitted information from arduino
159 $keyCheck = $_GET['K'];
160 //$qrc = mysql_query('SELECT `key` FROM `config` WHERE `key` = \''.$keyCheck.'\'');
161 $qrc = mysql_query('SELECT `key` FROM `node` WHERE `key` = \''.$keyCheck.'\'');
162
163 //$row= mysql_fetch_array($query);
164 if(mysql_num_rows($qrc) > 0) {
165 // print succes auth information
166 //echo "Auth: ok\n";
167 //echo "Host:".$host."\n\n";
168 // key already exists
169 echo "##A1\n";
170 return true;
171 } else {
172 // print failed info
173 //echo "auth: failed\n";
174 //echo "host:".$host."\n\n";
175 // key doesnot exists
176 echo "##A0\n";
177 return false;
178 }
179}
180
181// caliberation function
182
183function smcCal($rawVal) {
184 $readMax = 203; // maxium of reading soil moisture content sensor on water
185 $smcMax = 100; // maximum % of soil moisture content
186 $finalVal = number_format(($smcMax * $rawVal)/$readMax,2,'.','');
187 return $finalVal;
188}
189
190?>