--- a/www-thermferm/global.php Sun Aug 10 14:45:11 2014 +0200 +++ b/www-thermferm/global.php Sun Aug 10 16:17:03 2014 +0200 @@ -23,13 +23,233 @@ require_once('utilities.php'); -$outstr = build_header("ThermFerm - Global Setup"); -$outstr .= ' <div id="errors">'.PHP_EOL; -$outstr .= ' </div> <!-- errors -->'.PHP_EOL; -$outstr .= ' <div id="etable">'.PHP_EOL; + +if (isset($_POST['action'])) { + if ($_POST['action'] == "testdata") + testdata(); +} else { + edit_screen(""); +} + + +exit; + + +/***************************************************************************** + * + */ + + +function global_update() { + + if ($_POST['key'] == 'Save') { + $sock = open_socket(); + if ($sock != false) { + /* + * Send command and absorb the result. + */ + socket_write($sock, "GLOBAL PUT", 4096); + usleep(20000); + socket_write($sock, "NAME,".$_POST['Name'], 4096); + usleep(20000); + socket_write($sock, "PORT,".$_POST['Port'], 4096); + usleep(20000); + socket_write($sock, "TEMP_ADDRESS,".$_POST['TempAddress'], 4096); + usleep(20000); + socket_write($sock, "HUM_ADDRESS,".$_POST['HumAddress'], 4096); + usleep(20000); + if (isset($_POST['LCDcols'])) { + socket_write($sock, "LCD_COLS,".$_POST['LCDcols'], 4096); + usleep(20000); + } + if (isset($_POST['LCDrows'])) { + socket_write($sock, "LCD_ROWS,".$_POST['LCDrows'], 4096); + usleep(20000); + } + socket_write($sock, ".", 4096); + while (1) { + $line = socket_read($sock, 4096); + if ($line === '') + break; + } + socket_close($sock); + } + } + + unset($_POST['Name']); + unset($_POST['Port']); + unset($_POST['TempAddress']); + unset($_POST['HumAddress']); + unset($_POST['LCDcols']); + unset($_POST['LCDrows']); + unset($_POST['key']); + load('global.php'); +} + + + +function test_thedata() { + + if (isset($_POST['Name']) && isset($_POST['Port']) && + isset($_POST['TempAddress']) && isset($_POST['HumAddress']) && + isset($_POST['key'])) { + + if ($_POST['key'] == 'Cancel') + return 99; + + if (isset($_POST['LCDcols']) && (($_POST['LCDcols'] != 16) && ($_POST['LCDcols'] != 20))) + return 2; + + if (isset($_POST['LCDrows']) && (($_POST['LCDrows'] != 2) && ($_POST['LCDrows'] != 4))) + return 3; + + } else { + return 1; + } + + return 0; +} + + + +function testdata() +{ + $result = test_thedata(); + $error = ''; + + switch ($result) { + case 0: global_update(); + return; + break; + case 1: $error = 'Missing data'; + break; + case 2: $error = 'LCD columns must be 16 or 20'; + break; + case 3: $error = 'LCD rows must be 2 or 4'; + break; + case 99: + load('global.php'); + break; + } + + edit_screen($error); +} + + -$outstr .= ' </div> <!-- etable -->'.PHP_EOL; -$outstr .= build_footer(); +function edit_screen($error_message) +{ + /* + * Get list of devices, we need it later + */ + $answer = send_cmd("DEVICE LIST"); + $devices = explode("\r\n", $answer); + + /* + * Get current global data + */ + $answer = send_cmd("GLOBAL GET"); + $reply = explode("\r\n", $answer); + + $outstr = build_header("ThermFerm - Global Setup"); + $outstr .= ' <div id="errors">'.PHP_EOL; + $outstr .= ' '.$error_message.PHP_EOL; + $outstr .= ' </div> <!-- errors -->'.PHP_EOL; + $outstr .= ' <div id="etable">'.PHP_EOL; + $outstr .= ' <form method="POST" action="global.php">'.PHP_EOL; + $outstr .= ' <table class="editor">'.PHP_EOL; + $outstr .= ' <tr class="trhead">'.PHP_EOL; + $outstr .= ' <td class="setup" colspan="2" style="text-align: center; height: 20px; padding-top: 5px;">Global Setup</td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + + if (startsWith($reply[0], "213")) { + $i = 1; + while (1) { + if (strcmp($reply[$i], ".") == 0) + break; + $f = explode(",", $reply[$i]); -echo $outstr; + if ($f[0] == "NAME") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">System Name</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><input type="text" name="Name" size="50" value="'.$f[1].'"></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + if ($f[0] == "PORT") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">Telnet port</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><input type="text" name="Port" size="5" value="'.$f[1].'"></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + if ($f[0] == "TEMP_ADDRESS") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">Room temperature sensor</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><select name="TempAddress">'.PHP_EOL; + $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL; + if (startsWith($devices[0], "212")) { + $j = 1; + while (1) { + if (strcmp($devices[$j], ".") == 0) + break; + $g = explode(",", $devices[$j]); + if ($g[5] == "IN_ANALOG") { + ($f[1] == $g[0]) ? $se = " selected" : $se = ""; + $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL; + } + $j++; + } + } + $outstr .= ' </select></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + if ($f[0] == "HUM_ADDRESS") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">Room humidity sensor</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><select name="HumAddress">'.PHP_EOL; + $outstr .= ' <option value="">Not Assigned</option>'.PHP_EOL; + if (startsWith($devices[0], "212")) { + $j = 1; + while (1) { + if (strcmp($devices[$j], ".") == 0) + break; + $g = explode(",", $devices[$j]); + if ($g[5] == "IN_ANALOG") { + ($f[1] == $g[0]) ? $se = " selected" : $se = ""; + $outstr .= ' <option value="'.$g[0].'"'.$se.'>'.$g[1].' '.$g[4].'</option>'.PHP_EOL; + } + $j++; + } + } + $outstr .= ' </select></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + if ($f[0] == "LCD_COLS") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">LCD columns</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><input type="text" name="LCDcols" size="5" value="'.$f[1].'"></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + if ($f[0] == "LCD_ROWS") { + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname">LCD rows</td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><input type="text" name="LCDrows" size="5" value="'.$f[1].'"></td>'.PHP_EOL; + $outstr .= ' </tr>'.PHP_EOL; + } + $i++; + } + } + $outstr .= ' <tr class="editor">'.PHP_EOL; + $outstr .= ' <td class="editname"><input type="submit" value="Save" name="key"></td>'.PHP_EOL; + $outstr .= ' <td class="editfield"><input type="submit" value="Cancel" name="key">'; + $outstr .= '<input type="hidden" value="testdata" name="action">'; + $outstr .= ' </tr>'.PHP_EOL; + $outstr .= ' </table>'.PHP_EOL; + $outstr .= ' </form>'.PHP_EOL; + $outstr .= ' </div> <!-- etable -->'.PHP_EOL; + $outstr .= build_footer(); + + echo $outstr; +} + +