Internet de las cosas (IoT) está haciendo cambiar nuestro entorno para hacerlo mucho más eficiente. En el caso práctico que describimos, se vé cómo mediante técnicas M2M solucionamos un problema de la vida cotidiana.

Versión para impacientes

En el vídeo se ve cómo el móvil detecta que llegamos a casa y manda abrir la puerta del garaje. Sigue leyendo para ver cómo funciona!

Un caso práctico

María José y Alejandro viven en una casa en las afueras. Todos los días al llegar del trabajo con sus vehículos accionan el mando a distancia del garaje para aparcar. Desde hace algún tiempo estaba siendo necesario estar cada vez más cerca de la puerta para poder activarla. Eso los obligaba a detenerse en mitad de la calle esperando a que la puerta se abriese y congestionando el tráfico. Tras cambiar pilas en los mandos y verificar la antena del receptor de la puerta, se llegó a la conclusión de que se trataba de un problema de interferencias.

Describiendo la solución

La primera aproximación pasaba por cambiar la forma en que se accionaba la puerta. Las opciones eran distintas bandas de radio frecuencia o infrarojos, soluciones todas ellas que podrían verse afectadas por interferencias o corto alcance. Se optó por accionar el mecanismo de la puerta conectando ésta a Internet. Dicha solución sería óptima para resolver el problema del guiado físico añadiendo flexibilidad para dotar de lógica al sistema.

Hardware en la puerta del garaje

En cuanto al hardware, para poder ordenar la apertura y cierre de la puerta, tendríamos que proporcionar una pasarela entre la puerta e Internet. Nuestra opción será integrar en la placa del motor una plataforma que ofrezca lo siguiente:

  • Puertos de entrada y salida (mediante una placa con circuitería para controlar relés optoacoplados).
  • Conectividad TCP/IP.

Optamos por usar una Raspberry Pi. La Raspberry integra en una pequeña placa de 85 x 56 mm toda la funcionalidad requerida. Dispone de un procesador ARM de bajo consumo a 700 MHz. También está dotada de circuitería GPIO que permite interactuar con dispositivos externos enviando señales y capturando datos mediante unos pines soldados en la placa base. Otro aspecto importante de la Raspberry es su bajo consumo. Vamos a tener un dispositivo conectado 24h pero sólo consume 3,5 W/h.

Para la conexión eléctrica se dispuso usar circuitería con relés optoacoplados. Los relés evitarán que los picos de tensión pasen del motor a la placa base de la Raspberry y de ese modo conectamos dispositivos de 220V a nuestra placa de control.

raspberry-y-reles

Software en la puerta

Nuestro dispositivo conectado a la puerta debe estar dotado de un sistema operativo avanzado que nos provea de capacidad de programación en lenguajes de alto nivel. La solución elegida, Raspbian, es óptima porque podemos elegir entre varios lenguajes y porque dota al sistema de un planificador de tareas, que como veremos después nos será de gran utilidad.

Para permitir que se pueda «Hablar» con la puerta emplearemos webservices REST. Se han programado tres servicios que permiten abrir y cerrar la puerta (POST) y consultar el estado de los sensores de final de carrera de cierre y apertura (GET). Hemos elegido Python para hacerlo. La sintaxis de los servicios para consultar el estado de apertura y cierre quedaría así:

Sensor de apertura

http://<dirección ip de la puerta>:8000/sensorA

Sensor de cierre

http://<dirección ip de la puerta>:8000/sensorC

Soluciones a los problemas de conectividad

Uno de los problemas que se presentaron fué la eventual pérdida de conexión. El vínculo entre el dispositivo y el router lo hacemos mediante un stick USB y se ha mantenido estable la mayor parte del tiempo. No obstante en ciertos casos éste se perdía haciendo inviable manipular la puerta. Para evitarlo, hemos programado un pequeño script que comprueba que el disposivo de red esté activado y en caso de no estarlo, lo reactiva. Para lanzar el script, hemos usado el planificador del sistema operativo mediante la siguiente regla:

*/5 * * * * /usr/local/bin/WiFi_Check

En el lado del dispositivo

Una primera aproximación sería manipular manualmente la puerta a través de una aplicación que nos permita abrir y cerrar la misma emulando el mando a distancia. Es una solución sencilla y factible pero potencialmente peligrosa por tener que manipular el smartphone mientras conducimos. No obstante, se implementó esta solución como herramienta para ajustar el funcionamiento de los servicios, controlando cuánto debería durar una pulsación, cómo detectar el final de carrera de apertura y cierre, etc.

La que hemos planteado como solución definitiva ha sido la que ha encajado en la definición de Internet de las cosas. Hemos pretendido que el sistema tuviese la suficiente autonomía como para no requerir de nosotros más que unos pequeños pasos de configuración y que pese a que ello requiriese un mayor esfuerzo, fuese sencillo de manejar.

Lo que debería hacer la aplicación se resume en una frase: «quiero que mi móvil le diga a mi puerta que estoy llegando a casa para que ésta se abra». Esto es sencillo de entender y para llevarlo a cabo, tenemos varias premisas que cumplir:

  1. Saber que estamos llegando a casa.
  2. Interpretar que estamos llegando y no que pasamos cerca
  3. Saber que pese a ser el mismo camino, volvemos a casa y no partimos de ella.
  4. Discernir si llegamos en un vehículo o a pie.

