Chris Pollett > Students >
Qian

    ( Print View )

    [Bio]

    [Project Blog]

    [CS297Proposal]

    [Del1]

    [Del2]

    [Del3]

    [CS297Report-PDF]

    [CS298Proposal]

    [CS298Report-PDF]

    [CS298Presentation-PDF]

                          

























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.

GUI_for_user_configuration Formatted_at_command

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&amp;action=allon">All On
</a>]&#160;&#160;[<a href="<?= $baseURL; ?>/library/?sublibrary=X10&amp;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&amp;dev=$i";
    echo
      "&amp;action=$unstate\">$state</a></td><td>";
    echo
      "[<a href=\"$baseURL/library/?sublibrary=X10&amp;dev=$i&amp;action=dimb&amp;level=15\">Dimmest
</a>]&#160;&#160;";
    echo
      "[<a href=\"$baseURL/library/?sublibrary=X10&amp;dev=$i&amp;action=dimb&amp;level=10\">Dimmer
</a>]&#160;&#160;";
    echo
      "[<a href=\"$baseURL/library/?sublibrary=X10&amp;dev=$i&amp;action=dimb&amp;level=5\">Dim
</a>]&#160;&#160;";
         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&nbsp;lamp" selected> Bedsidelamp </option>
<option value="Bedroom&nbsp;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 &amp; dim &amp; level=5 </option>
<option value="on10"> Turn on &amp; dimmer &amp; level=10 </option>
<option value="on15"> Turn on &amp; dimmest &amp; level=15 </option>
</select>
</li>
</p>

<p>
<li><b>Step Three: schedule the action time</b></li>
<table>
<tr><th><b>MM&nbsp;-</b></th><th><b>DD&nbsp;-</b></th><th><b>YYYY&nbsp;&nbsp;
&nbsp;&nbsp;&nbsp;&nbsp;
                                          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
      </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");
         };

?>