viernes, 27 de septiembre de 2013

Instalación de Raspbian y OpenHAB en la Raspberry Pi (de 0 a OpenHAB en un post)

NOTA: Este blog se ha trasladado a trasteandoarduino.com.

Hola de nuevo. Hoy vamos a empezar por la instalación del sistema desde 0, para poder ir montando todo el sistema domótico sobre Raspbian.

Instalación de Rasbian

Lo primero que hacemos es bajar la imagen del sistema para grabarlo en una tarjeta SD. Como el sistema irá ubicado en una caja estanca en la que, como habéis visto en las entradas anteriores del blog, se generará bastante calor,  yo recomendaría una tarjeta de unos 16Gb, rápida, y que tolere bien las altas temperaturas: una Sandisk Ultra 16GB (SDSDU-016G-U46) no parece mala opción, soporta un rango de temperaturas de -25C a +85C, con unas velocidades teóricas de 30MB, y vale unos 14€ en Amazon.

Para bajar la imagen, vamos a la web oficial de descargas de la Raspberry Pi, y la descargamos haciendo clic en el enlace de fichero zip. Lo descomprimos, y una vez que tenemos el fichero de la imagen listo, lo grabamos en la tarjeta SD, en mi caso esta en /dev/mmcblk0 con el comando:

sudo dd if=2013-09-10-wheezy-raspbian.img of=/dev/mmcblk0

Unos 8 minutos después ya tenemos la imagen grabada en la tarjeta. Expulsamos la tarjeta, la volvemos a meter para que se recargue el sistema recargue la tabla de particiones de la misma y abrimos el programa gparted para redimensionarlas:

sudo gparted

Seleccionamos el dispositivo correspondiente a la tarjeta, en mi caso /dev/mmcblk0, y desmontamos las particiones que haya  montadas. Si no lo hacemos no nos dejará redimensionarlas. Hacemos clic con el botón derecho sobre la partición mas grande, seleccionamos 'redimensionar/mover', y en el cuadro 'tamaño nuevo' introducimos 4096 o 8192 (4Gb u 8Gb). Después creamos una nueva partición con el espacio restante haciendo clic en dicho espacio con el botón derecho, seleccionamos 'nueva' y sistema de archivos 'ext4' (en etiqueta podeis poner 'Data' o lo que mas os guste, ya que sera una partición para datos y logs, que más tarde usaremos). Pulsamos 'añadir' y después sobre el botón verde para aplicar todos los cambios. Esperamos unos 30s y listo, ya podemos salir de GParted.

Extraemos la tarjeta nuevamente y la volvemos a meter para que nos monte automágicamente  las particiones. 

Ahora vamos a configurar el sistema para que cuando metamos la tarjeta en la Raspberry Pi ya tenga su IP fija. Para ello abrimos el fichero /etc/network/interfaces de la tarjeta (como usuario root), que contendrá algo como:
auto lo

iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

y cambiamos las linea de eth0 por estas:
auto eth0
iface eth0 inet static
       address 192.168.1.216
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.1
       dns-nameservers 8.8.8.8

Deberéis cambiar las direcciones por las que sean validas para vuestra red, en mi caso esas nos irán bien. El resultado será algo parecido a esto:
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
       address 192.168.1.216
       netmask 255.255.255.0
       network 192.168.1.0
       broadcast 192.168.1.255
       gateway 192.168.1.1
       dns-nameservers 8.8.8.8

allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp

Desmontamos las particiones de la tarjeta, si están montadas, con:

umount /dev/mmcblk0*

Y ya podemos ponerle la tarjeta a la Raspberry Pi, iniciarla y acceder por ssh con el comando ssh pi@192.168.1.216 y poniendo de contraseña: raspberry. Lo primero que hay que hacer es cambiar las contraseñas de los usuarios pi y root:
pi@raspberrypi ~ $ passwd
Changing password for pi.
(current) UNIX password: raspberry
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

pi@raspberrypi ~ $ sudo passwd
Enter new UNIX password: 
Retype new UNIX password: 
passwd: password updated successfully

Y acto seguido actualizamos el sistema:

sudo apt-get update
sudo apt-get upgrade

Como parte opcional, si tenemos IP dinámica, podemos instalar  un software como el de No-IP para tener acceso desde Internet a nuestra RPi, lo instalamos siguiendo las estas instrucciones, y ya tenemos el sistema casi listo para empezar a trabajar con él.

Lo único que nos falta es montar la partición que usaremos para datos en /mnt/Data, para ello creamos la carpeta:

mkdir /mnt/Data

Y para automontarla cada vez que se inicie el equipo, añadimos la siguiente linea al fichero /etc/fstab:

