www-thermferm/units.php

changeset 175
b73490398368
parent 153
866a947b732a
child 196
4d7a96c5d1ff
equal deleted inserted replaced
174:244de612c572 175:b73490398368
27 $sock = open_socket(); 27 $sock = open_socket();
28 if ($sock == false) { 28 if ($sock == false) {
29 load('index.php'); 29 load('index.php');
30 } 30 }
31 31
32 socket_write($sock, "LIST", 4096); 32 socket_write($sock, "UNIT LIST", 4096);
33 $answer = ""; 33 $answer = "";
34 while (1) { 34 while (1) {
35 $line = socket_read($sock, 4096); 35 $line = socket_read($sock, 4096);
36 if ($line === '') 36 if ($line === '')
37 break; 37 break;
74 */ 74 */
75 function unit_add() { 75 function unit_add() {
76 76
77 if ($_POST['key'] == 'Add') { 77 if ($_POST['key'] == 'Add') {
78 78
79 $cmd = "ADD UNIT ".$_POST['Name']; 79 $cmd = "UNIT ADD ".$_POST['Name'];
80 80
81 $sock = open_socket(); 81 $sock = open_socket();
82 if ($sock != false) { 82 if ($sock != false) {
83 /* 83 /*
84 * Send command and absorb the result. 84 * Send command and absorb the result.
111 */ 111 */
112 function unit_update() { 112 function unit_update() {
113 /* 113 /*
114 * Build the update command 114 * Build the update command
115 */ 115 */
116 if ($_POST['key'] == 'Delete') 116 if ($_POST['key'] == 'Delete') {
117 $update_cmd = "DEL UNIT ".$_POST['UUID']; 117 $sock = open_socket();
118 else 118 if ($sock != false) {
119 $update_cmd = "XXXXXXX ".$_POST['UUID'].",".$_POST['Name']; 119 socket_write($sock, "UNIT DEL ".$_POST['UUID'], 4096);
120 120 /* Absorb response */
121 while (1) {
122 $line = socket_read($sock, 4096);
123 if ($line === '')
124 break;
125 }
126 socket_close($sock);
127 }
128 }
129
130 if ($_POST['key'] == 'Save') {
121 $sock = open_socket(); 131 $sock = open_socket();
122 if ($sock != false) { 132 if ($sock != false) {
123 /* 133 /*
124 * Send command and absorb the result. 134 * Send command and absorb the result.
125 */ 135 */
126 socket_write($sock, $update_cmd, 4096); 136 socket_write($sock, "UNIT PUT ".$_POST['UUID'], 4096);
137 usleep(20000);
138 socket_write($sock, "NAME,".$_POST['Name'], 4096);
139 usleep(20000);
140 socket_write($sock, "VOLUME,".$_POST['Volume'], 4096);
141 usleep(20000);
142 socket_write($sock, "AIR_ADDRESS,".$_POST['AirAddress'], 4096);
143 usleep(20000);
144 socket_write($sock, "BEER_ADDRESS,".$_POST['BeerAddress'], 4096);
145 usleep(20000);
146 socket_write($sock, "HEATER_ADDRESS,".$_POST['HeaterAddress'], 4096);
147 usleep(20000);
148 socket_write($sock, "COOLER_ADDRESS,".$_POST['CoolerAddress'], 4096);
149 usleep(20000);
150 socket_write($sock, "FAN_ADDRESS,".$_POST['FanAddress'], 4096);
151 usleep(20000);
152 socket_write($sock, "DOOR_ADDRESS,".$_POST['DoorAddress'], 4096);
153 usleep(20000);
154 socket_write($sock, "TEMP_SET_MIN,".$_POST['TempSetMin'], 4096);
155 usleep(20000);
156 socket_write($sock, "TEMP_SET_MAX,".$_POST['TempSetMax'], 4096);
157 usleep(20000);
158 socket_write($sock, "IDLE_RANGE_L,".$_POST['IdleRangeL'], 4096);
159 usleep(20000);
160 socket_write($sock, "IDLE_RANGE_H,".$_POST['IdleRangeH'], 4096);
161 usleep(20000);
162
163 socket_write($sock, ".", 4096);
127 while (1) { 164 while (1) {
128 $line = socket_read($sock, 4096); 165 $line = socket_read($sock, 4096);
129 if ($line === '') 166 if ($line === '')
130 break; 167 break;
131 } 168 }
132 socket_close($sock); 169 socket_close($sock);
133 } 170 }
171 }
134 172
135 unset($_POST['UUID']); 173 unset($_POST['UUID']);
136 unset($_POST['Name']); 174 unset($_POST['Name']);
175 unset($_POST['Volume']);
137 unset($_POST['key']); 176 unset($_POST['key']);
138 unset($_POST['command']); 177 unset($_POST['command']);
139 load('units.php'); 178 load('units.php');
140 } 179 }
141 180
157 */ 196 */
158 function test_thedata() { 197 function test_thedata() {
159 198
160 global $arr; 199 global $arr;
161 200
162 if (isset($_POST['UUID']) && isset($_POST['Name']) && isset($_POST['key']) && isset($_POST['command'])) { 201 if (isset($_POST['UUID']) && isset($_POST['Name']) && isset($_POST['Volume']) && isset($_POST['AirAddress']) &&
202 isset($_POST['BeerAddress']) && isset($_POST['HeaterAddress']) && isset($_POST['CoolerAddress']) &&
203 isset($_POST['FanAddress']) && isset($_POST['DoorAddress']) && isset($_POST['TempSetMin']) && isset($_POST['TempSetMax']) &&
204 isset($_POST['IdleRangeL']) && isset($_POST['IdleRangeH']) && isset($_POST['key']) && isset($_POST['command'])) {
163 205
164 if ($_POST['key'] == 'Cancel') 206 if ($_POST['key'] == 'Cancel')
165 return 99; 207 return 99;
166 208
167 if (strlen($_POST['Name']) < 2) 209 if (strlen($_POST['Name']) < 2)
221 $heading = 'ThermFerm - Add Unit'; 263 $heading = 'ThermFerm - Add Unit';
222 } else { 264 } else {
223 $heading = 'ThermFerm - Edit Unit'; 265 $heading = 'ThermFerm - Edit Unit';
224 } 266 }
225 267
226 edit_screen($_POST['UUID'], $_POST['Name'], $_POST['command'], $heading, $error); 268 edit_screen($_POST['UUID'], $_POST['command'], $heading, $error);
227 } 269 }
228 270
229 271
230 272
231 /* 273 /*
232 * Unit edit screen. Used by unit_edit(), unit_add() and testdata() 274 * Unit edit screen. Used by unit_edit(), unit_add() and testdata()
233 * 275 *
234 * @param string $UUID The record UUID (fixed). 276 * @param string $UUID The record UUID (fixed).
235 * @param string $Name The Unit Name.
236 * @param string $command 'add' or 'update' 277 * @param string $command 'add' or 'update'
237 * @param string $heading Page heading title. 278 * @param string $heading Page heading title.
238 * @Param string $error_message Blank or previous error. 279 * @Param string $error_message Blank or previous error.
239 */ 280 */
240 function edit_screen($UUID, $Name, $command, $heading, $error_message) { 281 function edit_screen($UUID, $command, $heading, $error_message) {
282
283 /*
284 * Get list of devices, we need it later
285 */
286 $sock = open_socket();
287 if ($sock == false) {
288 load("units.php");
289 return;
290 }
291
292 socket_write($sock, "DEVICE LIST", 4096);
293 $answer = "";
294 while (1) {
295 $line = socket_read($sock, 4096);
296 if ($line === '')
297 break;
298 $answer .= $line;
299 }
300 socket_close($sock);
301 $devices = explode("\r\n", $answer);
302
303 /*
304 * Get current unit data
305 */
306 $sock = open_socket();
307 if ($sock == false) {
308 load("units.php");
309 return;
310 }
311
312 socket_write($sock, "UNIT GET ".$UUID, 4096);
313 $answer = "";
314 while (1) {
315 $line = socket_read($sock, 4096);
316 if ($line === '')
317 break;
318 $answer .= $line;
319 }
320 socket_close($sock);
321 $reply = explode("\r\n", $answer);
241 322
242 $outstr = build_header($heading); 323 $outstr = build_header($heading);
243 $outstr .= ' <div id="errors">'.PHP_EOL; 324 $outstr .= ' <div id="errors">'.PHP_EOL;
244 $outstr .= ' '.$error_message.PHP_EOL; 325 $outstr .= ' '.$error_message.PHP_EOL;
245 $outstr .= ' </div> <!-- errors -->'.PHP_EOL; 326 $outstr .= ' </div> <!-- errors -->'.PHP_EOL;
246 $outstr .= ' <div id="etable">'.PHP_EOL; 327 $outstr .= ' <div id="etable">'.PHP_EOL;
247 $outstr .= ' <form method="POST" action="units.php">'.PHP_EOL; 328 $outstr .= ' <form method="POST" action="units.php">'.PHP_EOL;
248 $outstr .= ' <table class="editor">'.PHP_EOL; 329 $outstr .= ' <table class="editor">'.PHP_EOL;
249 $outstr .= ' <tr class="editor">'.PHP_EOL; 330
250 $outstr .= ' <td class="editname">UUID</td>'.PHP_EOL; 331 if (startsWith($reply[0], "213")) {
251 $outstr .= ' <td class="editfield">'.$UUID.'</td>'.PHP_EOL; 332 $i = 1;
252 $outstr .= ' </tr>'.PHP_EOL; 333 while (1) {
253 $outstr .= ' <tr class="editor">'.PHP_EOL; 334 if (strcmp($reply[$i], ".") == 0)
254 $outstr .= ' <td class="editname">Unit Name</td>'.PHP_EOL; 335 break;
255 $outstr .= ' <td class="editfield"><input type="text" name="Name" size="50" value="'.$Name.'"></td>'.PHP_EOL; 336 $f = explode(",", $reply[$i]);
256 $outstr .= ' </tr>'.PHP_EOL; 337
338 if ($f[0] == "NAME") {
339 $outstr .= ' <tr class="editor">'.PHP_EOL;
340 $outstr .= ' <td class="editname">Unit Name</td>'.PHP_EOL;
341 $outstr .= ' <td class="editfield"><input type="text" name="Name" size="50" value="'.$f[1].'"></td>'.PHP_EOL;
342 $outstr .= ' </tr>'.PHP_EOL;
343 }
344 if ($f[0] == "VOLUME") {
345 $outstr .= ' <tr class="editor">'.PHP_EOL;
346 $outstr .= ' <td class="editname">Unit Volume</td>'.PHP_EOL;
347 $outstr .= ' <td class="editfield"><input type="text" name="Volume" size="5" value="'.$f[1].'"></td>'.PHP_EOL;
348 $outstr .= ' </tr>'.PHP_EOL;
349 }
350 if ($f[0] == "AIR_ADDRESS") {
351 $outstr .= ' <tr class="editor">'.PHP_EOL;
352 $outstr .= ' <td class="editname">Air Sensor Address</td>'.PHP_EOL;
353 $outstr .= ' <td class="editfield"><select name="AirAddress">'.PHP_EOL;
354 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
355 if (startsWith($devices[0], "212")) {
356 $j = 1;
357 while (1) {
358 if (strcmp($devices[$j], ".") == 0)
359 break;
360 $g = explode(",", $devices[$j]);
361 if ($g[5] == "IN_ANALOG") {
362 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
363 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
364 }
365 $j++;
366 }
367 }
368 $outstr .= ' </select></td>'.PHP_EOL;
369 $outstr .= ' </tr>'.PHP_EOL;
370 }
371 if ($f[0] == "BEER_ADDRESS") {
372 $outstr .= ' <tr class="editor">'.PHP_EOL;
373 $outstr .= ' <td class="editname">Beer Sensor Address</td>'.PHP_EOL;
374 $outstr .= ' <td class="editfield"><select name="BeerAddress">'.PHP_EOL;
375 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
376 if (startsWith($devices[0], "212")) {
377 $j = 1;
378 while (1) {
379 if (strcmp($devices[$j], ".") == 0)
380 break;
381 $g = explode(",", $devices[$j]);
382 if ($g[5] == "IN_ANALOG") {
383 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
384 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
385 }
386 $j++;
387 }
388 }
389 $outstr .= ' </select></td>'.PHP_EOL;
390 $outstr .= ' </tr>'.PHP_EOL;
391 }
392 if ($f[0] == "HEATER_ADDRESS") {
393 $outstr .= ' <tr class="editor">'.PHP_EOL;
394 $outstr .= ' <td class="editname">Heater Switch Address</td>'.PHP_EOL;
395 $outstr .= ' <td class="editfield"><select name="HeaterAddress">'.PHP_EOL;
396 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
397 if (startsWith($devices[0], "212")) {
398 $j = 1;
399 while (1) {
400 if (strcmp($devices[$j], ".") == 0)
401 break;
402 $g = explode(",", $devices[$j]);
403 if (($g[5] == "OUT_ANALOG") || ($g[5] == "OUT_BIN")) {
404 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
405 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
406 }
407 $j++;
408 }
409 }
410 $outstr .= ' </select></td>'.PHP_EOL;
411 $outstr .= ' </tr>'.PHP_EOL;
412 }
413 if ($f[0] == "COOLER_ADDRESS") {
414 $outstr .= ' <tr class="editor">'.PHP_EOL;
415 $outstr .= ' <td class="editname">Cooler Switch Address</td>'.PHP_EOL;
416 $outstr .= ' <td class="editfield"><select name="CoolerAddress">'.PHP_EOL;
417 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
418 if (startsWith($devices[0], "212")) {
419 $j = 1;
420 while (1) {
421 if (strcmp($devices[$j], ".") == 0)
422 break;
423 $g = explode(",", $devices[$j]);
424 if (($g[5] == "OUT_ANALOG") || ($g[5] == "OUT_BIN")) {
425 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
426 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
427 }
428 $j++;
429 }
430 }
431 $outstr .= ' </select></td>'.PHP_EOL;
432 $outstr .= ' </tr>'.PHP_EOL;
433 }
434 if ($f[0] == "FAN_ADDRESS") {
435 $outstr .= ' <tr class="editor">'.PHP_EOL;
436 $outstr .= ' <td class="editname">Fan Switch Address</td>'.PHP_EOL;
437 $outstr .= ' <td class="editfield"><select name="FanAddress">'.PHP_EOL;
438 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
439 if (startsWith($devices[0], "212")) {
440 $j = 1;
441 while (1) {
442 if (strcmp($devices[$j], ".") == 0)
443 break;
444 $g = explode(",", $devices[$j]);
445 if (($g[5] == "OUT_ANALOG") || ($g[5] == "OUT_BIN")) {
446 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
447 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
448 }
449 $j++;
450 }
451 }
452 $outstr .= ' </select></td>'.PHP_EOL;
453 $outstr .= ' </tr>'.PHP_EOL;
454 }
455 if ($f[0] == "DOOR_ADDRESS") {
456 $outstr .= ' <tr class="editor">'.PHP_EOL;
457 $outstr .= ' <td class="editname">Door Sensor Address</td>'.PHP_EOL;
458 $outstr .= ' <td class="editfield"><select name="DoorAddress">'.PHP_EOL;
459 $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL;
460 if (startsWith($devices[0], "212")) {
461 $j = 1;
462 while (1) {
463 if (strcmp($devices[$j], ".") == 0)
464 break;
465 $g = explode(",", $devices[$j]);
466 if ($g[5] == "IN_BIN") {
467 ($f[1] == $g[0]) ? $se = " selected" : $se = "";
468 $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL;
469 }
470 $j++;
471 }
472 }
473 $outstr .= ' </select></td>'.PHP_EOL;
474 $outstr .= ' </tr>'.PHP_EOL;
475 }
476 if ($f[0] == "TEMP_SET_MIN") {
477 $outstr .= ' <tr class="editor">'.PHP_EOL;
478 $outstr .= ' <td class="editname">Min. temp setting</td>'.PHP_EOL;
479 $outstr .= ' <td class="editfield"><input type="text" name="TempSetMin" size="5" value="'.$f[1].'"></td>'.PHP_EOL;
480 $outstr .= ' </tr>'.PHP_EOL;
481 }
482 if ($f[0] == "TEMP_SET_MAX") {
483 $outstr .= ' <tr class="editor">'.PHP_EOL;
484 $outstr .= ' <td class="editname">Max. temp setting</td>'.PHP_EOL;
485 $outstr .= ' <td class="editfield"><input type="text" name="TempSetMax" size="5" value="'.$f[1].'"></td>'.PHP_EOL;
486 $outstr .= ' </tr>'.PHP_EOL;
487 }
488 if ($f[0] == "IDLE_RANGE_L") {
489 $outstr .= ' <tr class="editor">'.PHP_EOL;
490 $outstr .= ' <td class="editname">Idle Range Low</td>'.PHP_EOL;
491 $outstr .= ' <td class="editfield"><input type="text" name="IdleRangeL" size="5" value="'.$f[1].'"></td>'.PHP_EOL;
492 $outstr .= ' </tr>'.PHP_EOL;
493 }
494 if ($f[0] == "IDLE_RANGE_H") {
495 $outstr .= ' <tr class="editor">'.PHP_EOL;
496 $outstr .= ' <td class="editname">Idle Range High</td>'.PHP_EOL;
497 $outstr .= ' <td class="editfield"><input type="text" name="IdleRangeH" size="5" value="'.$f[1].'"></td>'.PHP_EOL;
498 $outstr .= ' </tr>'.PHP_EOL;
499 }
500 $i++;
501 }
502 }
257 $outstr .= ' <tr class="editor">'.PHP_EOL; 503 $outstr .= ' <tr class="editor">'.PHP_EOL;
258 $outstr .= ' <td class="editname"><input type="submit" value="Save" name="key"></td>'.PHP_EOL; 504 $outstr .= ' <td class="editname"><input type="submit" value="Save" name="key"></td>'.PHP_EOL;
259 $outstr .= ' <td class="editfield"><input type="submit" value="Cancel" name="key">'; 505 $outstr .= ' <td class="editfield"><input type="submit" value="Cancel" name="key">';
260 $outstr .= '<input type="submit" value="Delete" name="key" style="margin-left: 100px;">'; 506 $outstr .= '<input type="submit" value="Delete" name="key" style="margin-left: 100px;">';
261 $outstr .= '<input type="hidden" value="testdata" name="action">'; 507 $outstr .= '<input type="hidden" value="testdata" name="action">';
276 * 522 *
277 * @param string $_GET['action'] Must be 'edit'. 523 * @param string $_GET['action'] Must be 'edit'.
278 * @param string $_GET['UUID'] The UUID of the Unit. 524 * @param string $_GET['UUID'] The UUID of the Unit.
279 */ 525 */
280 function unit_edit() { 526 function unit_edit() {
281
282 global $arr;
283
284 if ($_GET['action'] == 'edit') { 527 if ($_GET['action'] == 'edit') {
285 528 edit_screen($_GET['UUID'], 'update', 'ThermFerm - Edit Unit', '');
286 if (startsWith($arr[0], "212")) { 529 return;
287 $j = 1;
288 while (1) {
289 if (strcmp($arr[$j], ".") == 0)
290 break;
291 $f = explode(",", $arr[$j]);
292 if (strcmp($f[0], $_GET['UUID']) == 0) {
293 edit_screen($f[0], $f[1], 'update', 'ThermFerm - Edit Unit', '');
294 return;
295 }
296 $j++;
297 }
298 } else {
299 load('units.php');
300 }
301
302 } else { 530 } else {
303 load('units.php'); 531 load('units.php');
304 } 532 }
305 } 533 }
306 534
355 $outstr .= ' <tr class="trhead"><td colspan="3">Add new unit</td></tr>'.PHP_EOL; 583 $outstr .= ' <tr class="trhead"><td colspan="3">Add new unit</td></tr>'.PHP_EOL;
356 $outstr .= ' <tr class="editor">'.PHP_EOL; 584 $outstr .= ' <tr class="editor">'.PHP_EOL;
357 $outstr .= ' <td class="editname">Unit Name</td>'.PHP_EOL; 585 $outstr .= ' <td class="editname">Unit Name</td>'.PHP_EOL;
358 $outstr .= ' <td class="editfield"><input type="text" name="Name" size="50" value=""></td>'.PHP_EOL; 586 $outstr .= ' <td class="editfield"><input type="text" name="Name" size="50" value=""></td>'.PHP_EOL;
359 $outstr .= ' <td class="editsub"><input type="submit" value="Add" name="key"></td>'.PHP_EOL; 587 $outstr .= ' <td class="editsub"><input type="submit" value="Add" name="key"></td>'.PHP_EOL;
588 $outstr .= '<input type="hidden" value="0.0" name="Volume">';
360 $outstr .= '<input type="hidden" value="testdata" name="action">'; 589 $outstr .= '<input type="hidden" value="testdata" name="action">';
361 $outstr .= '<input type="hidden" value="add" name="command">'; 590 $outstr .= '<input type="hidden" value="add" name="command">';
362 $outstr .= '<input type="hidden" value="00000000-0000-0000-0000-000000000000" name="UUID">'; 591 $outstr .= '<input type="hidden" value="00000000-0000-0000-0000-000000000000" name="UUID">';
363 $outstr .= ' </tr>'.PHP_EOL; 592 $outstr .= ' </tr>'.PHP_EOL;
364 $outstr .= ' </table>'.PHP_EOL; 593 $outstr .= ' </table>'.PHP_EOL;

mercurial