domingo, 15 de febrero de 2009

Instalar KNXWeb 0.6 en NSLU2 (unslung)

KNXWeb es una interfaz web hecha en PHP para poder controlar nuestra instalación domótica.
Utiliza para ello la interfaz XML de linknx, por lo que podremos inteactuar con los
objetos definidos previamente en linknx.

KNXWeb nos permitirá diseñar el aspecto y los elementos a controlar.
Podemos ver una demostración del funcionamiento de la versión 0.4 en http://ouaye.net/linknx/linknxwebsim/

Requisitos:
- unslung (yo he usado la versión 6.8) en nuestro NSLU2
- Tenerlo contectado a Internet
- lighttpd instalado y configurado
- linknk instalado y configurado

Pasos a seguir para instalar KNXWeb 0.6:

- Descargamos el código de knxweb y lo descomprimimos en el directorio /opt/share/www
cd /opt/share/www
wget http://ovh.dl.sourceforge.net/sourceforge/linknx/knxweb-0.6.tar.gz
gzip –d knxweb-0.6.tar.gz
tar xvf knxweb-0.6.tar.gz

Ya está instalado, ahora solo tendremos que acceder abriendo en un navegador la URL:
http://:8081/knxweb

Podemos cambiar el puerto cambiando la línea server.port=8081 en /opt/etc/lighttpd.conf.
El puerto 80 no se puede usar porque ya está usado por la interfaz web de configuración de unlung.

Referencias:
Proyecto KNXWeb en SourceForge - http://sourceforge.net/projects/knxweb/
Demostración KNXWeb 0.4 - http://ouaye.net/linknx/linknxwebsim/

Lighttpd + PHP en NSLU2 (unslung)

Vamos a instalar lighttpd con soporte PHP para posteriormente instalar KNXWeb y controlar nuestra instalación domótica vía web.
Lighttpd es un servicio web ligero, sencillo y potente.

Requisistos:
- Tener instalado unslung (yo he usado la versión 6.8) en nuestro NSLU2
- Tenerlo contectado a Internet

Pasos:
- Entrar al NSLU2 por SSH o telnet
- Para instalar lighttpd ejecutamos:
ipkg install lighttpd

- Para instalar el soporte PHP:
ipkg install php
ipkg install php-fcgi

- Editamos /opt/etc/lighttpd/lighttpd.conf
nano /opt/etc/lighttpd/lighttpd.conf

Modificamos las secciones server.modules y cgi.assign para que queden de la siguiente forma:

server.modules = (
"mod_cgi",
"mod_access",
"mod_accesslog"
)

# soporte para PHP.
cgi.assign = (
".php" => "/opt/bin/php-fcgi",
)

El módulo mod_accesslog se utiliza solo para ver los logs de conexiones. Realmente no es necesario.
No usamos el módulo fastcgi porque el php que se instala por defecto en unslung no lo soporta, utilizamos en su lugar el módulo CGI (mod_cgi)

- Reiniciamos el sistema

Lighttpd sirve los documentos ubicados en /opt/share/www/
El puerto de acceso por defecto que instala lighttpd en unslung es el 8081, por lo que para acceder al servicio tendremos que poner:
http://:8081
Ejemplo:
http://192.168.1.77:8081

Referencias:
Lighttpd - http://ouaye.net/linknx/linknxwebsim/

sábado, 14 de febrero de 2009

Instalar Linknx en NSLU2

En este post muestro las instrucciones paso a paso para instalar linknx y hacer una configuración muy básica.

Requisitos:
- unslung (yo he usado la versión 6.8) en nuestro NSLU2
- Tenerlo contectado a Internet
- eibd instalado y configurado

Instalación Linknx:

- Entrar por SSH o telnet al NSLU2
- Descargar el binario de linknx de SourceForge
cd /tmp
wget http://downloads.sourceforge.net/linknx/linknx-0.0.1.25-nosmtp-optware-FSG3.tgz


No he descargado el correspondiente a NSLU2 ya que no funcionaba. Creo que el problema proviene de la biblioteca libesmtp.

- Descomprimimos el fichero .tgz
gzip –d linknx-0.0.1.25-nosmtp-optware-FSG3.tgz
tar xvf linknx-0.0.1.25-nosmtp-optware-FSG3.tar


- instalamos el paquete de linknx
ipkg install linknx_0.0.1.25-3_armeb.ipk

- instalamos otros paquetes necesarios (alguno puede que ya esté instalado)
ipkg install libcurl
ipkg install glib
ipkg install libstdc++