/dev/mmcblk0p3  /mnt/Data       ext4    defaults       0       2

De momento podemos montarla con mount -a sin tener que reiniciar.


Utilidades básicas

Si necesitáis instalar alguna utilidad con la que os manejéis bien, ahora es el momento. A mi me gusta instalar el Midnight Commander (sí, soy de la generación del Comandante Norton de MSDOS, que le voy a hacer...):

apt-get install mc arduino p7zip-full dos2unix


Instalación de Java

Descargamos la ultima version de Java disponible, desde otro equipo con Firefox por ejemplo, con soporte headless/server/hardfp/ARMv6/7 y lo transferimos a la RPi con el comando:

scp jdk-7u40-linux-arm-vfp-hflt.tar.gz root@192.168.1.216:/root

Volvemos a la Raspberry y ejecutamos:

sudo mkdir -p -v /opt/java 
sudo tar xvzf ~/jdk-7u40-linux-arm-vfp-hflt.tar.gz -C /opt/java
rm ~/jdk-7u40-linux-arm-vfp-hflt.tar.gz
sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.7.0_40/bin/java" 1
update-alternatives --set "java" "/opt/java/jdk1.7.0_40/bin/java"
java -version

La salida del último comando nos debe decir que estamos usando el JDK 1.7 de Oracle si todo ha ido bien.

Editado (8/10/2013): Ahora basta con un simple apt-get install oracle-java7-jdk y luego update-alternatives --set java /usr/lib/jvm/jdk-7-oracle-armhf/jre/bin/java

 

Instalación de INO

Como no tenemos entorno de programación gráfica para Arduino, a tratarse de un equipo sin monitor, necesitamos una herramienta que nos facilite la programación desde la linea de comandos. Podéis ver como se instala y como funciona en una entrada anterior que dediqué a este programa.


Instalación de OpenHAB

OpenHAB esta formado por varios paquetes:
  • El runtime. Es el sistema en sí, el nucleo, que deberemos instalar en la Raspberry Pi.
  • Los addons. Son los módulos que permiten la interconexión de openHAB con KNX, X10, HTTP, etc... Al menos hay que bajarlo y tenerlo disponible para ir copiando a mano los módulos que vayamos necesitando.
  • Designer. Es es interfaz para configurar el sistema. No es necesario instalarlo en la Raspberry, solo en el equipo en el que vayamos a desarrollar.
  • Demo configuration. Es una configuración de ejemplo que podemos bajar para echarle un vistazo y trastear sobre ella.
  • Greent. Es una interfaz de la web que nos proporciona el runtime. Opcional.
Para empezar bajamos todos los paquetes de esta web:

mkdir openhab
cd openhab 
wget https://openhab.googlecode.com/files/openhab-runtime-1.3.1.zip
wget https://openhab.googlecode.com/files/openhab-addons-1.3.1.zip
wget https://openhab.googlecode.com/files/openhab-demo-configuration-1.3.1.zip
wget https://openhab.googlecode.com/files/openhab-greent-1.3.1.zip
unzip openhab-runtime-1.3.1.zip -d runtime
unzip openhab-addons-1.3.1.zip -d addons
unzip openhab-demo-configuration-1.3.1.zip -d demo
unzip unzip openhab-greent-1.3.1.zip -d greent 

Ya podemos empezar a trastear...

Para probar hasta la próxima entrada podéis copiar el contenido de la carpeta demo/configurations a runtime/configurations y arrancar el sistema openHAB ejecutando el script start.sh. Cuando haya terminado de iniciarse (puede tardar un minuto y algo) os conectáis con un navegador a la siguiente web:

http://192.168.1.216:8080/openhab.app?sitemap=demo

y si os instaláis en el móvil la aplicación HABdroid ya ni os cuento... :)

EDITADO 1/10/2013:
Además de copiar el contenido de demo/configurations, hay que copiar el contenido de demo/addons a runtime/addons para que funcione correctamente el sitemap demo.

PUEDE COMENTAR ESTA ENTRADA AQUÍ

2 comentarios:

  1. Muy bueno la verdad, a ver si junto con los enchufes rc también funciona y ya sería el no va más de la feria jejeje

    ResponderEliminar
    Respuestas
    1. Pues en ello estoy. Aunque debido al poco alcance que tenía el emisor que probé en una entrada anterior he decidido comprar algo 'más potente': un modulo RFXtrx433 de RFXComm, que además permite gestionar muchas mas cosas, como sensores de cierre de ventanas, motores de persianas, sensores OWL, y otros muchos. Se pueden ver las especificaciones aquí http://www.rfxcom.com/store/Transceivers/12103

      Eliminar

Nota: solo los miembros de este blog pueden publicar comentarios.