Tue, 02 Sep 2014 14:10:37 +0200
Profile progress logging now also shows the percentage done. The DEVICE PUT command logs all changed values.
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
1 | <?php |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
2 | /***************************************************************************** |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
3 | * Copyright (C) 2014 |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
4 | * |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
5 | * Michiel Broek <mbroek at mbse dot eu> |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
6 | * |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
7 | * This file is part of ThermFerm |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
8 | * |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
9 | * This is free software; you can redistribute it and/or modify it |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
10 | * under the terms of the GNU General Public License as published by the |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
11 | * Free Software Foundation; either version 2, or (at your option) any |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
12 | * later version. |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
13 | * |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
14 | * ThermFerm is distributed in the hope that it will be useful, but |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
15 | * WITHOUT ANY WARRANTY; without even the implied warranty of |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
17 | * General Public License for more details. |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
18 | * |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
19 | * You should have received a copy of the GNU General Public License |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
20 | * along with ThermFerm; see the file COPYING. If not, write to the Free |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
21 | * Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
22 | *****************************************************************************/ |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
23 | |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
24 | require_once('utilities.php'); |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
25 | |
174 | 26 | /* |
27 | * $arr contains the complete reply of the LIST BUS command | |
28 | */ | |
196 | 29 | $answer = send_cmd("DEVICE LIST"); |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
30 | $arr = explode("\r\n", $answer); |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
31 | |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
32 | |
174 | 33 | if (isset($_GET['action'])) { |
34 | switch ($_GET['action']) { | |
35 | case 'edit': device_edit(); | |
36 | break; | |
37 | default: break; | |
38 | } | |
39 | } elseif (isset($_POST['action'])) { | |
40 | switch ($_POST['action']) { | |
41 | case 'testdata': testdata(); | |
42 | break; | |
43 | default: break; | |
44 | } | |
45 | } else { | |
46 | device_list(); | |
47 | } | |
48 | ||
49 | exit; | |
50 | ||
51 | /**************************************************************************** | |
52 | * | |
53 | */ | |
54 | ||
55 | ||
56 | /* | |
57 | * Device add | |
58 | * | |
252
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
59 | * @param string $_POST['Type'] The device type |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
60 | * @param string $_POST['key'] The pressed key |
174 | 61 | */ |
62 | function device_add() { | |
252
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
63 | if ($_POST['key'] == 'Add') |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
64 | send_cmd("DEVICE ADD ".$_POST['Type']); |
174 | 65 | unset($_POST['UUID']); |
66 | unset($_POST['Name']); | |
67 | unset($_POST['key']); | |
68 | unset($_POST['command']); | |
69 | load('devices.php'); | |
70 | } | |
71 | ||
72 | ||
73 | ||
74 | /* | |
75 | * Device update | |
76 | * | |
77 | * @param string $_POST['UUID'] The device UUID | |
78 | * @param string $_POST['Type'] The device Type | |
79 | * @param string $_POST['Direction'] The device IO Direction | |
80 | * @param string $_POST['Value'] The device value | |
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
81 | * @param string $_POST['Offset'] The device offset |
174 | 82 | * @param string $_POST['Present'] The device Present state |
83 | * @param string $_POST['Address'] The device Address | |
84 | * @param string $_POST['Subdevice'] The device Subaddress | |
85 | * @param string $_POST['Gpiopin'] The device GPIO pin | |
86 | * @param string $_POST['Description'] The device Description | |
87 | * @param string $_POST['Comment'] The device Comment | |
88 | * @param string $_POST['key'] The button pressed. | |
89 | */ | |
90 | function device_update() { | |
91 | /* | |
92 | * Build the update command | |
93 | */ | |
94 | if ($_POST['key'] == 'Delete') { | |
196 | 95 | send_cmd("DEVICE DEL ".$_POST['UUID']); |
174 | 96 | } |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
97 | |
174 | 98 | if ($_POST['key'] == 'Save') { |
252
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
99 | $cmd = array("DEVICE PUT ".$_POST['UUID']); |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
100 | $cmd[] = "TYPE,".$_POST['Type']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
101 | $cmd[] = "DIRECTION,".$_POST['Direction']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
102 | $cmd[] = "VALUE,".$_POST['Value']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
103 | $cmd[] = "OFFSET,".$_POST['Offset']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
104 | $cmd[] = "PRESENT,".$_POST['Present']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
105 | $cmd[] = "ADDRESS,".$_POST['Address']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
106 | $cmd[] = "SUBDEVICE,".$_POST['Subdevice']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
107 | $cmd[] = "GPIOPIN,".$_POST['Gpiopin']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
108 | $cmd[] = "DESCRIPTION,".$_POST['Description']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
109 | $cmd[] = "COMMENT,".$_POST['Comment']; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
110 | $cmd[] = "."; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
111 | send_array($cmd); |
174 | 112 | } |
113 | ||
114 | unset($_POST['UUID']); | |
115 | unset($_POST['Type']); | |
116 | unset($_POST['Direction']); | |
117 | unset($_POST['Value']); | |
118 | unset($_POST['Present']); | |
119 | unset($_POST['Address']); | |
120 | unset($_POST['Subdevice']); | |
121 | unset($_POST['Gpiopin']); | |
122 | unset($_POST['Description']); | |
123 | unset($_POST['Comment']); | |
124 | unset($_POST['key']); | |
125 | unset($_POST['command']); | |
126 | load('devices.php'); | |
127 | } | |
128 | ||
129 | ||
130 | ||
131 | /* | |
132 | * Test input of a modified or new device. | |
133 | * | |
134 | * @param string $_POST['UUID'] Unique record UUID | |
135 | * @param string $_POST['Type'] Device Type | |
136 | * @param string $_POST['Direction'] | |
137 | * @param string $_POST['Value'] | |
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
138 | * @param string $_POST['Offset'] |
174 | 139 | * @param string $_POST['Present'] |
140 | * @param string $_POST['Address'] | |
141 | * @param string $_POST['Subdevice'] | |
142 | * @param string $_POST['Gpiopin'] | |
143 | * @param string $_POST['Description'] | |
144 | * @param string $_POST['Comment'] | |
145 | * @param string $_POST['key'] Key choice, Save or Cancel | |
146 | * @param string $_POST['command'] Command used, 'add' or 'update' | |
147 | * | |
148 | * Return: 0 = Ok | |
149 | * 1 = Missing data | |
150 | * 2 = Address field too short | |
151 | * 3 = Address/Subdevice already in use | |
152 | * 4 = Description field too short | |
153 | * 5 = Comment field too short | |
154 | * 99 = Cancel key | |
155 | */ | |
156 | function test_thedata() { | |
157 | ||
158 | global $arr; | |
159 | ||
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
160 | if (isset($_POST['UUID']) && isset($_POST['Type']) && isset($_POST['Direction']) && isset($_POST['Value']) && isset($_POST['Offset']) && |
174 | 161 | isset($_POST['Present']) && isset($_POST['Address']) && isset($_POST['Subdevice']) && isset($_POST['Gpiopin']) && |
162 | isset($_POST['Description']) && isset($_POST['Comment']) && isset($_POST['key']) && isset($_POST['command'])) { | |
163 | ||
164 | if ($_POST['key'] == 'Cancel') | |
165 | return 99; | |
166 | ||
167 | if (strlen($_POST['Address']) < 2) | |
168 | return 2; | |
169 | ||
170 | if (startsWith($arr[0], "212")) { | |
171 | $j = 1; | |
172 | while (1) { | |
173 | if (strcmp($arr[$j], ".") == 0) | |
174 | break; | |
175 | $f = explode(",", $arr[$j]); | |
176 | if (strcmp($f[0], $_POST['UUID']) && ($f[1] == $_POST['Address']) && ($f[2] == $_POST['Subdevice'])) { | |
177 | return 3; | |
178 | } | |
179 | $j++; | |
180 | } | |
181 | } | |
182 | ||
183 | if (strlen($_POST['Description']) < 2) | |
184 | return 4; | |
185 | ||
186 | if (strlen($_POST['Comment']) < 2) | |
187 | return 5; | |
188 | ||
189 | } else { | |
190 | return 1; | |
191 | } | |
192 | ||
193 | return 0; | |
194 | } | |
195 | ||
196 | ||
197 | ||
198 | /* | |
199 | * Test result from edit screen and do next action | |
200 | */ | |
201 | function testdata() { | |
202 | ||
203 | $result = test_thedata(); | |
204 | $error = ''; | |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
205 | |
174 | 206 | switch ($result) { |
207 | case 0: if ($_POST['command'] == 'add') { | |
208 | device_add(); | |
209 | return; | |
210 | } else if ($_POST['command'] == 'update') { | |
211 | device_update(); | |
212 | return; | |
213 | } | |
214 | break; | |
215 | case 1: $error = 'Missing data'; | |
216 | break; | |
217 | case 2: $error = 'The Address is too short'; | |
218 | break; | |
219 | case 3: $error = 'The Address + Subdevice is already in use, choose another one'; | |
220 | break; | |
221 | case 4: $error = 'The Description is too short'; | |
222 | break; | |
223 | case 5: $error = 'The Comment is too short'; | |
224 | break; | |
225 | case 99: | |
226 | load('devices.php'); | |
227 | break; | |
228 | } | |
229 | ||
230 | if ($_POST['command'] == 'add') { | |
231 | $heading = 'ThermFerm - Add Device'; | |
232 | } else { | |
233 | $heading = 'ThermFerm - Edit Device'; | |
234 | } | |
235 | ||
236 | edit_screen($_POST['UUID'], $_POST['command'], $heading, $error); | |
237 | } | |
238 | ||
239 | ||
240 | ||
241 | /* | |
242 | * Unit edit screen. Used by unit_edit(), unit_add() and testdata() | |
243 | * | |
244 | * @param string $UUID The record UUID (fixed). | |
245 | * @param string $command 'add' or 'update' | |
246 | * @param string $heading Page heading title. | |
247 | * @Param string $error_message Blank or previous error. | |
248 | */ | |
249 | function edit_screen($UUID, $command, $heading, $error_message) { | |
250 | ||
196 | 251 | $answer = send_cmd("DEVICE GET ".$UUID); |
174 | 252 | $reply = explode("\r\n", $answer); |
253 | ||
254 | $outstr = build_header($heading); | |
255 | $outstr .= ' <div id="errors">'.PHP_EOL; | |
256 | $outstr .= ' '.$error_message.PHP_EOL; | |
257 | $outstr .= ' </div> <!-- errors -->'.PHP_EOL; | |
258 | $outstr .= ' <div id="etable">'.PHP_EOL; | |
259 | $outstr .= ' <form method="POST" action="devices.php">'.PHP_EOL; | |
260 | $outstr .= ' <table class="editor">'.PHP_EOL; | |
261 | ||
262 | if (startsWith($reply[0], "213")) { | |
263 | $j = 1; | |
264 | while (1) { | |
265 | if (strcmp($reply[$j], ".") == 0) | |
266 | break; | |
267 | $f = explode(",", $reply[$j]); | |
268 | if ($f[0] == "TYPE") { | |
269 | $type = $f[1]; | |
270 | /* | |
271 | * Only allow certain types to edit. Auto detected hardware cannot be changed. | |
272 | */ | |
273 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
274 | $outstr .= ' <td class="editname">Device Type</td>'.PHP_EOL; | |
275 | if (($type == "W1") || ($type == "GPIO")) | |
276 | $outstr .= ' <td class="editfield"><input type="hidden" name="Type" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
277 | else | |
278 | $outstr .= ' <td class="editfield"><input type="text" name="Type" size="50" value="'.$f[1].'"></td>'.PHP_EOL; | |
279 | $outstr .= ' </tr>'.PHP_EOL; | |
280 | } | |
281 | if ($f[0] == "DIRECTION") { | |
282 | $direction = $f[1]; | |
283 | /* | |
284 | * Only devices that cannot auto detect can be changed. | |
285 | */ | |
286 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
287 | $outstr .= ' <td class="editname">IO Direction and mode</td>'.PHP_EOL; | |
288 | if ($type == "W1") | |
289 | $outstr .= ' <td class="editfield"><input type="hidden" name="Direction" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
290 | else { | |
291 | $outstr .= ' <td class="editfield"><select name="Direction">'.PHP_EOL; | |
292 | if ($type == "GPIO") { | |
293 | $se = ($f[1] == "UNDEF")?" selected":""; | |
294 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; | |
295 | $se = ($f[1] == "IN_BIN")?" selected":""; | |
296 | $outstr .= ' <option value="IN_BIN"'.$se.'>Binary input</option>'.PHP_EOL; | |
297 | $se = ($f[1] == "OUT_BIN")?" selected":""; | |
298 | $outstr .= ' <option value="OUT_BIN"'.$se.'>Binary output</option>'.PHP_EOL; | |
299 | $se = ($f[1] == "OUT_PWM")?" selected":""; | |
300 | $outstr .= ' <option value="OUT_PWM"'.$se.'>PWM output</option>'.PHP_EOL; | |
301 | } | |
302 | if ($type == "RC433") { | |
303 | $se = ($f[1] == "UNDEF")?" selected":""; | |
304 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; | |
305 | $se = ($f[1] == "OUT_BIN")?" selected":""; | |
306 | $outstr .= ' <option value="OUT_BIN"'.$se.'>Binary output</option>'.PHP_EOL; | |
307 | } | |
308 | if ($type == "DHT") { | |
309 | $se = ($f[1] == "UNDEF")?" selected":""; | |
310 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; | |
311 | $se = ($f[1] == "IN_ANALOG")?" selected":""; | |
312 | $outstr .= ' <option value="IN_ANALOG"'.$se.'>Analog input</option>'.PHP_EOL; | |
313 | } | |
252
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
314 | if ($type == "I2C") { |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
315 | $se = ($f[1] == "UNDEF")?" selected":""; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
316 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
317 | } |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
318 | if ($type == "SPI") { |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
319 | $se = ($f[1] == "UNDEF")?" selected":""; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
320 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; |
2197976f2bc5
Device editor uses array commands
Michiel Broek <mbroek@mbse.eu>
parents:
232
diff
changeset
|
321 | } |
174 | 322 | $outstr .= ' </select></td>'.PHP_EOL; |
323 | } | |
324 | $outstr .= ' </tr>'.PHP_EOL; | |
325 | } | |
326 | if ($f[0] == "VALUE") { | |
327 | /* | |
328 | * Only output can be changed | |
329 | */ | |
330 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
331 | $outstr .= ' <td class="editname">Value</td>'.PHP_EOL; | |
332 | if (($direction == "OUT_BIN") || ($direction == "OUT_ANALOG") || ($direction == "OUT_PWM")) | |
333 | $outstr .= ' <td class="editfield"><input type="text" name="Value" size="50" value="'.$f[1].'"></td>'.PHP_EOL; | |
334 | else | |
335 | $outstr .= ' <td class="editfield"><input type="hidden" name="Value" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
336 | $outstr .= ' </tr>'.PHP_EOL; | |
337 | } | |
209
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
338 | if ($f[0] == "OFFSET") { |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
339 | $outstr .= ' <tr class="editor">'.PHP_EOL; |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
340 | $outstr .= ' <td class="editname">Value</td>'.PHP_EOL; |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
341 | if ($direction == "IN_ANALOG") |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
342 | $outstr .= ' <td class="editfield"><input type="text" name="Offset" size="50" value="'.$f[1].'"></td>'.PHP_EOL; |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
343 | else |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
344 | $outstr .= ' <td class="editfield"><input type="hidden" name="Offset" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
345 | $outstr .= ' </tr>'.PHP_EOL; |
c5b1dfd83e81
Added offset value for sensor that need it
Michiel Broek <mbroek@mbse.eu>
parents:
196
diff
changeset
|
346 | } |
174 | 347 | if ($f[0] == "PRESENT") { |
348 | /* | |
349 | * Only devices that cannot auto detect can be changed. | |
350 | */ | |
351 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
352 | $outstr .= ' <td class="editname">Device Present</td>'.PHP_EOL; | |
353 | if (($type == "W1") || ($type == "GPIO")) | |
354 | $outstr .= ' <td class="editfield"><input type="hidden" name="Present" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
355 | else { | |
356 | $outstr .= ' <td class="editfield"><select name="Present">'.PHP_EOL; | |
357 | $se = ($f[1] == "UNDEF")?" selected":""; | |
358 | $outstr .= ' <option value="UNDEF"'.$se.'>Undefined</option>'.PHP_EOL; | |
359 | $se = ($f[1] == "NO")?" selected":""; | |
360 | $outstr .= ' <option value="NO"'.$se.'>Not present</option>'.PHP_EOL; | |
361 | $se = ($f[1] == "YES")?" selected":""; | |
362 | $outstr .= ' <option value="YES"'.$se.'>Present and Ok</option>'.PHP_EOL; | |
363 | $se = ($f[1] == "ERROR")?" selected":""; | |
364 | $outstr .= ' <option value="ERROR"'.$se.'>Present and Error</option>'.PHP_EOL; | |
365 | $outstr .= ' </select></td>'.PHP_EOL; | |
366 | } | |
367 | $outstr .= ' </tr>'.PHP_EOL; | |
368 | } | |
369 | if ($f[0] == "ADDRESS") { | |
370 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
371 | $outstr .= ' <td class="editname">Address</td>'.PHP_EOL; | |
372 | if (($type == "W1") || ($type == "GPIO")) | |
373 | $outstr .= ' <td class="editfield"><input type="hidden" name="Address" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
374 | else | |
375 | $outstr .= ' <td class="editfield"><input type="text" name="Address" size="50" value="'.$f[1].'"></td>'.PHP_EOL; | |
376 | $outstr .= ' </tr>'.PHP_EOL; | |
377 | } | |
378 | if ($f[0] == "SUBDEVICE") { | |
379 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
380 | $outstr .= ' <td class="editname">Subdevice</td>'.PHP_EOL; | |
381 | if (($type == "W1") || ($type == "GPIO")) | |
382 | $outstr .= ' <td class="editfield"><input type="hidden" name="Subdevice" value="'.$f[1].'">'.$f[1].'</td>'.PHP_EOL; | |
383 | else | |
384 | $outstr .= ' <td class="editfield"><input type="text" name="Subdevice" size="5" value="'.$f[1].'"></td>'.PHP_EOL; | |
385 | $outstr .= ' </tr>'.PHP_EOL; | |
386 | } | |
387 | if ($f[0] == "GPIOPIN") { | |
388 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
389 | $outstr .= ' <td class="editname">GPIO pin</td>'.PHP_EOL; | |
390 | $outstr .= ' <td class="editfield"><input type="text" name="Gpiopin" size="5" value="'.$f[1].'"></td>'.PHP_EOL; | |
391 | $outstr .= ' </tr>'.PHP_EOL; | |
392 | } | |
393 | if ($f[0] == "DESCRIPTION") { | |
394 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
395 | $outstr .= ' <td class="editname">Description</td>'.PHP_EOL; | |
396 | $outstr .= ' <td class="editfield"><input type="text" name="Description" size="50" value="'.$f[1].'"></td>'.PHP_EOL; | |
397 | $outstr .= ' </tr>'.PHP_EOL; | |
398 | } | |
399 | if ($f[0] == "COMMENT") { | |
400 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
401 | $outstr .= ' <td class="editname">Comment</td>'.PHP_EOL; | |
402 | $outstr .= ' <td class="editfield"><input type="text" name="Comment" size="50" value="'.$f[1].'"></td>'.PHP_EOL; | |
403 | $outstr .= ' </tr>'.PHP_EOL; | |
404 | } | |
405 | $j++; | |
406 | } | |
407 | } | |
408 | ||
409 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
410 | $outstr .= ' <td class="editname"><input type="submit" value="Save" name="key"></td>'.PHP_EOL; | |
411 | $outstr .= ' <td class="editfield"><input type="submit" value="Cancel" name="key">'; | |
412 | $outstr .= '<input type="submit" value="Delete" name="key" style="margin-left: 100px;">'; | |
413 | $outstr .= '<input type="hidden" value="testdata" name="action">'; | |
414 | $outstr .= '<input type="hidden" value="'.$command.'" name="command">'; | |
415 | $outstr .= '<input type="hidden" value="'.$UUID.'" name="UUID"></td>'.PHP_EOL; | |
416 | $outstr .= ' </tr>'.PHP_EOL; | |
417 | $outstr .= ' </table>'.PHP_EOL; | |
418 | $outstr .= ' </form>'.PHP_EOL; | |
419 | $outstr .= ' </div> <!-- etable -->'.PHP_EOL; | |
420 | $outstr .= build_footer(); | |
421 | echo $outstr; | |
422 | } | |
423 | ||
424 | ||
425 | ||
426 | /* | |
427 | * Edit a Device. Fetches the record data and shows the edit screen. | |
428 | * | |
429 | * @param string $_GET['action'] Must be 'edit'. | |
430 | * @param string $_GET['UUID'] The UUID of the Unit. | |
431 | */ | |
432 | function device_edit() { | |
433 | if ($_GET['action'] == 'edit') { | |
434 | edit_screen($_GET['UUID'], 'update', 'ThermFerm - Edit Device', ''); | |
435 | return; | |
436 | } else { | |
437 | load('devices.php'); | |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
438 | } |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
439 | } |
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
440 | |
174 | 441 | |
442 | ||
443 | /* | |
444 | * @link edit device | |
445 | * @link add device | |
446 | */ | |
447 | function device_list() { | |
448 | global $arr; | |
449 | ||
450 | $outstr = build_header("ThermFerm - Devices Setup"); | |
451 | $outstr .= ' <div id="errors">'.PHP_EOL; | |
452 | $outstr .= ' </div> <!-- errors -->'.PHP_EOL; | |
453 | $outstr .= ' <div id="etable">'.PHP_EOL; | |
454 | $outstr .= ' <table class="setup">'.PHP_EOL; | |
455 | $outstr .= ' <tr class="trhead">'.PHP_EOL; | |
456 | $outstr .= ' <td class="setup" style="width: 300px;">UUID</td>'.PHP_EOL; | |
457 | $outstr .= ' <td class="setup" style="width: 120px;">Address</td>'.PHP_EOL; | |
458 | $outstr .= ' <td class="setup" style="width: 30px;">Sub</td>'.PHP_EOL; | |
459 | $outstr .= ' <td class="setup" style="width: 30px;">Ref</td>'.PHP_EOL; | |
460 | $outstr .= ' <td class="setup" style="width: 300px;">Cmt</td>'.PHP_EOL; | |
461 | $outstr .= ' <td class="setup" style="width: 35px;">Edit</td>'.PHP_EOL; | |
462 | $outstr .= ' </tr>'.PHP_EOL; | |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
463 | |
174 | 464 | if (startsWith($arr[0], "212")) { |
465 | $j = 1; | |
466 | while (1) { | |
467 | if (strcmp($arr[$j], ".") == 0) | |
468 | break; | |
469 | $f = explode(",", $arr[$j]); | |
470 | $outstr .= ' <tr class="setup">'.PHP_EOL; | |
471 | $outstr .= ' <td class="setup">'.$f[0].'</td>'.PHP_EOL; | |
472 | $outstr .= ' <td class="setup">'.$f[1].'</td>'.PHP_EOL; | |
473 | $outstr .= ' <td class="setup">'.$f[2].'</td>'.PHP_EOL; | |
474 | $outstr .= ' <td class="setup">'.$f[3].'</td>'.PHP_EOL; | |
475 | $outstr .= ' <td class="setup">'.$f[4].'</td>'.PHP_EOL; | |
476 | if ($f[3] == 0) | |
477 | $outstr .= ' <td class="setup"><a href="devices.php?action=edit&UUID='.$f[0].'">Edit</a></td>'.PHP_EOL; | |
478 | else | |
479 | $outstr .= ' <td class="setup">Busy</td>'.PHP_EOL; | |
480 | $outstr .= ' </tr>'.PHP_EOL; | |
481 | $j++; | |
482 | } | |
483 | } | |
484 | ||
485 | $outstr .= ' </table>'.PHP_EOL; | |
486 | $outstr .= ' </div> <!-- etable -->'.PHP_EOL; | |
134
f05601490415
Redesigned the web interface, one single app is too slow. The main dashboard will be a shiny ajax driven page, the setup pages will be simple and php only. Keep It Simple, Stupid.
Michiel Broek <mbroek@mbse.eu>
parents:
diff
changeset
|
487 | |
174 | 488 | $outstr .= ' <div id="atable">'.PHP_EOL; |
489 | $outstr .= ' <form method="POST" action="devices.php">'.PHP_EOL; | |
490 | $outstr .= ' <table class="editor">'.PHP_EOL; | |
491 | $outstr .= ' <tr class="trhead"><td colspan="3">Add new Device</td></tr>'.PHP_EOL; | |
492 | $outstr .= ' <tr class="editor">'.PHP_EOL; | |
493 | $outstr .= ' <td class="editname">Select Device type</td>'.PHP_EOL; | |
494 | $outstr .= ' <td class="editfield">'.PHP_EOL; | |
495 | $outstr .= ' <select name="Type">'.PHP_EOL; | |
496 | $outstr .= ' <option value="NA">Not Available</option>'.PHP_EOL; | |
497 | $outstr .= ' <option value="RC433">433 Mhz Radio Controller</option>'.PHP_EOL; | |
498 | $outstr .= ' <option value="DHT">DHTnn type sensor</option>'.PHP_EOL; | |
499 | $outstr .= ' <option value="I2C">I2C bus device</option>'.PHP_EOL; | |
500 | $outstr .= ' <option value="SPI">SPI bus device</option>'.PHP_EOL; | |
501 | $outstr .= ' </select>'.PHP_EOL; | |
502 | $outstr .= ' </td>'.PHP_EOL; | |
503 | $outstr .= ' <td class="editsub"><input type="submit" value="Add" name="key"></td>'.PHP_EOL; | |
504 | $outstr .= '<input type="hidden" value="testdata" name="action">'; | |
505 | $outstr .= '<input type="hidden" value="add" name="command">'; | |
506 | $outstr .= '<input type="hidden" value="00000000-0000-0000-0000-000000000000" name="UUID">'; | |
507 | $outstr .= '<input type="hidden" value="UNDEF" name="Direction">'; | |
508 | $outstr .= '<input type="hidden" value="0" name="Value">'; | |
232 | 509 | $outstr .= '<input type="hidden" value="0" name="Offset">'; |
174 | 510 | $outstr .= '<input type="hidden" value="UNDEF" name="Present">'; |
511 | $outstr .= '<input type="hidden" value="address unknown" name="Address">'; | |
512 | $outstr .= '<input type="hidden" value="0" name="Subdevice">'; | |
513 | $outstr .= '<input type="hidden" value="-1" name="Gpiopin">'; | |
514 | $outstr .= '<input type="hidden" value="Describe me" name="Description">'; | |
515 | $outstr .= '<input type="hidden" value="Comment me" name="Comment">'; | |
516 | $outstr .= ' </tr>'.PHP_EOL; | |
517 | $outstr .= ' </table>'.PHP_EOL; | |
518 | $outstr .= ' </form>'.PHP_EOL; | |
519 | $outstr .= ' </div> <!-- atable -->'.PHP_EOL; | |
520 | ||
521 | $outstr .= build_footer(); | |
522 | ||
523 | echo $outstr; | |
524 | } | |
525 |