RoadTest: Raspberry Pi and EnOcean Internet of Things Pack
Author: derickrd
Creation date:
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: null
What were the biggest problems encountered?: El sensor de temperatura no es sencillo de configurar. A base de prueba y error me di cuenta que el atributo subType tenía que ser TempSensor.05. Fuera de eso, la configuración es muy sencilla.
Detailed Review:
El módulo de comunicación y el kit de sensores de EnOcean permiten transformar la Raspberry Pi en una interfaz entre el Internet y el mundo físico. Por medio de sus sensores de bajo consumo eléctrico, se comunican con el módulo EnOcean Pi para centralizar los datos en la Raspberry Pi. Ésta a su vez pre-procesa los datos para depositarlos en alguna base de datos en la red, dando la capacidad de monitorear y controlar desde cualquier dispositivo conectado a Internet.
El kit contiene:
Las características del sistema y sensores:
Configuración Inicial
Primero se debe instalar el sistema operativo para la Raspberry Pi. De las diferentes variaciones, opté por usar Raspbian que está basado en Debian y con el que estoy más familiarizado. La imagen de disco se encuentra en la página oficial de Rasberry Pi en la sección de Downloads.
Al terminar la instalación se debe configurar completamente el sistema, para hacer esto hay que tener acceso a la línea de comandos por lo que se puede conectar un teclado y un monitor. Por otro lado, existe la manera de tener acceso a la terminal si se conecta el dispositivo a la red local y utilizando el comando SSH. Es necesario identificar identificar la IP que toma la Raspberry Pi y utilizar el siguiente comando en una computadora conectada la misma red local.
ssh pi@10.0.1.2
La contraseña predeterminada es raspberry.
Para terminar de configurar el sistema se usa el siguiente comando:
sudo raspi-config
La configuración crítica es expander el sistema de archivos (rootfs) y seleccionar lenguaje y localización (set locale), al terminar estas configuraciones se recomienda reiniciar la Raspberry Pi.
Al configurar el lenguaje y la localización (locale) me topé con el problema que no se establecía el valor predeterminado en la variable LC_ALL. Esto se puede verificar rápidamente con el comando:
locale
En caso de que la variable LC_ALL no tenga ningún valor asignado se puede solucionar agregando la siguiente línea al final del archivo .bashrc y reiniciar.
export LC_ALL=C
Instalación de EnOcean
Configurar la Raspberry Pi para que maneje los productos de EnOcean es bastante sencillo. Hay un video donde se explica en inglés la configuración de manera rápida pero suficiente como para hacerlo uno mismo. El video se puede encontrar aquí. Todo el proceso no toma más de 30 minutos.
Primero se pide inhabilitar la consola de la comunicación serial. Esto se puede realizar por medio de un script disponible en GitHub
https://github.com/lurch/rpi-serial-console
NOTA: No se debe conectar el módulo de comunicación a la Raspberry Pi sino hasta inhabilitar la comunicación serial.
Para instalar se ejecutan los siguientes comandos:
sudo wget --no-check-certificate https://raw.github.com/lurch/rpi-serial-console/master/rpi-serial-console -O /usr/bin/rpi-serial-console && sudo chmod +x /usr/bin/rpi-serial-console
Incluí al comando la bandera —no-check-certificate porque mi Raspberry Pi no bajaba nada de GitHub ya que no estaba en la lista de certificados. Intenté actualizar la lista y aún así tenía el problema. Decidí no batallar y le indiqué al comando wget que no revise si el dominio está dentro de los certificados de confianza. GitHub es confiable, lo que debe uno verificar es el código que estamos tratando de instalar, por lo que se recomienda precaución al ejecutar código ajeno.
Al terminar de ejecutar el wget, se procede a correr siguiente comando para inhabilitar la consola de comunicación serial.
sudo rpi-serial-console disable
El paso que sigue involucra instalar Perl. Esto se realiza por medio del siguiente comando:
sudo apt-get install perl libdevice-serialport-perl libio-socket-ssl-perl libwww-perl
Aquí es donde importa bastante la configuración de localización, ya que si no se tiene configurado completamente el proceso de instalación de Perl puede abortar.
Lo que sigue ahora es instalar el software que se utiliza para interpretar los mensajes generados por el Módulo de comunicación de EnOcean. Se utiliza el servidor de Perl llamado FHEM, se ejecuta como un servidor y automatiza tareas comunes de domótica. Se puede accesar por medio de TCP/IP, telnet, web, etc.
Los comandos para la instalación de FHEM son:
wget http://fhem.de/fhem-5.5.deb sudo dpkg -i fhem-5.5.deb
FHEM se instala en la carpeta /opt/fhem y debe iniciar automáticamente al encender la Raspberry Pi. Al terminar de ejecutar los comandos anteriores se debe reiniciar el dispositivo. He visto en algunos blogs que se han encontrado problemas con la asignación de los permisos de usuarios. En mi caso no tuve ningún problema, aunque en caso de tenerlos se puede solucionar mediante lo siguiente:
sudo usermod -a -G tty pi sudo usermod -a -G tty fhem
Para revisar que la instalación fue exitosa hay que acceder al servidor FHEM por medio de su interfase Web. Esto se logra utilizando una computadora conectado a la red local (la misma a la que esté conectada la Raspberry Pi), en el navegador se debe ingresar la siguiente dirección:
Donde la dirección 10.0.1.2 se debe reemplazar por la dirección IP que tenga actualmente la Raspberry. Debe aparecer la pantalla principal del servidor FHEM. En caso de que no aparezca nada, revisa los logs por errores en la instalación de alguno de los paquetes.
Configurar EnOcean
Al momento de recibir energía, los sensores empiezan a enviar paquetes al módulo de comunicación y el servidor FHEM los configura automáticamente, esto en caso que haya comunicación exitosa entre el módulo y el servidor. Hay algunos casos en los que se deben realizar ajustes para que todos los sensores funcionen como se debe.
Primero se debe definir el módulo de comunicación dentro del servidor FHEM. En la interfase web del FHEM, hay una sección donde se editan archivos de configuración que se llama “Edit files”. Al entrar a esa sección se muestran todos los archivos que son editables, se debe seleccionar fhem.cfg. Al final del archivo se agrega la siguiente línea.
define TCM310_0 TCM 310 /dev/ttyAMA0@57600
Al terminar, presiona los botones de Learn en cada sensor para que sean reconocidos y configurados automáticamente. El servidor FHEM ya debe estar recibiendo mensajes de los sensores. En mi caso todo funcionaba bien a excepción del sensor de temperatura, el cual necesitó de configuración adicional y la falta de documentación al respecto hizo la tarea un poco lenta, aunque es bastante sencillo.
El sensor de temperatura se identifica como un sensor genérico, con el atributo subType = sensor. Para solucionar esta situación se debe configurar como sensor de temperatura cambiando el atributo subType a tempSensor.05.
Para los demás sensores no es necesario cambiar nada ya que con el botón de Learn es más que suficiente.
Los datos
Para acceder a los datos de los sensores se puede por medio de los archivos de log en el servidor FHEM. Por otro lado me parece más cómodo por medio de la línea de comandos, aunque una clase en Python no estaría nada mal y ya estoy en eso para que se haga realidad y se pueda trabajar en Python.
El comando para mostrar una lista de los dispositivos encontrados es:
/opt/fhem/fhem.pl localhost:7072 list
Por otro lado para acceder al dato solamente se debe utilizar el siguiente comando:
/opt/fhem/fhem.pl localhost:7072 "list EnO_sensor_01818358 STATE"
Conclusiones
En conclusión, es un sistema bastante fácil de configurar y operar. El manejo de radio frecuencias para la comunicación es ideal para aplicaciones industriales. Este sistema es ideal para una aplicación de Internet of Things o de M2M. Por otro lado, hay algunas dificultades que se deben resolver al momento que se haga más popular esta tecnología. Entra las dificultades se encuentra que la mayor parte de la documentación del servidor FHEM está en alemán, por lo que dificulta la tarea para los que no leemos alemán. Además, la falta de gabinetes para los sensores hace que la prueba en campo tenga variables no deseadas como humedad y polvo.
Como kit de evaluación, es una herramienta muy valiosa para cualquier persona o empresa que desee incorporar una nueva tecnología al mundo de la domótica y de la telemetría.