- Creamos el fichero /opt/etc/INIT.d/S71linknx con el siguiente contenido
#!/bin/sh
/opt/bin/linknx -c /home/linknx/linknx.xml -d


- Damos permisos de ejecución al fichero
chmod 755 /opt/etc/init.d/S71linknx


Configuración básica para linknx:


- Creamos el directorio /home/linknx
mkdir /home/linknx

- Dentro de este directorio creamos el fichero linknx.xml
usamos el editor que mas nos guste, yo usaré nano (si no está instalado: ipkg install nano)
nano /home/linknx

El contenido del fichero:
<config>
<objects>
<object type="1.001"
id="luz_salon_ONOFF" gad="1/1/10">
Luz Salon ON/OFF</object>
</objects>
<rules>
</rules>
<services>
<knxconnection url="ip:127.0.0.1">
<xmlserver type="inet" port="1028">
<exceptiondays>
<date day="1" month="1">
</date>
</exceptiondays>
</xmlserver>
</knxconnection></services>


No configuramos el envio de correos. Existe un problema con la librería libestmp.

- Reiniciamos de forma que se arranque automaticamente.

Si queremos ver si funciona linknx, los telegramas que recibe y el funcionamiento de las reglas, iniciamos otra sesión SSH o telnet y lo arrancamos manualmente sin la opción -d (demonio)
/opt/bin/linknx -c /home/linknx/linknx.xml

Cada vez que se reciba un telegrama de una dirección de grupo configurada o se active una regla o temporizador, lo veremos en la consola.

En el wiki de linknx tenemos toda la documentación sobre linknx. Configuración, interacción via interfaz XML, problemas, etc.

Por último, tengo que mencionar un comportamiento un poco raro para cuando creamos reglas. Si utilizamos una condición que queremos que se active cuando cambie el estado de un objeto, no olvidar poner "trigger=true" en la condición. El comportamiento extraño consiste en que solo se activa la regla cuando cambia el estado del objeto y tiene el valor que nos interesa, no cada vez que se reciba un telegrama con ese valor.


Referencias:
Pagina oficial Linknx
Wiki Linknx

Acceder al bus KNX con interfaz USB en NSLU2

Vamos a ver como instalar eibd y configurarlo con una interfaz USB (en mi caso de JUNG)

Antes de nada hemos de comprobar que nuestro interfaz USB está soportado:
http://bcusdk.wiki.sourceforge.net/SupportedHardware

Para instalar eibd en el NSLU2 seguimos los siguientes pasos:
- Configuramos el NSLU2 para que tenga acceso a Internet.
- Entramos por SSH o telnet al NSLU2 y ejecutamos
ipkg install http://ouaye.net/linknx/optware-nslu2/pthsem_2.0.7-1_armeb.ipk
ipkg install http://ouaye.net/linknx/optware-nslu2/eibd_0.0.3-4_armeb.ipk

(también podemos descargar los paquetes .ipkg en /tmp y luego instalarlos con ipkg install

- Creamos el fichero /opt/etc/init.d/S70eibd con el siguiente contenido:
#!/bin/sh
usbport=$(findknxusb | /bin/sed -e '1 d' -e 's/device //' | /usr/bin/cut -d':' -f1-2)
eibd -d -D -S -T -i usb:$usbport

- Damos permisos de ejecución al fichero
chmod 755 /opt/etc/init.d/S70eibd

- Reiniciamos el NSLU2 con el USB conectado y debería cargar sin problemas.
Podemos comprobar que se está ejecutando eibd listando los procesos en ejecución con el comando ps -a

En caso de que eibd no se arranque automaticamente, probablemente tendremos una interfaz "delicada". En http://bcusdk.wiki.sourceforge.net/ABB_USB podemos ver cuales funcionan, cuales necesitan "un apaño", y el motivo del problema.

El "apaño" en cuestión, consiste en editar el fichero /opt/etc/init.d/S70eibd para que quede de la siguiente manera:
#!/bin/sh
usbport=$(findknxusb | /bin/sed -e '1 d' -e 's/device //' | /usr/bin/cut -d':' -f1-2)
bcuaddrtab -w 0 usb:$usbport && eibd -d -D -S -T -i usb:$usbport

La versión de eibd que se ha instalado nos permitirá usar ETS para programar nuestra instalación KNX. Simplemente crearemos una nueva conexión en ETS del tipo KNXNet usando la IP del NSLU2.


Referencias:
BCUSDK con eibd de la Universidad de Viena (en SourceForge)
Problemas con algunas interfaces USB