How to deploy a Node-Red environment on a GCP instance

node-red

Son numerosos los tutoriales en Internet que explican cómo montar un servidor Node-RED sobre GCP haciendo uso de clústers. Sin embargo cuesta encontrar (si es que los hay), tutoriales sobre como desplegar dicho servidor en una instancia, por lo que en este tutorial, nos centraremos en este caso. ¿Te suena a chino todo lo que hemos dicho? ¿Por qué montarlo sobre una instancia y no un clúster? Expliquemos brevemente los conceptos más raros de la frases anteriores para entendernos mejor.

  • Node-RED: es una herramienta de programación, de libre distribución, la cual nos permite de una forma rápida, y sobretodo muy intuitiva, desplegar una web con un estilo moderno y funcional. Node-RED hace uso de la programación “en cajas”, en la cual interconectamos distintos bloques ya pre hechos de las librerías disponibles. Node-RED usa Javascript y permite introducir bloques con nuestro propio código, pero para las tareas más sencillas no será siquiera necesario saber Javascript. Un ejemplo de un desarrollo simple en Node-RED sería el siguiente:

node_red_example

Node-RED permite además añadir librerías creadas por usuarios, siendo la librería “dashboard” una de las más populares, pues incorpora cajas con elementos visuales que permiten la interacción con el usuario así como la visualización de datos. Un ejemplo de ello:

maxresdefault

¿Fácil, verdad? Quien diría viendo esa web que se ha hecho sin necesidad de saber ningún lenguaje, solo juntando las cajas correctas. Existen otras opciones, como thingsboard.io, pero para gustos los colores, además de no ser la mayoría gratuitas (o tener planes gratuitos muy limitados). Nosotros preferimos Node-RED porque integra soporte para comunicaciones por UDP, TCP y el reciente MQTT, lo que permite comunicaciones con cualquier tipo de dispositivo, especialmente con dispositivos IoT. Además, la comunidad de desarrolladores es enorme y podemos encontrar muchos ejemplos ya hechos para su libre distribución, siendo estos ejemplos a veces, justo lo que buscamos.

Tenemos muchas formas de ejecutar Node-RED, en nuestro PC (esto es corriendo en un servidor local), en páginas que ponen a nuestra disposición servidores ya montados y listos para empezar a trabajar (FRED) o en servidores virtuales privados (VPS) de los cuales hay cientos de ofertas en Internet (aunque destacan por su catálogo y precios Microsoft Azure, Amazon Web Services [AWS] y Google Cloud Platform [GCP]). Las ventajas de ejecutar nuestro entorno en un VPS frente a nuestro ordenador o un entorno ya hecho (y cerrado) son inmensas: disponibilidad total, herramientas de protección, escalabilidad, no compromiso de nuestros datos privados, gestión de recursos… y esas son solo alguna de ellas.

  • Google Cloud Platform: es uno de los tantos servicios de gestión de VPS que hay hoy en día. Si bien es cierto que uno de los que más fuerza tiene es AWS, Google ofrece algo que no ofrece el resto: un servidor gratuito al año con 24/7 en ejecución. Vale que es un servidor muy modestito (10 GB de almacenamiento; 0.6 GB de RAM y un único procesador), pero es gratis y para diseños simples puede ser más que suficiente. Es por esto que nos centraremos en este gestor VPS en este tutorial.
  • Instancia vs. cluster: Google denomina a cada uno de los VPS que creamos instancia. Un grupo de instancias trabajando de forma conjunta, compartiendo recursos y distribuyéndose el tráfico de red entre ellas forma un clúster. Claro, a priori parece que el clúster es mejor (y lo es), pero no es gratis. La instancia, sin embargo, sí. Siempre y cuando esa instancia sea de las más simples de Google, como ya hemos comentado antes.

Ahora que ya hemos explicado todo un poco, relee si quieres el primer párrafo del post. Ahora ya parece obvio por qué queremos desplegar Node-RED (y no otro) sobre una instancia (y no un clúster), porque…

