|
PHP: Domótica fácil y económica con X10 y Linux, controlar tu casa desde el móvil
Mostramos en este tutorial cómo montar una casa domótica automatizada mediante X10 y un PC con Linux. Podremos, de forma muy fácil y económica, controlar casi cualquier aparato de nuestra casa. Todo ello desde el móvil o el PC (por Internet). Con X10 podremos encender y apagar luces, encender calefacción y otras muchas posibilidades. Mostramos cómo crear un servidor web y una página web para controlar la domótica de nuestra casa desde cualquier parte. Hay que decir que X10 no es la mejor opción para la domótica de la casa pues permite activación pero no permite saber el estado de cada dispositivo. Pero la gran ventaja es su sencillez y su coste muy asequible.
X10, domótica para la casaX10X10 es un protocolo de comunicaciones para el control remoto de dispositivos eléctricos, que utiliza la línea eléctrica (220V o 110V) preexistente, para transmitir señales de control entre equipos de automatización del hogar (domótica) en formato digital. Los dispositivos X10 que se comercializan son solo para uso individual y en entornos domésticos de hasta 250 m2, dada su limitación en ancho de banda y en el número máximo de dispositivos a controlar (256). No obstante existen elementos de última generación que incorporan, entre otros, los protocolos X-10 extendidos, para dar funcionalidad a soluciones de comunicación como la bidireccionalidad, solicitud de estados y comprobación de la correcta transmisión de las tramas. X10 fue desarrollada en 1978 por Pico Electronics of Glenrothes, Escocia, para permitir el control remoto de los dispositivos domésticos. Fue la primera tecnología domótica en aparecer y sigue siendo la más ampliamente disponible, principalmente por su característica de autoinstalable, sin necesidad de cableado adicional. Las señales de control de X10 se basan en la transmisión de ráfagas de pulsos de RF (120 kHz) que representan información digital. Estos pulsos se sincronizan en el cruce por cero de la señal de red (50 Hz ó 60 Hz). Con la presencia de un pulso en un semiciclo y la ausencia del mismo en el semiciclo siguiente se representa un '1' lógico y a la inversa se representa un '0'. A su vez, cada orden se transmite 2 veces, con lo cual toda la información transmitida tiene cuádruple redundancia. Cada orden involucra 11 ciclos de red (220 ms para 50 Hz y 183,33, para 60Hz). Primero se transmite una orden con el Código de Casa y el Número de Módulo que direccionan el módulo en cuestión. Luego se transmite otra orden con el código de función a realizar (Function Code). Hay 256 direcciones soportadas por el protocolo. El protocolo X10 consta de bits de direcciones y de órdenes. Por ejemplo, permite decir lámpara #3, ¡enciéndete! y el sistema procederá a ejecutar dicho mandato. Se pueden direccionar varias unidades antes de dar la orden. Existen múltiples instrucciones utilizadas por el protocolo entre las cuales destacamos: ON, OFF, All Lights ON, All off, DIM, BRIGHT. Los dispositivos están generalmente enchufados en módulos X10 (receptores). X10 distingue entre módulos de lámparas y módulos de dispositivos. Los módulos de lámpara proporcionan energía y aceptan órdenes X-10. Los módulos de dispositivos son capaces de gestionar cargas grandes (ej. máquinas de café, calentadores, motores,...), simplemente encendiéndolos y apagándolos. Si se desea controlar luces vía mandatos X-10, se deberá conectar la luz en un módulo de luz en la red y, a continuación, asignarle una dirección (A1, por ejemplo). Así, cuando se envíe la orden A1 encendido a través de los cables de la red eléctrica, la luz se debería encender. Lista de comandos X10
Requisitos para convertir nuestra casa en domótica con X10 y poder controlarla desde cualquier lugar con un móvil o PC con conexión a InternetDispositivos X10, emisor y receptoresComo es lógico, para poder convertir nuestra casa en una casa domótica y poder controlar determinados interruptores, luces y demás de forma remota, desde nuestro móvil (smartphone) o desde un PC con Internet, necesitaremos todos los dispositivos X10 que queramos, en función de los elementos que queramos controlar. Necesitaremos de forma obligatoria un CM15 PC Interface, que es un dispositivo con una conexión USB para el PC y una antena para emitir los comandos X10 por radiofrecuencia. Este dispositivo es necesario, el resto se adquirirán en función de los elementos que queramos controlar.
Equipo físico o virtual con sistema operativo Linux, Apache y PHPSi queremos realizar control remoto desde cualquier lugar del mundo (con conexión a Internet), desde un móvil o un PC, necesitaremos disponer de un PC o máquina virtual con Linux. Dicho PC o MV deberá ser un servidor web con Apache y PHP. En nuestro caso usaremos una máquina virtual con Linux Ubuntu Server. A continuación mostramos cómo montar un servidor web con Linux Ubuntu Server, Apache y PHP:
Redirección de puerto, Internet, dirección IP pública estáticaPara el acceso externo al control de nuestra casa domótica con X10 necesitaremos disponer de una IP pública estática (proporcionada por nuestro proveedor de servicios de acceso a Internet) o en su defecto de algún software que nos permita consultar la IP pública de nuestra casa, como por ejemplo AjpdSoft Aviso cambio IP pública. Por otro lado necesitaremos redireccionar o mapear el puerto 80 en el router o cortafuegos apuntando a la IP de nuestro equipo Linux Ubuntu Server. A continuación mostramos algunos tutoriales para hacer esto:
De tal forma que las peticiones que se hagan a la IP pública irán encaminadas a nuestro equipo Linux servidor web Apache y PHP. Preparar equipo con Linux para manejo de X10 con libusb y cm15ademoVamos a mostrar a continuación cómo preparar nuestro equipo con Linux Ubuntu Server para que pueda enviar comandos X10 y comunicarse con nuestros dispositivos X10. Para ello necesitaremos las libusb y cm15ademo. En primer lugar conectaremos el dispositivo CM15 PC Interface al PC con Linux por el puerto USB:
Instalar libusb en Linux Ubuntu ServerPara instalar las libusb, necesarias para la conexión USB con el módulo X10 CM15, ejecutaremos el siguiente comando en el shell (ventana de terminal) del equipo Linux Ubuntu, este comando descargará el paquete con las libusb:
Una vez descargado lo instalaremos con el comando:
Instalar cm15ademo en Linux Ubuntu ServerA continuación descargaremos el software que nos permitirá enviar los comandos X10 pendiante el puerto USB (con las libusb) desde nuestro equipo Linux Ubuntu. Para ello seguiremos estos pasos: 1. Crearemos una carpeta "install" con el comando:
2. Accederemos a esta carpeta:
3. Descargaremos el fichero cm15ademo.tar.gz con el comando:
4. Crearemos la carpeta cm15a:
5. Accederemos a la carpeta creada:
6. Descomprimiremos el fichero cm15ademo.tar.gz:
7. Editaremos el fichero makefile con nano:
8. A continuación ejecutaremos:
9. Copiaremos la carpeta cm15ademo a /usr/local/bin con:
10. Estableceremos los permisos apropiados a la carpeta con:
11. Comprobaremos que tenemos correctamente conectado y detectado el dispositivo X10 en el PC, en nuestro caso X10 Wireless Technology, Inc. ActiveHome (ACPI-compliant) con el comando:
Y ya podremos controlar la domótica de nuestra casa con sencillos comandos Linux, por ejemplo, para encender un módulo X10 etiquetado como C2: Ejecutaremos el comando:
Para apagarlo:
Que encenderá y apagará el dispositivo que tengamos conectado al X10 AM12 Appliance Module, que en nuestro caso es una lámpara:
Página web en PHP para controlar la domótica de nuestra casa con X10Una vez que tenemos configurado correctamente nuestro sistema Linux Ubuntu y hemos verificado que funciona la ejecución de los comandos X10, ahora podremos crear una sencilla página web de ejemplo usando PHP y la función PHP shell_exec que nos permitirá ejecutar comandos del sistema operativo Linux. En primer lugar accederemos a la carpeta raíz de nuestro servidor web Apache, para el caso de Linux Ubuntu, por defecto:
Ahora crearemos un fichero php con el nombre "domo_encender_c2.php":
Y añadiremos el siguiente código PHP: <?php $salida = shell_exec('/usr/local/bin/cm15a C2 on'); if (empty($salida)) { echo "Luz encendida."; } else { echo "Error al encender luz"; } ?> Repetiremos el proceso para apagar, el fichero "domo_apagar_c2.php", el código: <?php $salida = shell_exec('/usr/local/bin/cm15a C2 off'); if (empty($salida)) { echo "Luz apagada."; } else { echo "Error al apagar luz"; } ?> Ahora ya podremos probar nuestra domótica X10 desde Internet ejecutando en un navegador web:
Y para apagar:
Por supuesto, la web se puede y se debe mejorar, añadiendo seguridad, solicitando usuario y contraseña, guardando en base de datos el estado de cada dispositivo, haciendo una web más amigable con menús, incluso se pueden programar determinados comandos que ejecuten varias tareas a la vez. Con este tutorial hemos sentado las bases para poder controlar la domótica de nuestra casa desde el móvil, el resto se deja a la imaginación del usuario. AnexoResultado ejecución de comandos Linux:
Contenido fichero makefile original:
Artículos relacionados
CréditosArtículo realizado íntegramente por Alonsojpd miembro fundador del Proyecto AjpdSoft. Anuncios
Enviado el Sábado, 28 febrero a las 12:24:00 por ajpdsoft
|
|