I have made progress and based on an instructables guide (see my previous article) I completed the design of my Web RPi control panel.
See below screenshots.
And here is the code for those who want:
GPIOServer.sh:
# Script created by Laurent Mahe from Daniel Curzon's original script (http://www.instructables.com/member/drcurzon)
# Initial version created December 2012
###################################
##### EDIT THESE BEFORE USE #####
###################################
mysqlusername="****"
mysqlpassword="****"
mysqlhostname="192.168.0.24"
#######################################################################
# setup:
# Program the GPIO correctly and initialise the different parameters
#######################################################################
Setup ()
{
printf "\033c"
echo "Setup in progress..."
Door_Lock=8
MyLED=0
MyLED_Status=0
AlarmStatus=0
MyLight=3
MyPIR=4
MyPIR2=5
MyBuzzer=0
#Invoke GPIO
#echo "0" > /sys/class/gpio/export
#echo "17" > /sys/class/gpio/export
#echo "18" > /sys/class/gpio/export
#echo "22" > /sys/class/gpio/export
#echo "23" > /sys/class/gpio/export
echo "in" > /sys/class/gpio/gpio0/direction
echo "out" > /sys/class/gpio/gpio17/direction
gpio -g mode 18 in
echo "in" > /sys/class/gpio/gpio22/direction
echo "in" > /sys/class/gpio/gpio23/direction
echo "in" > /sys/class/gpio/gpio24/direction
curl http://192.168.0.24:8080/1/detection/pause > /dev/null 2>&1
curl http://192.168.0.24:8080/2/detection/start > /dev/null 2>&1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=91";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=92";)
if [ `gpio read $Door_Lock` = 1 ]; then
echo "Lock Status = [1] Unlocked"
else
echo "Lock Status = [0] Locked"
gpio write $MyLED 1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='0'";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='17'";)
echo -e `date +%F_%T` "Activating motion detection...\n"
curl http://192.168.0.24:8080/1/detection/start > /dev/null 2>&1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=91";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=92";)
waitDoor_Unlock
fi
Update_MySQL
}
#######################################################################
# waitDoor_Lock:
# Wait for the door to be locked. Because we are using pin 17 (which
# has a pull up resistor) we wait for the signal to go low indicating
# the door has been locked, then wait 3 min before activating motion.
#######################################################################
waitDoor_Lock ()
{
echo -n "Waiting for door to be locked... "
while [ `gpio read $Door_Lock` = 1 ]; do
Update_MySQL
done
echo -e "\n"`date +%F_%T` "Countdown 3 min..."
gpio write $MyLED 1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='0'";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='17'";)
sleep 180
echo -e `date +%F_%T` "Activating motion detection...\n"
curl http://192.168.0.24:8080/1/detection/start > /dev/null 2>&1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=91";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=92";)
}
#######################################################################
# waitDoor_Unlock:
# Wait for the door to be unlocked. Because we are using pin 17 (which
# has a pull up resistor) we wait for the signal to go high indicating
# the door has been unlocked.
#######################################################################
waitDoor_Unlock ()
{
echo -n "Waiting for door to be unlocked... "
while [ `gpio read $Door_Lock` = 0 ]; do
gpio write $MyLED $MyLED_Status
if [ $MyLED_Status = 0 ]; then
MyLED_Status=1
else
MyLED_Status=0
fi
Update_MySQL
done
echo -e "\n"`date +%F_%T` "Pausing motion detection...\n"
curl http://192.168.0.24:8080/1/detection/pause > /dev/null 2>&1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=91";)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=92";)
gpio write $MyLED 0
}
#######################################################################
# SetBuzzer:
# Plays buzzer
# Use: SetBuzzer x y where x is Freq and y is length
#######################################################################
SetBuzzer ()
{
local note="$1" time="$2"
if test "$note" -eq 0 ; then
gpio -g mode 18 in
else
local period="$(perl -e"printf'%.0f',600000/440/2**(($note-69)/12)")"
gpio -g mode 18 pwm
gpio pwmr "$((period))"
gpio -g pwm 18 "$((period/2))"
gpio pwm-ms
fi
sleep "$time"
}
#######################################################################
# Update_MySQL:
# Checks PIR + Photo-Resistor:
# if no movement after 23:00 and light is on -> Alarm
# if door is unlocked and no light after 23:00 -> Alarm
# Finally update MySQL table for Web Control Panel
#######################################################################
Update_MySQL ()
{
#checks time of day. If past 23:00, sets alarm if (no light AND door unlocked) OR (light AND no movememnt)
MyTime=`date +%H`
# if (( 1 )); then
if (( (${MyTime:1:1} > 2 && ${MyTime:0:1} == 2) || (${MyTime:1:1} < 4 && ${MyTime:0:1} == 0))); then
if [ `gpio read $MyPIR` = 0 ] && [ `gpio read $MyPIR2` = 0 ] && [ `gpio read $MyLight` = 1 ]; then
echo -e `date +%F_%T` "\n"" Late, lights on and no movement --> [ALARM]"
AlarmStatus=1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='18'";)
SetBuzzer 90 0.5
else
AlarmStatus=0
gpio -g mode 18 in
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='18'";)
fi
if [ `gpio read $Door_Lock` = 1 ] && [ `gpio read $MyLight` = 0 ]; then
echo -e `date +%F_%T` "\n"" Late, lights off and Door not locked --> [ALARM]"
AlarmStatus=1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='18'";)
SetBuzzer 90 0.5
else
AlarmStatus=0
gpio -g mode 18 in
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='18'";)
fi
fi
if ((AlarmStatus == 1)); then
AlarmStatus=0
gpio -g mode 18 in
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='18'";)
fi
#Get Door Lock Status
if ((`cat /sys/class/gpio/gpio0/value` == 0)); then
#set Door status in SQL to 1 (locked)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='0'";)
else
#set Door status in SQL to 0 (unlocked)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='0'";)
fi
#Get Photo Resistor Status
if ((`cat /sys/class/gpio/gpio22/value` == 1)); then
#set status in SQL to 1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='22'";)
else
#set status in SQL to 0
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='22'";)
fi
#Get PIR1 Status
if ((`cat /sys/class/gpio/gpio23/value` == 1)); then
#set status in SQL to 1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='23'";)
else
#set status in SQL to 0
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='23'";)
fi
#Get PIR2 Status
if ((`cat /sys/class/gpio/gpio24/value` == 1)); then
#set status in SQL to 1
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='24'";)
else
#set status in SQL to 0
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='24'";)
fi
#Get Door LED
if ((`cat /sys/class/gpio/gpio17/value` == 0)); then
#set Door status in SQL to 1 (locked)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber='17'";)
else
#set Door status in SQL to 0 (unlocked)
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber='17'";)
fi
#Set Buzzer
if [ $(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "SELECT pinStatus FROM pinStatus WHERE pinNumber='18'";) == "1" ]; then
if (($MyBuzzer == 0)); then
SetBuzzer 90 0.5
MyBuzzer=1
fi
else
gpio -g mode 18 in
MyBuzzer=0
fi
CAM1=`curl -s http://192.168.0.24:8080/1/detection/status`
MyCAM1=${CAM1:137:6}
if [ $MyCAM1 == "ACTIVE" ]; then
#update SQL as active
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=91";)
else
#either in pause or not available
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=91";)
fi
CAM2=`curl -s http://192.168.0.24:8080/2/detection/status`
MyCAM2=${CAM2:137:6}
if [ $MyCAM2 == "ACTIVE" ]; then
#update SQL as active
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=92";)
else
#either in pause or not available
$(mysql -B --host=$mysqlhostname --disable-column-names --user=$mysqlusername --password=$mysqlpassword gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=92";)
fi
}
#Start Loop
while :
do
Setup
waitDoor_Lock
waitDoor_Unlock
done
control.php:
<HTML>
<HEAD>
<title>RPi Control Panel</title>
<link rel="stylesheet" type="text/css" href="StyleSheet.css" />
<HEAD>
<STYLE type="text/css">
BODY
{
background-attachment: fixed;
background-image: url(RPi_Bkgrd.jpg);
background-repeat: no-repeat;
background-position: center center;
}
</STYLE>
<script src="jquery-1.8.3.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready (function () {
var updater = setTimeout (function () {
$("div#myDiv").load("index.php","action=refresh");
}, 500);
});
</script>
</HEAD>
<BODY>
<?php
session_start();
//////////////////////////////
// EDIT THESE TWO VARIABLES //
//////////////////////////////
$MySQLUsername = "****";
$MySQLPassword = "****";
/////////////////////////////////
// DO NOT EDIT BELOW THIS LINE //
/////////////////////////////////
$MySQLHost = "127.0.0.1";
$MySQLDB = "gpio";
/* gets the data from a URL */
function get_data($url) {
$ch = curl_init();
$timeout = 5;
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
If (($MySQLUsername == "USERNAME HERE") || ($MySQLPassword == "PASSWORD HERE")){
print 'ERROR - Please set up the script first';
exit();
}
$dbConnection = mysql_connect($MySQLHost, $MySQLUsername, $MySQLPassword);
mysql_select_db($MySQLDB, $dbConnection);
$tbl = '';
$tbl .= "<table name='GPIO' border='1' cellpadding='5'>";
$tbl .= "<tr><th>GPIO #</th><th>GPIO Description</th><th>Status</th></tr>";
//Door Lock
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=0");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=0");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$image = "Lock-Off.png";
} else {
$image = "Lock-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><img src=" . $image . " width='50' border='0'></td>";
$tbl .= "</tr>";
//Door LED
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=17");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=17");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$image = "LED-Off.png";
} else {
$image = "LED-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><img src=" . $image . " width='50' border='0'></td>";
$tbl .= "</tr>";
//Buzzer
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=18");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=18");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$action = "Buzzer-on";
$image = "Buzzer-Off.png";
} else {
$action = "Buzzer-off";
$image = "Buzzer-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><a href='index.php?action=" . $action . "'><img src=" . $image . " width='50' border='0'></a></td>";
$tbl .= "</tr>";
//Photo Resistor
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=22");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=22");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$image = "Photo-Resistor-Off.png";
} else {
$image = "Photo-Resistor-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><img src=" . $image . " width='50' border='0'></td>";
$tbl .= "</tr>";
//PIR1
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=23");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=23");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$image = "PIR-Off.png";
} else {
$image = "PIR-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><img src=" . $image . " width='50' border='0'></td>";
$tbl .= "</tr>";
//PIR1
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=24");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=24");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$image = "PIR-Off.png";
} else {
$image = "PIR-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><img src=" . $image . " width='50' border='0'></td>";
$tbl .= "</tr>";
//Garden Cam
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=91");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=91");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$action = "Back-on";
$image = "CCTV-Off.png";
} else {
$action = "Back-off";
$image = "CCTV-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><a href='index.php?action=" . $action . "'><img src=" . $image . " width='50' border='0'></a></td>";
$tbl .= "</tr>";
//Front Cam
$strSQL1 = mysql_query ("SELECT pinNumber, pinStatus FROM pinStatus WHERE pinNumber=92");
$strSQL2 = mysql_query ("SELECT pinNumber, pinDescription FROM pinDescription WHERE pinNumber=92");
$pinRow = mysql_fetch_assoc($strSQL1);
$descRow = mysql_fetch_assoc($strSQL2);
$pinNumber = $pinRow['pinNumber'];
$pinStatus = $pinRow['pinStatus'];
$pinDescription = $descRow['pinDescription'];
If ($pinStatus == "0"){
$action = "Front-on";
$image = "CCTV-Off.png";
} else {
$action = "Front-off";
$image = "CCTV-On.png";
}
$tbl .= "<tr>";
$tbl .= "<td align='center'>" . $pinNumber . "</td><td>" . $pinDescription . "</td><td><a href='index.php?action=" . $action . "'><img src=" . $image . " width='50' border='0'></a></td>";
$tbl .= "</tr>";
$tbl .= "</table>";
If (isset($_POST['action'])){
If ($_POST['action'] == "setPassword"){
$password1 = $_POST['password1'];
$password2 = $_POST['password2'];
If ($password1 != $password2){
header('Location: index.php');
}
$password = mysql_real_escape_string($_POST['password1']);
If (strlen($password) > 28){
mysql_close();
header('location: index.php');
}
$resetQuery = "SELECT username, salt FROM users WHERE username = 'admin';";
$resetResult = mysql_query($resetQuery);
If (mysql_num_rows($resetResult) < 1){
mysql_close();
header('location: index.php');
}
$resetData = mysql_fetch_array($resetResult, MYSQL_ASSOC);
$resetHash = hash('sha256', $salt . hash('sha256', $password));
$hash = hash('sha256', $password);
function createSalt(){
$string = md5(uniqid(rand(), true));
return substr($string, 0, 8);
}
$salt = createSalt();
$hash = hash('sha256', $salt . $hash);
mysql_query("UPDATE users SET salt='$salt' WHERE username='admin'");
mysql_query("UPDATE users SET password='$hash' WHERE username='admin'");
mysql_close();
header('location: index.php');
}
}
If ((isset($_POST['username'])) && (isset($_POST['password']))){
$username = mysql_real_escape_string($_POST['username']);
$password = mysql_real_escape_string($_POST['password']);
$loginQuery = "SELECT UserID, password, salt FROM users WHERE username = '$username';";
$loginResult = mysql_query($loginQuery);
If (mysql_num_rows($loginResult) < 1){
mysql_close();
header('location: index.php?error=incorrectLogin');
}
$loginData = mysql_fetch_array($loginResult, MYSQL_ASSOC);
$loginHash = hash('sha256', $loginData['salt'] . hash('sha256', $password));
If ($loginHash != $loginData['password']){
mysql_close();
header('location: index.php?error=incorrectLogin');
} else {
session_regenerate_id();
$_SESSION['username'] = "admin";
$_SESSION['userID'] = "1";
mysql_close();
header('location: index.php');
}
}
If ((!isset($_SESSION['username'])) || (!isset($_SESSION['userID']))){
print '
<div id="main">
<table border="0" width="90%">
<tr><td valign="middle"><img src="RPi_logo.png"></td><td valign="middle"><center><font color="#CC0066" size="7" face="Georgia, serif">RPi Control Panel</font></center></td></tr>
</table>
<font face="verdana">
<center>
';
print '
<table border="0" align="center">
<form name="login" action="index.php" method="post">
<tr>
<td>Username: </td><td><input type="text" name="username"></td>
</tr>
<tr>
<td>Password: </td><td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="Log In"></td>
</tr>
</form>
</table>
</div>
</body>
</html>
';
die();
}
If (isset($_GET['action'])){
If ($_GET['action'] == "logout"){
$_SESSION = array();
session_destroy();
header('Location: index.php');
} else If ($_GET['action'] == "setPassword"){
print '
<div id="main">
<table border="0" width="90%">
<tr><td valign="middle"><img src="RPi_logo.png"></td><td valign="middle"><center><font color="#CC0066" size="7" face="Georgia, serif">RPi Control Panel</font></center></td></tr>
</table>
<font face="verdana">
<center>
';
print '
<form name="changePassword" action="index.php" method="post">
<input type="hidden" name="action" value="setPassword">
<p>Enter New Password: <input type="password" name="password1"> Confirm: <input type="password" name="password2"><input type="submit" value="submit"></p>
</form>
';
} else {
$action = $_GET['action'];
$pin = mysql_real_escape_string($_GET['pin']);
if ($action == "turnOn"){
$setting = "1";
mysql_query("UPDATE pinStatus SET pinStatus='$setting' WHERE pinNumber='$pin';");
mysql_close();
header('Location: index.php');
} else If ($action == "turnOff"){
$setting = "0";
mysql_query("UPDATE pinStatus SET pinStatus='$setting' WHERE pinNumber='$pin';");
mysql_close();
header('Location: index.php');
} else If ($action == "Back-on"){
exec ("curl http://192.168.0.24:8080/1/detection/start > /dev/null 2>&1", &$output);
header('Location: index.php');
} else If ($action == "Back-off"){
exec ("curl http://192.168.0.24:8080/1/detection/pause > /dev/null 2>&1", &$output);
header('Location: index.php');
} else If ($action == "Front-on"){
exec ("curl http://192.168.0.24:8080/2/detection/start > /dev/null 2>&1", &$output);
header('Location: index.php');
} else If ($action == "Front-off"){
exec ("curl http://192.168.0.24:8080/2/detection/pause > /dev/null 2>&1", &$output);
header('Location: index.php');
} else If ($action == "Buzzer-on"){
exec ('$(mysql -B --host=' . $MySQLHost . ' --disable-column-names --user=' . $MySQLUsername . ' --password=' . $MySQLPassword . ' gpio -e "UPDATE pinStatus SET pinStatus=1 WHERE pinNumber=18";)', &$output);
header('Location: index.php');
} else If ($action == "Buzzer-off"){
exec ('$(mysql -B --host=' . $MySQLHost . ' --disable-column-names --user=' . $MySQLUsername . ' --password=' . $MySQLPassword . ' gpio -e "UPDATE pinStatus SET pinStatus=0 WHERE pinNumber=18";)', &$output);
header('Location: index.php');
} else IF ($action =="edit"){
$pin = mysql_real_escape_string($_GET['pin']);
$query = mysql_query("SELECT pinDescription FROM pinDescription WHERE pinNumber='$pin';");
$descRow = mysql_fetch_assoc($query);
$description = $descRow['pinDescription'];
print '
<div id="main">
<table border="0" width="90%">
<tr><td valign="middle"><img src="RPi_logo.png"></td><td valign="middle"><center><font color="#CC0066" size="7" face="Georgia, serif">RPi Control Panel</font></center></td></tr>
</table>
<font face="verdana">
<center>
';
print '
<table border="0">
<form name="edit" action="index.php" method="get">
<input type="hidden" name="action" value="update">
<input type="hidden" name="pin" value="' . $pin . '">
<tr>
<td><p>Description: </p></td><td><input type="text" name="description" value="' . $description . '"></td><td><input type="submit" value="Confirm"></td>
</tr>
</form>
</table>
</div>
</body></html>
';
mysql_close();
} else IF ($action =="update"){
$pin = mysql_real_escape_string($_GET['pin']);
$description = mysql_real_escape_string($_GET['description']);
mysql_query("UPDATE pinDescription SET pinDescription='$description' WHERE pinNumber='$pin';");
header('Location: index.php');
}
else IF ($action =="refresh")
{
echo $tbl;
die ();
}
else {
header('Location: index.php');
}
}
} else {
mysql_close();
print '
<div id="main">
<table border="0" width="90%">
<tr><td valign="middle"><img src="RPi_logo.png"></td><td valign="middle"><center><font color="#CC0066" size="7" face="Georgia, serif">RPi Control Panel</font></center></td></tr>
</table>
<font face="verdana">
<center>
<br><br><div id="myDiv">
';
echo $tbl;
print '</div><br><br>
<p><a href="index.php?action=setPassword">Change Password</a></p>
<a href="index.php?action=logout">Log out</a>
</center>
</font></div>
</body></html>
';
}
?>