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Í

jueves, 26 de septiembre de 2013

OpenHAB, domótica abierta (parte 1).

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

Estos últimos días he estado buscando un sistema que me permitiera controlar el sistema de riego por goteo que estoy desarrollando (con Arduino y unas electroválvulas) para no tener que 'reinventar la rueda'. Hay varias posibilidades, entre ellas las dos que parecen mas viables son OpenSprinkler y OpenHAB.

OpenSprinkler es, como su nombre indica, un controlador de riego por goteo de código y hardware abierto, conectable a Internet. Por su lado OpenHAB es algo más general, es un sistema Java que permite interoperar con sistemas más concretos como pueden ser KNX, X10, correo electrónico, sistemas de videovigilancia, MQTT, RFXCom, 1wire, Somfy, Google Services, SNMP, incluso con el propio OpenSprinkler... Vamos, que OpenHAB es un monstruo.

¿Dónde queríamos llegar? A controlar un sistema casero de riego por goteo.

¿A donde podemos llegar? A controlar desde la misma plataforma, desde cualquier lugar, con el móvil, integrado con Google Calendar el sistema de riego por goteo y la domótica de la casa.

La elección es obvia: OpenHAB, aunque sabemos que nos costará algo más que comprar un simple aparato, pero la cosa promete, y mucho. 

Vamos allá. En primer lugar vamos a definir como está el proyecto para domotizar la casa y dónde nos puede ayudar OpenHAB: Tenemos una Raspberry Pi con una serie de sensores, y unas farolas controladas mediante unos relés y un Arduino Ethernet. Esto se puede integrar muy fácilmente en OpenHAB. Muy por encima, OpenHAB es un sistema basado en una serie de elementos (un sistema de video, unos sensores remotos, un calendario de Google, un sistema domotico KNX, ...) conectados a un bus de eventos que nos permite reaccionar ante ellos. Por ejemplo: podriamos tener un sensor de temperatura 1wire conectado al bus, y que cuando el sistema detecte cierta temperatura, nos active el aire acondicionado de la casa, o podriamos definir un evento a las 7:00am todos los dias en un calendario de google conectado al bus, y que cuando suceda, el sistema nos active el calentador de agua que tenemos en casa conectado a un enchufe controlado por radiofrecuencia. ¿Qué os parece? Pues sí, ¡una pasada! 

Esquema OpenHAB

En los próximos posts iré desarrollando los siguientes puntos para hacer una guía...

2. Configurando y Arrancando el sistema,
3. Añadir nuevos módulos: RFXCOM, Google Calendar, GMail...

y lo que me vayáis comentando que os pueda ser de utilidad también lo iré investigado. Espero que os guste tanto como a mi :)

PUEDE COMENTAR ESTA ENTRADA AQUÍ

martes, 17 de septiembre de 2013

Enchufes radiocontrolados (parte 3), esquemas

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

Aquí os dejo los esquemas que he usado para hacer las pruebas con los módulos de radiofrecuencia y los enchufes, que parece que con la foto no quedaban demasiado claros. En el esquema del sistema emisor, hay que tener en cuenta que tenéis que poner un cable a modo de antena en el pin marcado como ANT para aumentar el alcance de la señal...

Módulo receptor


Módulo emisor

PUEDE COMENTAR ESTA ENTRADA AQUÍ