free

 

Empecemos…

Lo primero, lógicamente, es tener una cuenta de Google activa. Nos dirigiremos a la consola de Google Cloud y activaremos nuestra cuenta, registrándonos en la versión de prueba gratuita.  Solo por registrarnos Google nos regala 300 $ en servicios GCP. Para nuestros propósitos no nos harán falta, pero nos vendrán genial si queremos cacharrear con todas las opciones que GCP ofrece. Completaremos todos nuestros datos (incluida la tarjeta de crédito, pero no pasa nada: Google nos avisará previamente en caso de que hiciéramos algo que incurriera en un desembolso). Tras registrarnos se nos creará nuestro primer proyecto (que podremos renombrar si queremos pinchando en configuración de proyecto).

En el buscador escribimos Compute Engine y en la nueva ventana, una vez cargue, creamos una nueva instancia, con la configuración que vemos en la siguiente imagen:

g1
La zona da igual siempre que sea en América (salvo Virginia del Norte). América es la única región con VPS gratuitas. El tipo de máquina ha de ser micro y permitir el tráfico HTTP y HTTPS. Nosotros hemos elegido Ubuntu por familiaridad con los comandos, pero cualquier otra distribución de las gratuitas que ofrece Google es válida. Notad que para saber que estáis siguiendo los pasos correctos, debe apareceros el texto de la derecha donde os informa de que la máquina seleccionada es gratuita. Pulsamos en crear y esperamos.

Una vez creada, hay diferentes cosas que sería interesante hacer antes de empezar a cacharrear (asignarnos una IP estática y abrir algunos puertos).

-Asignando IP estática podremos entrar en nuestro servidor sin necesidad de consultar qué IP nos ha concedido Google esta vez: siempre será la misma. Para ello escribimos Red de VPC en el buscador y entraremos en la sección del menú lateral izquierdo “Direcciones IP externas”. Seleccionaremos nuestra instancia y cambiaremos su tipo a estática. Le ponemos un nombre identificativo a esta IP y aceptamos.

-Abriendo puertos (bien sea TCP o UDP) permitiremos un acceso remoto a nuestro servidor. Hay que notar que esto es un arma de doble filo, pues si bien no podemos hacer mucho sin tener acceso a nuestro servidor remoto también es una puerta abierta a hackers, por lo que recomendamos abrir solamente los puertos que vayamos a necesitar. En nuestro caso será obligatorio abrir el puerto TCP 1880, pues será el que usará Node-RED tanto para la interfaz de diseño (donde colocaremos las cajitas) como para la interfaz web (donde nos mostrará el resultado de colocar y conexionar esas cajitas). Para ellos tecleamos en el buscador “Reglas de cortafuegos” y elegimos la opción que lleve también escrito Red de VPC.

Creamos una regla nueva:allowtcp

 

El nombre es opcional, todo lo demás, recomiendo dejarlo a esos valores. Cuando cojáis más soltura con GCP os recomiendo etiquetar vuestras distintas instancias para poder elegir destinos de reglas del cortafuegos y así que cada máquina tenga abiertos los puertos que necesita. Por ahora, y como solo tenemos una máquina creada, no pasa nada por aplicar en el campo destinos “todas las instancias de la red”. Guardamos y ya estaremos listos para empezar la instalación de Node-RED sobre nuestro VPS.

Volvemos a la vista de Compute Engine, donde estará nuestra instancia. En el campo “Conectar” pulsamos sobre SSH. Se nos abrirá una ventana nueva y cuando cargue ya estaremos dentro de nuestro VPS.

Para poder empezar a trabajar, tecleamos los siguientes comandos:

Nótese que entre los comandos, se instalará nodejs. En nuestro caso hemos instalado la versión 8.x por ser la recomendada en el momento de realizar este tutorial, pero se aconseja mirar en la página de nodejs cual es la última versión recomendada. Escribimos ahora el comando que instalará Node-RED en nuestro VPS.