Para saber que estamos llegando a un punto concreto hemos usado técnicas de Geofencing. El Geofencing o geolocalización por cercas supone un paso adelante en la localización mediante dispositivos móviles sin sacrificar la duración de su batería. Básicamente consiste en definir una zona junto con dos métodos que avisan de la entrada y salida en la misma. Nuestra aplicación, PathAct, permite definir hasta 20 geocercas o rutas posibles de aproximación a un punto. De este modo sabremos que estamos cerca de nuestro destino. Cumplimos la premisa número 1.

Una vez que el sistema detecta que estamos en esa zona, cambia su precisión para dar una ubicación lo más precisa posible. Ahora el problema será saber que estamos junto a la puerta. Si optamos por una comparación con la ubicación de ésta, puede darse el caso que en nuestra trayectoria pasásemos ocasionalmente junto a nuestra casa y se abra la puerta de forma involuntaria. Dejaría de cumplirse la premisa número 2.

Para solucionarlo, hemos definido un camino mediante tres puntos que siguen un orden. Al pasar de forma consecutiva por ellos, primero por el primer punto, después por el segundo y por último por el tercero, sabremos que estamos llegando al destino y no que pasamos junto a él. Esto nos permite cumplir la premisa 2 y al haber seguido el orden, cumplimos también la premisa 3 por la que sabemos que volvemos a casa y no salimos de ella.

Aquí surge un nuevo problema. Sabemos que si pasamos por los puntos en orden, se abre la puerta. ¿Cómo le decimos a la puerta que vamos en un vehículo y no a pie? La solución pasa por definir un tiempo de paso por los puntos y de ese modo, una velocidad que es factible alcanzar en un vehículo pero no caminando. Cumplimos también la premisa 4.

La implementación ha consistido en una aplicación iOS 7 con dos vistas, una para dar de alta las cercas o zonas y otra para marcar los caminos y el tiempo que tardaremos en recorrerlos. Se han aplicado las siguientes reglas de usabilidad para que la aplicación sea fácil de manejar:

  • El diseño trata de ser sencillo y sin información redundante.
  • El sistema ayuda al usuario a comprender, en caso de producirse, los errores que se desencadenan.
  • Los elementos de las diferentes vistas son coherentes entre sí, para que el usuario no tenga que recordar su uso sino usarlos.
  • La aplicación ayuda al usuario a no cometer errores mediante la validación de campos que lo requieran y mediante la auto-cumplimentación de cuantos datos sea posible.
  • Se mantiene en la medida de lo posible la relación entre el sistema y el mundo real, aplicando el lenguaje del usuario.
  • La aplicación trata de mantener en todo momento la visibilidad del estado del sistema: se informa al usuario de lo que ocurre en cualquier momento.

En la imagen que sigue, podemos ver las dos vistas que componen la interfaz de la aplicación. Al pulsar en añadir zona, agregamos una zona a monitorizar. La zona se representa por sus coordenadas geográficas y por un identificador único. En esta misma vista, podemos ver el estado en el que está la puerta: abierta Indicador puerta abierta, operando Indicador puerta operando o cerrada Indicador puerta cerrada. También tenemos un botón con forma de llave para emular el mando. Al presionarlo, recibimos confirmación acústica de su funcionamiento.

vista-1

En esta captura disponemos de un mapa para añadir los tres puntos por los que debemos pasar para operar la puerta, un botón para limpiar el mapa y de una barra de desplazamiento para indicar el tiempo en el que debemos alcanzar los tres puntos en orden para operar la misma.

vista-2

El acceso a la puerta en sí habría que hacerlo mediante un servicio de resolución de nombres dinámico. En caso de acceder directamente a la dirección IP de rango público, correríamos el riesgo de que ésta cambiase quedando de nuevo sin acceso a la misma.

Posibles mejoras y evoluciones

Concurrencia: Podría darse el caso de que dos personas con la aplicación funcionando llegasen a la vez: uno abriría y el otro cerraría. Consultando el estado de la puerta podremos dejar ésta abierta si ya se ha dado la orden de abrir.

Histórico: Se podría modificar el servicio web de apertura de la puerta para que llevase un registro histórico de las entradas y salidas de la puerta y posteriormente explotar los datos.

Seguridad: Se puede monitorizar en vacaciones si la puerta recibe alguna apertura y de éste modo estar alerta para avisar a las autoridades. También se pueden enviar a demanda fotos al dispositivo y ver que todo marcha bien.

Servicios encadenados: llegar a casa, y tener la puerta abierta es cómodo. Pero lo es aún más tener la calefacción o refrigeración puesta, la comida caliente, la luz de la entrada encendida, etc. La puerta podría hablar con los otros dispositivos para darles órdenes en función de los sensores instalados en la casa.

En el Grupo Soltel transformamos objetos cotidianos en elementos conectados, aplicando nuestra experiencia en tecnologías BLE, NFC, RFiD o WiFi direct.

  • Adquisición de datos
  • Domótica
  • E-Health
  • Smart cities