Ayuda!: Conjugar php-script y html5, domótica

Hola, estoy haciendo un proyecto encaminado a la domótica.
Tengo el API en php de todo el sistema.
Estoy bloqueada porque no sé cómo incluír el código php en el html5.
Por ejemplo:
Yo tengo ésto en php:

// Include the library
include 'bootstrap.php';


// Create the object
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');


/**
* Add the first device, this can be our ceiling lights.
*/

// Add all devices you have ( codes )
$x10->addPowerDevice('a1');

// Only allow certain commands.( This is recommended but not required ).
// Forexample, you don't want to dim appliance modules.
// To see what features is available, you can: print_r(X10Device::getFeatures());
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);


// Turn 'a1' off.
$x10->dev('a1')->off();
// Turn 'a1' on!
$x10->dev('a1')->on();

// Dim the device.
$x10->dev('a1')->dim(50);

// Extended code.
$x10->dev('a1')->extendedCode('A1', '0F');

¿cómo podría yo hacer, por ejemplo, un botón "on/off", con ese código?. ¿Dónde tengo que poner los "$x10->....."?
Comentar que cada "$x10->..." es una órden ya que si yo ejecuto el código en el navegador, la luz se enciende, se regula a 50 y después se apaga, pero lógicamente no se ve nada en el navegador porque no hay nada en html.
De antemanos, gracias por vuestras respuestas.
Hola:

PHP se puede incluir en cualquier parte de un archivo cuya extensión sea PHP.

<!DOCTYPE html>
<html>
  <head>
    <title><?php echo "El título en PHP"; ?></title>
  </head>
  <body>
    <p><?php echo "Un párrafo en PHP"; ?></p>
    <?php
      $x = new X10( 'C:\Program Files (x86)\AHSDK\bin\ahcmd.exe' );
      // Suponiendo que $x->dev( 'a1' )->dim( 50 ) devuelva una cadena o algo que se pueda mostrar por pantalla:
      echo $x->dev( 'a1' )->dim( 50 );
    ?>
  </body>
</html>

Todo dependerá de lo que cada función devuelva.
Por ejemplo :$x10->dev('a1')->on(); ese código hace que se encienda la luz. ¿cómo lo pongo en un botón?.
Gracias por responder.
Aaaaaaaaaaaaaaaah... ahora entendí XD. Pensé que solo querías mostrar contenido HTML.

Como sabrás, PHP se ejecuta en el servidor, por ende este es procesado antes de mostrar el contenido en el navegador. Esto implica que no capturará los eventos que dispara el navegador. Para capturar los eventos se utiliza Javascript y este se encarga de enviar una petición asíncrona al servidor.

<html>
  <head>
    <title>Título</title>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script><!-- Con esta línea se incluye jQuery -->
    <script type="text/javascript">
      jQuery(document).ready(function($) {

        $('a.light-switch').click(function(e) {
          var self = $(this);
          var state = 1;

          if($(this).hasClass('on')) // Si tiene la clase 'on', entonces se apagará, de lo contrario se encenderá
            state = 0;

          var dev = $(this).attr('href'); // Se obtiene el atributo href del elemento clickeado
          $.ajax({
            url: 'script.php',
            type: 'get',
            data: {
              action: state,
              device: dev
            },
            success: function(data) {
              if(data.match(/\d/)) {
                if(data == 1) // Se actualiza el estado de la luz
                   self.addClass('on');
                else
                  self.removeClass('on);
                // Aquí pondrías más acciones, como por ejemplo, mostrar una imagen con una luz encendida o apagada según corresponda
              } else {
                // Ocurrió un error
              }
            },
            error: function(obj, txt, c) {
              // Obj es el objeto javascript que contiene Ajax.
              // txt es el texto del error
              // c, no recuerdo lo que es XD, por eso le pongo una c.
            }
          });
        });
      });
    </script>
  </head>
  <body>
      <!-- Suponiendo que todos estos sean "devices" existentes -->
      <a class="light-switch" href="luz1">Luz 1</a>
      <a class="light-switch" href="luz2">Luz 2</a>
      <div id="resultados">
      </div><!-- #resultados -->
  </body>
</html>

script.php
<?php
  // Los parámetros del script en Javascript llegarán por GET (a no ser de que se especifique lo contrario)
  $x = new X10( 'C:\Program Files (x86)\AHSDK\bin\ahcmd.exe' );
  $x->addPowerDevice( 'a1' );
  $x->dev( 'a1' )->setAllowedFeatures( X10Device::FG_ON_OFF );
  $dev = $_GET['device'];
  $return = 0;

  if( $_GET['action'] == 0 ) {
    $x->dev( $dev )->off();
  } else {
    $x->dev( $dev )->on();
    $return = 1;
  }

  echo $return;
  exit;
?>

No conozco cómo funciona la clase X10, así que no te podría decir que el código funcionará, pero esa es la idea.

JQuery es una librería para Javascript, la cual facilita mucho el trabajo con los eventos y demás.

Espero que te sirva.
Hola skaparate, no sabes cuánto agradezco la ayuda e interés que estás demostrando conmigo.
La verdad, es que tengo que reconocer que, como acabo de empezar en este mundo de programación web, estoy bastante floja de conocimientos.
Sinceramente, no he entendido demasiado lo del javascript, pero, desde mi más humilde opinión, creo que debe haber una forma más sencilla de hacer lo que quiero.
Tengo el apache con soporte php instalado en mi ordenador, por lo que no tengo problemas con la ejecución del lenguaje php.
Mira, hago una página a la que llamo "pruebas.php" cuyo contenido es el siguiente:
CODIGO PHP:

// Include the library
include 'bootstrap.php';


// Create the object
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');


/**
* Add the first device, this can be our ceiling lights.
*/

// Add all devices you have ( codes )
$x10->addPowerDevice('a1');

// Only allow certain commands.( This is recommended but not required ).
// Forexample, you don't want to dim appliance modules.
// To see what features is available, you can: print_r(X10Device::getFeatures());
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);