Es también interesante instalar algunas herramientas de node-red que nos harán más fácil la gestión de nuestro servidor, por lo que teclearemos:

Después de esto ya podemos probar que Node-RED está correctamente instalado. Para ellos tecleamos:

Lo que debería arrojar en el terminal una salida que acaba con:

Esto es indicativo de que todo está correcto. ¡Probémoslo! Escribamos en nuestra barra del navegador la IP estática concedida por Google (sin http ni https delante seguida del puerto de acceso a Node-RED, separado por dos puntos “:”), algo así como 123.123.123.123:1880. Deberíamos ver esto:

node-red1

 

¡Todo funciona! Sin embargo esto presenta un enorme, enorme inconveniente: cualquiera que sepa nuestra IP puede acceder a nuestro servidor Node-RED y borrarnos todo el trabajo o inyectar código malicioso. Por ello, el siguiente paso, de vital importancia, es proteger nuestro servidor. Volviendo a la terminal abierta por SSH, pulsamos ctrl+C para parar la ejecución de Node-RED y escribiremos:

Lo que nos preguntará por la contraseña con la que deseamos proteger el servidor. Tras escribirla y pulsar intro, nos devolverá una secuencia hash con nuestra contraseña encriptada, que deberemos copiar, pues usaremos ahora. Escribiremos sobre el archivo de configuración de Node-RED. En el terminal tecleamos:

y dentro de este archivo buscaremos el siguiente texto:

adminAuth: {
type: “credentials”,
users: [{
username: “USUARIO“,
password: “HASH_GENERADO“,
permissions: “*”
}]
},

// To password protect the node-defined HTTP endpoints (httpNodeRoot), or
// the static content (httpStatic), the following properties can be used.
// The pass field is a bcrypt hash of the password.
// See http://nodered.org/docs/security.html#generating-the-password-hash
httpNodeAuth: {user:”USUARIO“,pass:”HASH_GENERADO“},
httpStaticAuth: {user:”USUARIO“,pass:”HASH_GENERADO“},

