www-thermferm/global.php

changeset 207
8d2ba4126519
parent 173
7259ee8778e9
child 253
7b6abc0dd1c6
--- 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;
+}
+
+

mercurial