// Turn 'a1' off.
$x10->dev('a1')->off();
// Turn 'a1' on!
$x10->dev('a1')->on();

// Dim the device.
$x10->dev('a1')->dim(50);

// Extended code.
$x10->dev('a1')->extendedCode('A1', '0F');
Pues bien, con ese código y con los aparatos necesarios X10 conectados en mi pc, al ejecutar la página "prueba.php" en mi servidor usando el explorer, automáticamente, la luz (porque es el ejemplo), se enciende, después se nivela a 50% (dim) y, por último, se apaga.
Ésto significa que las siguientes órdenes se ejecutan automáticamente (he cambiado el órden, pero da igual):
$x10->dev('a1')->on();
$x10->dev('a1')->dim(50);
$x10->dev('a1')->off();

Por tanto, vuelvo a repetir, desde mis más humildes conocimientos, entiendo que no debe ser tan difícil crear en hmtl5 un formulario que recoja dichas órdenes en php para, por ejemplo, poder interactuar con ella siviéndome, por ejemplo, de un botón, o un menú de opciones, etc.. De tal manera, que sea yo la que controle cuando se encienda, se apague o se nivele la luz y no, como pasa ahora, que se ejecuta en forma de secuencia sin poder controlarlo.
No sé si llego a explicarme bien. Lo que sí sé es que si consigo hacer lo expuesto anteriormente, tendré el 80% del trabajo hecho.
Gracias otra vez por tu ayuda y paciencia.
Saludos.
Sí, te entiendo... la otra forma de hacerlo es enviar un formulario:

<form action="script.php" method="get">
  <input type="checkbox" name="a1" />A1
  <input type="checkbox" name="a2" />A2
  <input type="checkbox" name="a3" />A3
  <input type="submit" />
</form>

