PHP scheduler for X10 system
Description: X10 system behaves as a communication protocol,
it allows the compatible products to talk to each other via the existing
electrical wires. And the HEYU2 is working as an X10 system controler for
Linux.In this project, I tried to make a PHP scheduler for X10 system that
in running in Linux environment of Professor Pollett's Digital Library.
The PHP X10 scheduler has the following features:
- Configurable timer setting,
- Multiple choices on devices,
- Easily integrated into other PHP/HTMl pages,
- Friendly drop-down option selection windows,
- Compliant with Linux scheduling command "at".
Based on the customer's selections on the device, action, level and
time, the PHP X10 scheduler will send the formatted "at" scheduling
command to the Linux system. The system will schedule the assigned jobs
in X10 system according to the "at"commands.
Example:This is what my code outputs on these inputs.
In this program, it also can handle some exceptional conditions.
Such as entering nothing for searching:
<!-- Program: request.php
Date: December 12, 2004
Description: The PHP X10 scheduler will accept the customer's
selection on device,action,level and time and configure it into
Linux at scheduling command.
-->
<?
$heyu ="/usr/local/bin/heyu2";
$monitoredRow = 8;
$house="a";
$device[5]="Bedside lamp";
$device[12]="Bedroom Torch";
$device[1]="Livingroom Lamp";
$device[7]="Baby room Lamp";
$device[13]="Hallway";
$device[3]="Dinner Table";
$device[9]="Kitchen";
$device[2]="Sewing Room";
$dev=$_GET["dev"];
$level=$_GET["level"];
$action=strtolower($_GET["action"]);
if($action)
{
//exec("$heyu $action $house$dev $level");
echo ("$heyu $action $house$dev $level");
}
?>
<?=$center ?>
<h1>
X10 Home Automation Controller
</h1>
<div>
<a href="<?= $baseURL; ?>/library/X10/computerroom.php"><img width="320"
height="240" src="<?= $baseURL; ?>/phpx10/X10/computerroom.jpg" /></a>
</div>
<!--<p>
[<a href="<?= $baseURL; ?>/library/?sublibrary=X10&action=allon">All On
</a>]  [<a href="<?= $baseURL; ?>/library/?sublibrary=X10&action=alloff">
All Off</a>]
</p>
<table <?=$alignCenter?> width="60%" summary="used to display the devices that can be
controlled">
<tr>
<td><big><b>Device</b></big></td><td><big><b>Toggle/Status</b></big></td>
<td><big><b>Adjust Brightness</b></big></td>
</tr>
<?
//exec("$heyu info", $infoArray);
echo("$heyu info ".$infoArray);
$status = strstr($infoArray[$monitoredRow],"(");
$status = str_replace(array("(",")" ), array("",""), $status);
$len = strlen($status);
for($i = $len; $i>=1; $i--)
{
if($device[$i])
{
if(substr($status, $len - $i,1)=="1" )
{
$state="ON";
$unstate="OFF";
}
else
{
$state="OFF";
$unstate="ON";
}
echo
"<tr><td>$device[$i]</td><td><a href=\"$baseURL/library/?
sublibrary=X10&dev=$i";
echo
"&action=$unstate\">$state</a></td><td>";
echo
"[<a href=\"$baseURL/library/?sublibrary=X10&dev=$i&action=dimb&level=15\">Dimmest
</a>]  ";
echo
"[<a href=\"$baseURL/library/?sublibrary=X10&dev=$i&action=dimb&level=10\">Dimmer
</a>]  ";
echo
"[<a href=\"$baseURL/library/?sublibrary=X10&dev=$i&action=dimb&level=5\">Dim
</a>]  ";
echo"</td></tr>";
}
}
?>
</table>
<?=$centerend ?>
<form method="GET" action="reply.php">
<p><h3>Follow the steps to schedule your jobs:</h3></p>
<p>
<ul>
<li><b>Step One: select the device </b><br/>
<select name="device" size="3" multiple>
<option value="Bedside lamp" selected> Bedsidelamp </option>
<option value="Bedroom Torch"> Bedroom Torch </option>
<option value="Livingroom Lamp"> Livingroom Lamp </option>
<option value="Baby room Lamp"> Baby room Lamp </option>
<option value="Hallway"> Hallway </option>
<option value="Dinner Table"> Dinner Table </option>
<option value="Kitchen"> Kitchen </option>
<option value="Sewing Room"> Sewing Room </option>
</select>
<br/>(Note: You can use the CTRL key to do the multiple choice.)
</li>
</p>
<p>
<li><b>Step Two: select the type of action </b><br/>
<select name="command" size="3">
<option value="off" selected> Turn off </option>
<option value="on5"> Turn on & dim & level=5 </option>
<option value="on10"> Turn on & dimmer & level=10 </option>
<option value="on15"> Turn on & dimmest & level=15 </option>
</select>
</li>
</p>
<p>
<li><b>Step Three: schedule the action time</b></li>
<table>
<tr><th><b>MM -</b></th><th><b>DD -</b></th><th><b>YYYY
</b></th><th><b>HH :</b></th><th><b>MM</b></th></tr>
<tr>
<td>
<select name="month" size="3" >
<option value="01"> 01 </option>
<option value="02"> 02 </option>
<option value="03"> 03 </option>
<option value="04"> 04 </option>
<option value="05"> 05 </option>
<option value="06"> 06 </option>
<option value="07"> 07 </option>
<option value="08"> 08 </option>
<option value="09"> 09 </option>
<option value="10"> 10 </option>
<option value="11"> 11 </option>
<option value="12" selected> 12 </option>
</select>
</td>
<td>
<select name="day" size="3" >
<option value="01"> 01 </option>
<option value="02"> 02 </option>
<option value="03"> 03 </option>
<option value="04"> 04 </option>
<option value="05"> 05 </option>
<option value="06"> 06 </option>
<option value="07"> 07 </option>
<option value="08"> 08 </option>
<option value="09"> 09 </option>
<option value="10"> 10 </option>
<option value="11"> 11 </option>
<option value="12"> 12 </option>
<option value="13"> 13 </option>
<option value="14"> 14 </option>
<option value="15"> 15 </option>
<option value="16"> 16 </option>
<option value="17"> 17 </option>
<option value="18"> 18 </option>
<option value="19"> 19 </option>
<option value="20"> 20 </option>
<option value="21"> 21 </option>
<option value="22"> 22 </option>
<option value="23"> 23 </option>
<option value="24"> 24 </option>
<option value="25"selected> 25 </option>
<option value="26"> 26 </option>
<option value="27"> 27 </option>
<option value="28"> 28 </option>
<option value="29"> 29 </option>
<option value="30"> 30 </option>
<option value="31"> 31 </option>
</select>
</td>
<td>
<select name="year" size="3" >
<option value="2004" selected> 2004</option>
<option value="2005"> 2005</option>
<option value="2006"> 2006</option>
<option value="2007"> 2007</option>
<option value="2008"> 2008</option>
<option value="2009"> 2009</option>
<option value="2010"> 2010</option>
<option value="2011"> 2011</option>
<option value="2012"> 2012</option>
</select>
</td>
<td>
<select name="hour" size="3" >
<option value="01" selected> 01 </option>
<option value="02"> 02 </option>
<option value="03"> 03 </option>
<option value="04"> 04 </option>
<option value="05"> 05 </option>
<option value="06"> 06 </option>
<option value="07"> 07 </option>
<option value="08"> 08 </option>
<option value="09"> 09 </option>
<option value="10"> 10 </option>
<option value="11"> 11 </option>
<option value="12"> 12 </option>
<option value="13"> 13 </option>
<option value="14"> 14 </option>
<option value="15"> 15 </option>
<option value="16"> 16 </option>
<option value="17"> 17 </option>
<option value="18"> 18 </option>
<option value="19"> 19 </option>
<option value="20"> 20 </option>
<option value="21"> 21 </option>
<option value="22"> 22 </option>
<option value="23"> 23 </option>
<option value="24"> 24 </option>
</select>
</td>
<td>
<select name="minute" size="3" >
<option value="01" selected> 01 </option>
<option value="02"> 02 </option>
<option value="03"> 03 </option>
<option value="04"> 04 </option>
<option value="05"> 05 </option>
<option value="06"> 06 </option>
<option value="07"> 07 </option>
<option value="08"> 08 </option>
<option value="09"> 09 </option>
<option value="10"> 10 </option>
<option value="11"> 11 </option>
<option value="12"> 12 </option>
<option value="13"> 13 </option>
<option value="14"> 14 </option>
<option value="15"> 15 </option>
<option value="16"> 16 </option>
<option value="17"> 17 </option>
<option value="18"> 18 </option>
<option value="19"> 19 </option>
<option value="20"> 20 </option>
<option value="21"> 21 </option>
<option value="22"> 22 </option>
<option value="23"> 23 </option>
<option value="24"> 24 </option>
<option value="25"> 25 </option>
<option value="26"> 26 </option>
<option value="27"> 27 </option>
<option value="28"> 28 </option>
<option value="29"> 29 </option>
<option value="30"> 30 </option>
<option value="31"> 31 </option>
<option value="32"> 32 </option>
<option value="33"> 33 </option>
<option value="34"> 34 </option>
<option value="35"> 35 </option>
<option value="36"> 36 </option>
<option value="37"> 37 </option>
<option value="38"> 38 </option>
<option value="39"> 39 </option>
<option value="40"> 40 </option>
<option value="41"> 41 </option>
<option value="42"> 42 </option>
<option value="43"> 43 </option>
<option value="44"> 44 </option>
<option value="45"> 45 </option>
<option value="46"> 46 </option>
<option value="47"> 47 </option>
<option value="48"> 48 </option>
<option value="49"> 49 </option>
<option value="50"> 50 </option>
<option value="51"> 51 </option>
<option value="52"> 52 </option>
<option value="53"> 53 </option>
<option value="54"> 54 </option>
<option value="55"> 55 </option>
<option value="56"> 56 </option>
<option value="57"> 57 </option>
<option value="58"> 58 </option>
<option value="59"> 59 </option>
</select>
</td>
</tr>
</table>
</li>
</p>
<input type="submit" value="Execute"/>
</form>
<html>
<head>
<title>Display command line</title>
</head>
<body>
<?php
include "request.php";
$heyu ="/usr/local/bin/heyu2";
$monitoredRow = 8;
$house="a";
$dev=$_GET['device'];
$act=$_GET['command'];
if ($act == "off")
{
$action="TurnOff";
};
if ($act == "on5")
{
$action = "TurnOn";
$level = 5 ;
};
if ($act == "on10")
{
$action="TurnOn";
$level = 10 ;
};
if ($act == "on15")
{
$action = "TurnOn";
$level = 15;
};
$M = $_GET['month'];
$D = $_GET['day'];
$Y = $_GET['year'];
$H = $_GET['hour'];
$Min = $_GET['minute'];
$current_year = date('Y');
$current_month = date('m');
$current_day = date('j');
//echo "$current_day";
if(isset($action))
{
//exec("$heyu $action $house$dev $level");
echo "<b>";
echo "Your previous scheduling job is:<br/>";
echo "</b>";
echo ("at $heyu $action $house$dev $level"."$M-$D-$Y $H:$Min");
};
?>
|