En usuario escribiremos el usuario que queramos, y en los campos password y pass, el hash generado anteriormente. La primera parte protegerá la parte de gestión (donde colocamos las cajitas), la segunda, la parte de visualización (la web que crean las cajitas). Es importante descomentar las lineas necesarias (esto es, eliminar los caracteres “//” con los que empiezan algunas lineas), para que el resultado quede tal y como hemos puesto arriba. Guardamos con CTRL+O y salimos con CTRL+X.

Por último, será interesante que nuestro servidor cargue automáticamente Node-RED cuando se reinicie, lo que hará más tolerante a fallos nuestra implementación. Para ello, escribimos:

Que nos indicará nuestro nombre de usuario. A continuación:

donde copiaremos el siguiente texto:

[Unit]
Description=Node-RED
After=syslog.target network.target

[Service]
ExecStart=/usr/bin/node-red
Restart=on-failure
KillSignal=SIGINT

# log output to syslog as ‘node-red’
SyslogIdentifier=node-red
StandardOutput=syslog

# non-root user to run as
WorkingDirectory=/home/TUUSUARIO/
User=TUUSUARIO
Group=TUUSUARIO

[Install]
WantedBy=multi-user.target

Hay que modificar solo los campos en rojo. Nuevamente, guardamos con CTRL+O y salimos con CTRL+X. Activamos el servicio creado escribiendo:

Comprobaremos que todo se haya hecho correctamente. Para ello primero es necesario reiniciar, por lo que escribimos:

Y tras esperar unos dos minutos, cargamos de nuevo la página con la IP del servidor en nuestro navegador. Ahora, al cargar node-RED debería pedirnos login, tanto a la parte de gestión como a la de visualización.

¡Eso es todo por nuestra parte! Ahora, a jugar.

El Futbolín del Laboratorio B105: Historia

futbolinold

 

Muchos de los nuevos estudiantes de Teleco de la ETSIT-UPM habrán escuchado alguna vez algo sobre el laboratorio donde hay un Futbolín en el edificio B. Pues sí, somos nosotros y sí, tenemos un futbolín.

El Futbolín del B105 tiene ya historia y un propósito especial: la aplicación práctica de electrónica y la motivación continua de estudiantes.

La fecha del instalación del futbolín en el labo no está muy clara, pero sí que hay pruebas gráficas de su existencia en julio de 2005, ya que en ese mes se entregó el segundo diploma. Además la primera temporada, según el “Wall of Fame” del labo, parece ser que se jugó en 2004/2005.

Al principio el futbolín no tenía marcador, y no solo eso, sino que estaba colocado al revés, donde está el Atleti ahora estaba el Madrid, ya que se comprobó que había una cierta ventaja (no está muy clara cuál), y si se jugaba en un determinado lado del campo de juego se ganaba más veces que jugando en el contrario.

screenshot-from-2016-11-04-12-24-13
Diagrama de bloques de la primera versión de marcador

Ya que estábamos en un laboratorio de investigación, se pensó que había que aprovechar los conocimientos que se tenían para meter mejoras al futbolín. A alguien (posiblemente a Curro) se le ocurrió instalar el primer marcador analógico/digital del futbolín. Se marcaba tocando los botones con un dedo tal y como se ve en la imagen de cabecera. Luego se aprovecharon sensores de impresoras para controlar el paso de papel y se transformaron en sensores de gol. De esta forma el marcador era capaz de sumar goles automáticamente cuando la pelota se introducía en una portería.

Esta primera versión de marcador estaba construida con displays de 7 segmentos, chips integrados 74HC191 y 74HC4511 y botones físicos. Tenía una peculiaridad y era que permitía que se pudiera alterar el resultado si de daba con la bola en alguno de los botones: reset, sumar un gol o quitar un gol, ya que el marcador estaba atornillado en uno de los laterales del futbolín.

9026804330_7a42ce6050_k
Pantalla táctil del segundo marcador

Unos pocos años después (allá por el año 2007), aprovechando una pantalla táctil y el software relacionado de un proyecto de investigación que acababa de finalizar, se decidió evolucionar el futbolín y se desarrolló un sistema que gestionase la pantalla táctil y una base de datos que permitiese llevar las estadísticas del futbolín. Los primeros partidos registrados en la base de datos datan de Junio de 2007. Curro hizo un invento aprovechando una pantalla normal y un sensor táctil, y posteriormente se paso a una pantalla táctil integrada. También se evolucionó en los sensores de gol, que pasaron de ser sensores de carrera de impresoras a sensores de infrarrojos por corte.

9024579833_8963f4ecb5_k
Final de la vigesimocuarta temporada triunfal del Futbolín

Desde entonces hasta ahora mucho ha evolucionado el futbolín. Para conocer el estado actual del mismo, continúa leyendo en artículo que lleva por título “El Futbolín Inteligente del Laboratorio B105″ o alguno de los artículos relacionados:

 

El Futbolín Inteligente del Laboratorio B105

30682930411_06d4f75ddb_k

 

A día de hoy, noviembre del 2016, el Futbolín cuenta con múltiples funcionalidades que describiré a continuación. Digo a día de hoy, porque el futbolín es un elemento en continuo desarrollo y por tanto que sufre continuos cambios por lo que dentro de un año probablemente cuente con más, menos o diferentes funcionalidades.

Una característica fundamental a la hora de añadir, quitar o modificar sensores en el futbolín es que no se puede modificar su esencia ni su terreno de juego. Esto significa que ningún sensor o accesorio puede modificar el terreno de juego original o el peso y/o distribución de los muñecos o barras. Dicho esto, todo lo demás es válido.

Las funcionalidades con las que cuenta el futbolín se resumen en la siguiente lista y se pueden ver en el vídeo adjunto en esta publicación.

  • Pantalla táctil para selección de jugadores en partido.
  • Marcador digital táctil para selección del jugador que marca gol.
  • Sonidos de ambiente durante partido que se adecuan al resultado del partido.
  • Base de datos y estadísticas en vivo.
  • Comunicaciones inalámbricas entre futbolín y pantalla de visualización.
  • Sensor de goles en ambas porterías.
  • Iluminación de porterías al detectar el gol.
  • Iluminación de porterías en eventos especiales:
    • Fin de partido con colores del equipo ganador
    • Empate a 3 (última bola)
    • Color especial al acabar el partido en 7-0.
  • Sensores de velocidad para todas las lineas de juego: portero, defensa, media y delanteros
  • Cámaras en frontal y techo.
  • Repetición corta automática de jugada tras gol con posibilidad de guardarlas.
  • Repetición larga manual de jugada del último gol marcado.
  • Posibilidad de publicaciones automáticas en Twitter.
  • Sensor de huellas táctiles para selección automática de jugadores de partido.
  • Menús ocultos para partidas tipo mundialito.
  • Menús para la gestión de campeonatos.

En próximas publicaciones sobre el futbolín hablaremos de su historia y de su base de datos. Mientras tanto puedes consultar otras publicaciones relacionadas:

TFM: DISEÑO E IMPLEMENTACIÓN DE UN MÓDULO DE ADQUISICIÓN DE DATOS PARA UN NODO DE UNA RED DE SENSORES INALÁMBRICA

NodoJfernandez

Las Redes de Sensores Inalámbricas (Wireless Sensor Networks, WSN) son un campo en auge en los últimos años debido a sus múltiples aplicaciones en distintos sectores (agricultura, medio ambiente, industria, seguridad, etc.). Las WSN se postulan, dentro de las tecnologías inalámbricas, como una de las opciones de futuro más prometedoras debido, entre otras cosas, a la inminente llegada del Internet de las Cosas (Internet of Things, IoT). Es por estas razones que los grandes fabricantes han lanzado líneas de investigación centradas en esta tecnología.

Las WSN consisten en un conjunto de pequeños nodos sensores que se comunican inalámbricamente para monitorizar distintos parámetros del ambiente, como pueden ser humedad, temperatura, movimiento, actividad, presión, etc.

Estos nodos están formados generalmente por un microcontrolador, sensores, memoria, un transceptor radio y batería; y existen gran cantidad de nodos o plataformas con distintos componentes. Debido a esta gran diversidad de nodos, se hace necesario tener una capa de abstracción hardware o sistema operativo que permita utilizar la misma aplicación de redes de sensores en distintas plataformas hardware y proporcionar herramientas para desarrollar aplicaciones más complejas.ModuleAcquisition

La eficiencia de este sistema operativo es algofundamental en sistemas de bajos recursos como los utilizados, por ello existen numerosas líneas de investigación cuyo objetivo es optimizar estos sistemas operativos haciéndolos dinámicos y proporcionándoles inteligencia. Para ello es necesario proporcionar ciertos datos externos al sistema operativo para que pueda adaptarse dinámicamente al entorno de cara a optimizar su eficiencia. Estos datos externos pueden ser la temperatura del nodo, su movimiento, su consumo, el nivel de batería, así como datos de otros nodos cercanos como la potencia recibida en la interfaz radio, sus parámetros característicos o su estado.

Proporcionar dichos datos externos será el objetivo principal a satisfacer a lo largo de este Trabajo Fin de Máster (TFM). Además, cabe destacar la importancia de la capa de abstracción, ya mencionada anteriormente, que el sistema debe facilitar a la aplicación de nivel superior que utilice sus servicios.

Robot minero: desarrollo de un sistema prototipo automatizado de perforación vertical de barrenos para su aplicación en la industria minera

rolatec

La minería en España presenta, en las últimas décadas, un déficit de desarrollo tecnológico muy importante. Son muy pocas las aportaciones novedosas a este área que conserva, en muchos casos, técnicas manuales o mecánicas para el desarrollo de la labor. Por ejemplo, durante estos años se ha recurrido a métodos de explotación tradicionales, caros, con poca o ninguna modernización, inseguros y de bajo rendimiento. Por otro lado, los depósitos de minerales se depositan como filones o venas estrechas, de 1 a 1,5 metros. Estos filones son un recurso primario muy importante, pero representan un desafío tecnológico complejo. Todo esto hace que la mejorar de la explotación y la seguridad en la minería sea un campo a mejorar.

Mina de San Finx
Mina de San Finx Flickr: divadar01

Este proyecto pretende desarrollar un robot que asista en la realización de tareas en la obra, como perforaciones, y que monitorice el ambiente de la mina para mejorar la seguridad. Esto se puede realizar mediante sensores de gases y otros parámetros, como la humedad o la temperatura.

Los datos del proyecto son los siguientes:

Título: Robot minero: Desarrollo de un sistema prototipo automatizado de perforación vertical de barrenos para su aplicación en la industria minera
Duración: 2015-2017
Consorcio: Valoriza Minería y Universidad Politécnica de Madrid.
Entidad financiadora: Valoriza Minería a través de CDTI.

Logo CDTI-MINECO con Gill Sans

TFG: Diseño, desarrollo e implementación de una red de sensores inalámbrica orientada a la monitorización de un futbolín

Futbolin

El futbolín del B105 Electronic Systems Laboratory dispone de una Raspberry Pi que incluye un sistema desarrollado por Nicanor Romero (más información aquí). La interacción con dicho sistema es completamente manual, siendo el usuario el que tiene que introducir todos los eventos generados durante la partida a través de una pantalla táctil. Por lo tanto, se requiere un nuevo sistema capaz de interactuar con el anterior para monitorizar el futbolín y automatizar ciertas tareas.

Aquí es donde entra en juego el presente TFG, en el que se ha desarrollado una red de sensores inalámbrica orientada al bajo consumo y a la flexibilidad. Cada nodo de la red se comunica vía radio con la Raspberry Pi, que actúa como nodo central de la red, recibe las notificaciones y actúa en consecuencia.

Dichos nodos incluyen varios sensores y actuadores que permiten ofrecer al usuario una serie de nuevas funcionalidades que se describen a continuación:

  • Detección automática de goles durante la partida. Se han desarrollado sensores de infrarrojos para su colocación en los carriles por donde bajan las bolas en el interior del futbolín.
  • Identificación biométrica. Se ha incluido un lector de huellas dactilares para la identificación automática  de los usuarios en el sistema.
  • Iluminación de las porterías. Se iluminan por medio de unas tiras de LEDs RGB, variando su color en función del resultado del marcador en cada momento.
  • Liberación automática de bolas. Cuando los sensores infrarrojos detecten que se han acabado las bolas del cajón, un servomotor tirará de la palanca para permitir su liberación.

Además para proteger a los nodos del polvo en el interior del futbolín así como para permitir una correcta sujeción de los sensores y evitar posibles medidas erróneas, se han diseñado los siguientes modelos para su impresión en 3D:

caja-nodos sensor-goles sensor-bolas

Finalmente se desarrolló una aplicación para Windows 10 para comprobar el correcto funcionamiento del sistema y demostrar la portabilidad del mismo. La siguiente imagen muestra la interfaz gráfica de la aplicación:

App Windows 10

 

Se ha desarrollado un sistema flexible, modular, orientado al bajo consumo y  en el que se pueden introducir mejoras fácilmente. De esta forma se podrá aumentar cada vez más la experiencia de juego de los usuarios del futbolín.

 

Visita en Talavera a los escenarios del proyecto Easysafe

IMG_8508

El pasado día 14, el B105 junto con Valoriza visatamos los escenarios propuestos para el proyecto Easysafe, que pretende mejorar la seguridad en la carretera por medio de sensores inalámbricos. Los escenarios propuestos son tres: detección de fauna en una zona de coto de caza, aviso de proximidad de vehículos en un cruce peligroso y detección de vehículos en sentido inverso accediendo a una autopista. Estos tres escenarios preliminares se encuentran situados en un tramo de la N-502 concedida a la empresa Valoriza.

IMG_8503

IMG_8508

IMG_8527

IMG_8534

TFG: Diseño, desarrollo e implementación de un sistema de adquisición, almacenamiento y presentación de los datos obtenidos de una red de sensores inalámbricos

800px-Imagen1

El objetivo de este Trabajo Fin de Grado es el diseño e implementación un sistema que adquiera, procese y almacene los datos obtenidos de la WSN y los presente a través de un servidor Web que permita consultar datos en tiempo real y en un histórico, así como envío de parámetros de control, con los que configurar la WSN.

El proyecto se basará en una red de sensores inalámbricos desarrollada de forma simultanea en otro Trabajo Fin de Grado, compuesta por dos tipos de nodos, Prometheus y Boucherot. Los nodos Prometheus se encargarán de medir valores como presencia y temperatura, además de estado de sus baterías, mientras que los Boucherot monitorizarán el consumo de todo dispositivo conectado a ellos. Asimismo, los nodos Boucherot también implementan una serie de actuadores que permiten el encendido y apagado de los aparatos conectados a los mismos. Esta red presenta además una serie de comandos que permiten configurar ciertos parámetros de medida de la red y del estado de sus nodos.

Para la implementación del sistema se ha recurrido a distintas herramientas:

  • Desarrollo de script en Python para adquisición, procesado y almacenamiento en base de datos. Así como el envío de comandos de control a la red inalámbrica. Se han empleado los módulos serial, sqlite3 y pynotify.
  • Desarrollo del servidor Web en Node.js, que sirve paginas con información de la red, información de las medidas en tiempo real y en un histórico, con módulos: socket.io, sqlite3, http-auth entre otros.
  • Diseño de las paginas web que se muestran en el cliente basadas en distintos frameworks como: Bootstrap 3, graficas de HighCharts, y tablas con Datatables y jQuery.

A continuación se muestra una breve descripción de la interfaz del sistema con el usuario, que se realiza a través de una serie de paginas web:

DOMOLabo B105_TrealPágina que muestra dinámicamente las medidas en Tiempo Real tomadas por la WSN

DOMOLabo B105_Hist

Página que muestra Histórico de las medidas tomadas por la WSN

Ambas páginas, constan de una serie de gráficas que muestran las medidas tomadas por la WSN. Cada gráfica agrupa a todos los sensores de un tipo y permite seleccionar los nodos que se desean visualizar en la leyenda. Además permite hacer zoom en la gráfica, bien seleccionando sobre ella o bien pulsando alguno de los botones de la esquina superior izquierda de la gráfica. También es posible exportar datos en distintos formatos, .pdf, .png, .svg, etc. gracias al botón situado en la esquina superior derecha.

DOMOLabo B105_Sensores

Página que muestra información y permite el control de la WSN

Esta pagina consta de una tabla principal donde se muestra información de todos los nodos de la red (identificadores, tipos de sensores presentes, localización del sensor y estado de la batería y de sus actuadores). En la parte inferior de la tabla se encuentra un formulario que permite añadir nuevos sensores al sistema.

En la parte superior de la tabla se presenta un conjunto de botones que permiten el envío de una serie de comandos de control a la red (Relé, Configurar el tiempo que un nodo permanece dormido y en estado activo, actuar sobre el relé y/o los leds, etc.). Estos comandos se envían al nodo AP de la red que se encarga de enviarlos al nodo que corresponda.

También se ha implementado una autenticación de usuarios, para el control de acceso a funciones de configuración de la red y del sistema. Para los usuarios no administradores el aspecto es ligeramente diferente al presentado, ya que las funciones de control están desactivadas y no se permite la incorporación de nuevos sensores al sistema. Sin embargo la tabla es visible y se permite como en el caso anterior consultar e imprimir el estado de la red.

Se ha tenido especial interés en implementar un sistema modular, en el cual la caída de un modulo no imposibilite el normal funcionamiento del resto. Escalable, donde se puedan gestionar múltiples peticiones simultaneas de usuarios con distintos dispositivos y necesidades de consulta. Primando también la versatilidad del sistema respecto a la red de la que se adquieran los datos.

El sistema se ha dimensionado ampliamente para soportar una red con mas de 100 sensores y almacenar datos durante varias décadas, con tiempos de medida de 1 minuto para los sensores.

 

TFG: Implementación de un servicio para entornos inteligentes sobre una red de sensores inalámbricos

Distribucion Nodos

El objetivo de este Trabajo Fin de Grado es desplegar una red de sensores inalámbricos para monitorizar múltiples parámetros en los espacios B104 y B105. Ésto ofrecerá una serie de funcionalidades a los usuarios de los laboratorios, como conocer la ocupación de ciertos puestos de trabajo, el consumo de determinados dispositivos y la temperatura en cada una de sus salas.

El proyecto se basará en una red de sensores inalámbricos previamente desarrollada en el Laboratorio B105, compuesta por dos tipos de nodos, Prometheus y Boucherot. Los nodos Prometheus se encargarán de medir valores como presencia y temperatura, además de estado de sus baterías, mientras que los Boucherot monitorizarán el consumo de todo dispositivo conectado a ellos. Asimismo, los nodos Boucherot también implementan una serie de actuadores que permiten el encendido y apagado de los aparatos conectados a los mismos.

Por otro lado, todas las versiones de Firmware creadas para los nodos se basa en el protocolo de comunicaciones Simpliciti, desarrollado por Texas Instruments. Gracias a este protocolo, el desarrollo del código se simplifica al abstraer todo lo correspondiente a las comunicaciones inalámbricas. Cabe destacar, que uno de los nodos Prometheus implementará una versión de código diferente, ésta tendrá como misión gestionar al resto de los nodos, además de ejecutar los  comandos de gestión de red que pueda recibir.

Plataforma Previa

Los nodos Boucherot son los nodos más voluminosos, al trabajar con altos niveles de potencia.

La red de nodos se ha revisado en profundidad, tanto a nivel software como hardware, modificando al mismo tiempo las carcasas de los nodos Prometheus para facilitar su instalación. Se ha  modelado un brazo de giro que permitirá un ajuste más preciso del haz de cobertura de los sensores de presencia, para optimizar el espacio monitorizado por estos. Además, se ha implementado una hendidura para posibilitar su amarre a la pared gracias a un único tornillo. Se han empleado los programas Tinkercad, para el modelado de las carcasas, y Cura, para la obtención del formato adecuado para su impresión en 3D.

Caja Prometheus Vista 2

Caja Prometheus, Vista 1

Caja Prometheus Vista 1

Caja Prometheus, Vista 2

Asimismo, se ha creado una tapa direccional, la cual se instalará en un número reducido de nodos, que permite monitorizar la presencia en espacios físicos mucho más reducidos. Para ello, se ha creado una estructura cónica que consigue focalizar el haz de detección del sensor de presencia, y de esta forma, cubrir espacios tan acotados como podría ser el puesto de soldadura del laboratorio B105.

Tapa Direccional

Tapa Direccional para nodos Prometheus

Se ha tenido especial interés en intentar que la red sea capaz de autogestionarse. Es decir, que ante un fallo de cobertura , interferencia, o reinicialización de alguno de los nodos, la red sea capaz de reconfigurarse y seguir ofreciendo sus servicios de una forma autónoma.

En base a la naturaleza de las muestras, la red se ha red se ha configurado para que todo nodo tome una muestra por minuto. Ajustando al mismo tiempo, los periodos de bajo consumo de los nodos Prometheus para asegurar una vida útil de más de medio año, antes de tener que recargar o sustituir las baterías de los mismos.

Finalmente, cabe destacar que las tarea de procesar, almacenar y representar gráficamente las muestras obtenidas, además de posibilitar la configuración de la red de forma remota, serán implementados en otro Trabajo Fin de Grado.