<?php
  // Los parámetros del script en Javascript llegarán por GET (a no ser de que se especifique lo contrario)
  $x = new X10( 'C:\Program Files (x86)\AHSDK\bin\ahcmd.exe' );

  if( isset( $_GET['a1'] ) )
    echo process( 'a1' );
  else
    echo process( 'a3', 0 );

  if( isset( $_GET['a2'] ) )
    echo process( 'a2', 1 );
  else
    echo process( 'a2', 0 );

  if( isset( $_GET['a3'] ) )
    echo process( 'a3', 1 );
  else
    echo process( 'a3', 0 );

  function process( $dev, $state ) {
    $x->addPowerDevice( 'a1' );
    $x->dev( 'a1' )->setAllowedFeatures( X10Device::FG_ON_OFF );
    $dev = $_GET['device'];
    $return = 0;

    if( $state == 0 ) {
      $x->dev( $dev )->off();
    } else {
      $x->dev( $dev )->on();
      $return = 1;
    }

    return $return;
?>
Bueno, me alegro decirte, skaparate, que gracias a tu ayuda he conseguido el inicio de lo que quería pues aún me queda mucho por hacer.
En concreto, lo que he hecho es lo siguiente:
Por ejemplo, para encender-apagar la lámpara del salón:

CÓDIGO HTML:

<html>
<form action="LamparasalonON.php" method="get">
<input type="submit" value="ON" name="ON" />
</form>

<form action="LamparasalonOFF.php" method="get">
<input type="submit" value="OFF" name="OFF" />
</form>
</html>

CÓDIGO PHP:

lamparasalonON.PHP:
<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$x10->dev('a1')->on();?>

lamparasalonOFF.php
<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$x10->dev('a1')->off();?>

Añadir que la lampara del salón viene controlada por el módulo a1.
De momento, con el código html introducido solo creo dos botones, uno para encender y otro para apagar, pero ya iré dándole forma con dibujos, etc...
Lo que no sé, es si será operativo crear tantos archivos php como aparatos y funciones de los mismos.
Es decir, tengo que crear código php para enceder a1, otro, para apagar a1 y así sucesivamente con todos los aparatos.
Pero bueno, es un comienzo.
Gracias de nuevo skaparate.
Bueno, comentar, que el el código que he puesto en mi anterior mensaje, no funciona.
El problema es que no sé porqué.
Si le doy al botón "on", me sale una página en el navegador con el código php que hay en lamapasalonON.php, pero no se ejecuta el script.
No lo entiendo.
Estoy harta.....!!!!!
Cuando ocurre eso es porque:

1.- El servidor puede estar apagado. Bastaría encenderlo o asegurarse de que esta encendido.
2.- El script que estas ejecutando no esta dentro de los directorios que el servidor reconoce, por ende los scripts se procesan como archivos de texto. En este caso tendrías que probar con otro script en la misma carpeta. Lo más simple puede ser:

<?php phpinfo(); ?>

Debería aparecer la información de PHP, de lo contrario es porque el servidor no reconoce el directorio.
Hola, skaparate: ME HA FUNCIONADO!!!!!.
El problema que tenía era la forma de crear los archivos php, no sé cómo lo hice que, efectivamente, cómo bien dices, el servidor me reconocía los sripts como text.
Lo único que he hecho es crearlos de nuevo, pero en dreamweaver poniendo html1 tradicional y no html5 como yo ponía. No sé por qué, pero bueno.
Ahora lo que me pasa es que al ejecutar el script, se me abre otra página en el navegador y tengo que darle atrás para ver los botones de ON, OFF y DIM. A ver cómo soluciono éso, aunque acepto sugerencias si no es mucho abusar de tus conocimientos que tan amablemente has compartido conmigo.
Muchísimas gracias de nuevo.
Hola aliy lo de volver a la pagina de los botones, salvo que skaparate diga otra cosa, que el entiende 1000 veces mas que yo. puede ser este simple codigo icluido en tu archivo formulario.php

<?php>
echo '<meta http-equiv="Refresh" content="1;url=archivodondeestanlosbotones.html"> ';
?>

Esto simplemente te envia pasado (en este caso) 1 segundo a la url indicada.
Es más fácil usar un header en php en vez de imprimir el meta en el navegador:
<?php

header("Location: urldelapagina");

?>
Hola, tengo que decir que tanto el header en php de Doodleo como el meta de madiu, los he probado y funcionan perfectamente. Quizá me decante más por el header de doodleo porque el regreso a la página de los botones es más instantáneo, pero bueno, ambos me sirven.
Yo lo había solucionado de otra forma, más complicada, pero con una ventaja, y es que al pulsar ON, aparece el dibujo de la lamparita encendida, y al pulsar OFF, aparece el dibujo de la lamparita apagada. Ésto lo he conseguido poniendo en los php que ejecutan las órdenes los mismos botones, pero añadiendo a cada uno (a cada php), el dibujo correspondiente de la lámpara.
No obstante, esta solución no me gusta porque al intertuar con los botones, me va cambiando la página de mi web y éso no lo quiero porque he puesto en la primera página un login para indentificarme yo con mi usuario y contraseña.
Por tanto, voy a usar el header en php, así que tengo buscar la forma de que el dibujito me cambie de apariencia al pulsar en la página de los botones el ON o el OFF. Una vez más y, por supuesto, sin ánimos de abusar, acepto sugerencias para hacer ésto.
Por último, comentar que la Opción DIM no me funciona. Pues no es tan fácil como el ON o el OFF ya que es necesario introducir valores comprendidos entre 0% y 100% y de la forma en que he creado el formulario no funciona. Así que, una vez más, acepto sugerencias.
De nuevo, agradecer vuestra ayuda e interés y añadir que estoy en un "peaso" de foro con gente estupenda.
Perdonad, pero no he puesto el código del DIM para que me podáis ayudar. ¡¡Qué tonta!!.
Es el siguiente:
hmlt:
<form action="A1DIM.php" method="get">
<input type="text" name="DIM" value="85" size="1" maxlength="3" >
<input type="submit" value="DIM" name="DIM" />
</form>
A1DIM.php:
<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$x10->dev('a1')->dim(50);
?>
El problema que tengo es que el formulario que he usado para controlar el dim (el dim es el regulador de intensidad de la luz y tiene que adquirir valores comprendidos entre 0 y 100), cuando le meto, por ejemplo, 67, no regula la luz al darle al botón submit.
Agradeceré vuestra ayuda.
Gracias.
Saludos.
En tu script siempre la intensidad de la luz es 50, pues el valor de DIM (del formulario) nunca se utilizaba. Con este script sí funciona (en teoría):

<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$dim = isset( $_GET['DIM'] ) && is_numeric( $_GET['DIM'] ) ? $_GET['DIM'] : 50;
$x10->dev('a1')->dim( $dim );
?>

Consejo: es una muy mala idea utilizar un script por cada artefacto. Por ahora funcionaría, pero deberías aprender más sobre PHP y Javascript para que sea menos trabajo el final :P.
De nuevo muchísimas gracias, Skaparate.
Probaré el código que me indicas para el dim y además voy utilizar todo el código que me has enseñado en post anteriores pues comparto contigo la idea de que es inoperativo hacer un script por cada aparato.
En cuanto a tu consejo, lo estoy haciendo, estoy aprendiendo php y luego aprenderé javascript, el problema es que voy muy lenta pues yo nunca he programado nada. Tengo conocimientos avanzados en informática pero solo a nivel de usuario, pero nunca a nivel de programación. Todo ésto de los lenguajes html, css, php, java, etc... es nuevo para mí y, me resulta complicado. Pero, a pesar de ello, estoy en ello.
Una vez más agradezco tu ayuda.
Ya te contaré esta tarde si funciona el script que me has puesto en tu mensaje anterior.
Saludos.
Hola de nuevo. Siento decirte que no funciona el código php que me pusiste en tu mensaje para el DIM.
Lo he hecho así para que lo veas y mires qué puede estar fallando:
html:
<form action="lamparasalondim.php" method="post">
<select name="dim" size="1">
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
<option value="70">70</option>
<option value="80">80</option>
<option value="90">90</option>
<option value="100">100</option>
</select>
<input type="submit" value="DIM" name="DIM" />
</form>

lamparasalondim.php:
<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$dim = isset( $_POST['DIM'] ) && is_numeric( $_POST['DIM'] ) ? $_POST['DIM'] : 100;
$x10->dev('a1')->dim( $dim );
header("Location: miproyecto.php");
?>
Ayúdame con ésto, anda, por fa...
Jajajaja, pero es que ahora estas usando el valor del submit en lugar del select. PHP es sensible a mayúsculas y minúsculas, por ende, dim es distinto a DIM o DiM.
Hola skaparate, siempre he utilizado el submit para enviar formulario en todos los html que he puesto en mis mensajes anteriores, incluído el del DIM. En cuanto a mayúsculas y minúculas, no hay ningún error.
De todas formas, ya lo he conseguido.
Verás, el código "$x10->dev('a1')->dim( 50 );", lo que hace es bajar la intensidad de la luz en intervalos de 50%, es decir, si aprieto el botón submit del formulario una vez, la intensidad de la luz se regula al 50%, si lo aprieto otra vez, baja otro 50%. Lo que he hecho es poner, en vez de 50, 20, así cada vez que aprieto el botón submit disminuye la intensidad en intervalos de 20 en una escala de 100.
Lo malo es que solo baja intensidad, pero no la sube. Por lo que tengo que apretar el botón submit OFF, luego el ON y con el DIM empezar de nuevo a regular la luz. Me gustaría también poder subir la intensidad con el DIM. Para ello, ayer probé poniendo en el formulario otro botón "reset", pero nada. ¿No existe algún botón con función inversa al submit? (o algo parecido).
Bueno, no sé cómo agradecerte el interés mostrado, el tiempo invertido conmigo y tu paciencia.
Muchísimas gracias.
No entendiste :P. En el form que hiciste hay dos elementos con un nombres similares:

<select name="dim">
<option...></option>
</select>
<input type="submit" value="Enviar" name="DIM" />

Esta bien. El problema es que en el script PHP estas usando el valor del submit en lugar del valor del select. Pon esto al comienzo del script para que veas la diferencia:

echo $_POST['DIM'] . '<br />';
echo $_POST['dim'] . '<br />';

El primero te mostrará el valor "Enviar", que es el atributo value del botón submit. El segundo te mostrará el valor (value) del option seleccionado.

<?php
include 'bootstrap.php';
$x10 = new X10('C:\Program Files (x86)\AHSDK\bin\ahcmd.exe');
$x10->addPowerDevice('a1');
$x10->dev('a1')->setAllowedFeatures(X10Device::FG_ON_OFF | X10Device::FG_DIM_BRIGHT);
$dim = isset( $_POST['DIM'] ) && is_numeric( $_POST['DIM'] ) ? $_POST['DIM'] : 100; // El error esta en esta línea, pero ¿por qué? Quiero que lo entiendas.
$x10->dev('a1')->dim( $dim );
header("Location: miproyecto.php");
?>