En el artículo anterior vimos las ventajas de poner el cerebro de tu casa inteligente en la nube, frente a soluciones más tradicionales de instalar la lógica de control de forma local, si se cumplían algunos requisitos previos. Hoy veremos un ejemplo concreto, conjugando dos herramientas gratuitas de tipo Open Source, como OpenShift y Node RED, con los que podremos controlar los sensores y actuadores de nuestro hogar sin necesidad de instalar ningún dispositivo físico dedicado a tal fin en nuestro propio domicilio, es decir, con esta combinación, podrás construir el “Internet de tus Cosas”, a tu gusto y medida conforme a tus necesidades y dispositivos de que dispongas.

 

La buena nube. OpenShift

Lo primero que tenemos que hacer es buscar una plataforma, en la nube, que haga las veces de ordenador o dispositivo con capacidad de proceso, sobre el que instalar el software controlador de nuestro sistema. Es decir, vamos a virtualizar, mediante un servicio, un PC físico. Este tipo de servicios suelen denominarse PaaS o Plataforma como Servicio (del inglés, Platform as a Service) y en la actualidad la oferta es bastante amplia.

A la hora de elegir una u otra, hay una serie de factores que convendrá tengamos en cuenta de forma anticipada y que puede que nos eviten dificultades más adelante:

  • Compatibilidad con el software controlador de nuestro hogar inteligente. Esto es lo primero que deberemos comprobar. Lógicamente, si el proveedor de nuestra elección no permite instalar la aplicación que utilicemos como cerebro de control de nuestro sistema, entonces deberemos buscar otro que sí ofrezca compatibilidad con el mismo. Dependiendo del software de control, del lenguaje de programación que utilice y de su grado de “modularidad”, este punto será más o menos complicado. En general, soluciones Open Source (o de código abierto) basados en tecnología web o lenguajes  “modernos”, serán más fáciles de instalar en este tipo de Plataformas Virtuales. Por contra, software de control propietario de un fabricante en concreto, por ejemplo, será más complicado de externalizar en este tipo de soluciones. En el siguiente apartado veremos un ejemplo de controlador instalable en modo PaaS.
  • Escalabilidad de la plataforma. Lo más seguro es que el proveedor ofrezca diferentes planes de precios por un servicio PaaS, dependiendo de los requerimientos técnicos que exijamos a su plataforma. Lo normal es empezar por un plan básico, en muchos casos incluso gratuito, e ir construyendo nuestro sistema. Si vemos que nuestras necesidades aumentan, en capacidad de proceso o CPU, memoria RAM, espacio de almacenamiento en disco, ancho de banda disponible, nivel de disponibilidad del servicio, soporte técnico,  etc., podremos ir contratando planes superiores (a precios mayores, consecuentemente). Lo importante es que podamos ir escalando cada uno de estos aspectos de la plataforma sin necesidad de volver a instalar desde cero, sino simplemente contratando nuevos planes sin que tengamos que realizar ningún ajuste adicional.
  • Variedad de aplicaciones o componentes adicionales a nuestro propio software controlador instalables. Disponer de una plataforma lo más abierta posible siempre facilitará la instalación de componentes adicionales que pueden complementar al propio software de control. Estos componentes pueden ser “cartuchos” o plug-ins adicionales que pueden llegar a ser de gran interés. Por ejemplo, la posibilidad de conectar una base de datos al controlador, donde almacenar un histórico de las lecturas de cada uno de los sensores, puede resultar de gran utilidad si más adelante deseamos dotar a nuestro hogar inteligente de un sistema gráfico o visual de medidas de consumo energético o de cualquier otra medida captada por nuestros sensores.
  • Posibilidad de copias de seguridad y de descargar localmente una copia completa de toda la instalación. De esta forma, siempre podremos volver al “modo de lógica local” cuando queramos, además de asegurarnos de no perder nada del trabajo realizado en caso de que hagamos una intervención incorrecta en el sistema, por error, y borremos datos, o desconfiguremos algún parámetro que haga que deje de funcionar la instalación. Esta opción, por el hecho de haber transformado en servicio un dispositivo físico, debería estar contemplada en todos los proveedores de este tipo de soluciones.
  • Documentación detallada de ayuda y/o soporte técnico. Debemos ser conscientes de que instalar nuestro software en una plataforma virtual, puede ser más complicado que hacerlo localmente en un PC físico. Por ello, será de gran ayuda que el proveedor cuente con una buena documentación, guías de ayuda, video-tutoriales, foros, etc. Normalmente, los servicios de soporte técnico especializado quedan reservados a planes más completos, de pago, y no suelen estar disponibles en las modalidades gratuitas.
  • Posibilidad de probar el servicio de forma gratuita. Considero que éste es un punto importante. Al final, nuestra propia experiencia nos dirá si la plataforma elegida es adecuada o no para nuestra situación concreta. En este sentido es importante poder probar, ya sea mediante un plan gratuito, ya sea mediante un periodo de prueba sin compromiso, el servicio, antes de dedicar tiempo y esfuerzo a instalar y ponerlo a nuestro gusto.

 

OpenShift by Red Hat
OpenShift es el servicio de plataforma virtual que ofrece Red Hat. Entre sus diferentes alternativas, la modalidad denominada “Online”  cuenta con un plan básico que permite usarla de forma de gratuita.

En mi caso particular, después de evaluar los factores anteriores, me decanté por OpenShift como PaaS para mi hogar conectado. Es una plataforma desarrollada por Red Hat, los creadores de la famosa distribución de Linux. La solución la ofrecen en tres modalidades: Online, Enterprise y Origin. La modalidad Online cuenta con un plan totalmente gratuito y funcional de la plataforma. Además, en su sitio web se dispone de numerosa documentación y tutoriales que nos ayudarán en nuestros primeros pasos con el producto.

 

 ¿Cambiamos el controlador? Node RED

Probablemente, si hemos llegado al punto de decidir externalizar la lógica de control a una plataforma virtual en la nube, estemos también dispuestos a decidir si es hora de elegir un nuevo software controlador para nuestro sistema. O quizá hayamos llegado a esta conclusión tanto por uno como por otro aspecto. Éste es mi caso concreto. Después de llevar varios años utilizando como software de control OpenRemote corriendo en un Netbook Acer Aspire con Linux, dedicado a tal fin (más detalles en este artículo), llegué a un punto de dar un paso adelante buscando nuevas opciones para mi hogar conectado. No puedo decir, ni mucho menos, que la combinación de OpenRemote y el Netbook con Linux haya sido mala; todo lo contrario, este sistema ha sido robusto como una piedra y no ha requerido de mayor esfuerzo que el de la instalación inicial.

Sin embargo, hace años había pocas alternativas en cuanto a software de control, cosa que ahora es totalmente diferente. IoT (Internet of Things o Internet de las Cosas) es una revolución que está trayendo multitud de soluciones para todo tipo de aplicaciones, por lo que también decidí buscar otros tipos de controlador para mi sistema. En mi caso he elegido Node RED, un software Open Source, totalmente gratuito, por tanto, creado por IBM. Según ellos mismos, es la “herramienta visual para interconectar el Internet de las Cosas“.

Realmente se trata de una herramienta que se ejecuta sobre la plataforma Node.js (que, a su vez, se basa en el motor JavaScript de código abierto que utiliza el archiconocido navegador Google Chrome). Es tecnología moderna, optimizada para ejecutarse en ordenadores de bajo coste como Raspberry Pi, o en la nube, lo que lo hace ideal para el caso que nos ocupa. Node RED es una herramienta visual, se ejecuta sobre un navegador web y permite crear lógica de control mediante la interconexión de diferentes nodos, creando flujos totalmente visuales que nos permiten construir nuestro sistema inteligente. Cada nodo puede representar lo que queramos, tanto un dispositivo físico (sensor o actuador), un servicio web de recogida de información o un punto donde hacer cálculos y tomar decisiones. Hay multitud de nodos disponibles y, si no encontramos el que necesitamos, siempre podemos programar desde cero nuestros propios nodos.

Node RED funcionando en la nube OpenShift
Node RED: Ejemplo de nodos conectados formando diferentes flujos. En la imagen se aprecian casos reales de aplicación a solución de Hogar Conectado (en este caso, relativos a riego automatizado del jardín).

Node RED es visual, sí, pero eso no significa que no tengamos que programar “nada”. Todo dependerá del grado de inteligencia, del tipo de decisiones, que queramos que tome nuestro sistema. Algo, aunque sea mínimo, deberemos programar. El lenguaje de programación es JavaScript y hay muchísima documentación, foros, etc. donde conseguir ayuda.

 

OpenShift + Node RED: una buena pareja

Llegados a este punto, tan sólo nos queda ponernos manos a la obra e instalar Node RED en nuestra plataforma OpenShift. El plan gratuito de OpenShift nos permite instalar hasta tres aplicaciones independientes, por lo que aún así todavía nos quedarán dos aplicaciones más que poder instalar adicionalmente a Node RED.

A cada aplicación que instalamos es posible añadirle complementos o cartuchos adicionales, para completar su funcionalidad. En este enlace de OpenShift podéis comprobar todos los complementos adicionales que podemos añadir.

Opciones para crear una nueva aplicación en OpenShift Online by Red Hat
Menú de selección de nueva aplicación en OpenShift. Como se puede apreciar, las posibilidades que ofrece son numerosas. Para nuestro caso concreto, elegiremos Node.js

Para instalar Node RED, lo primero que tenemos que hacer es instalar la plataforma base sobre la que éste se ejecuta, es decir, Node.js. La filosofía de trabajo con OpenShift es la siguiente: normalmente “desarrollaremos” nuestra aplicación en un entorno “local”, donde vayamos probando nuestra aplicación hasta estar satsifechos con su funcionamiento. Es entonces cuando “publicaremos” o “subiremos” la aplicación a OpenShift.

Para hacer estas subidas o, mejor dicho, sincronizaciones entre nuestro entorno de desarrollo local (nuestro propio PC) y OpenShift, disponemos de una herramienta o cliente que debemos instalar en nuestro PC o entorno de desarrollo local, basado en comandos tipo Linux (recordemos que esta plataforma es obra de Red Hat). Para los que estén familiarizados con Linux, os diré que lo que dicho cliente utiliza son comandos del conocido sistema de control de versiones de software llamado Git.

Que no cunda el pánico, no es necesario aprender Linux, ni Git, para construir el “Internet de tus Cosas”, aunque es bueno conocer unos fundamentos básicos para saber qué es lo que estamos haciendo realmente. OpenShift, como he explicado antes, ofrece numerosa y detallada documentación para el uso de su plataforma. A continuación incluyo tres enlaces, valiosos para empezar a manejarte.

  • Empezando con OpenShift Online te indicará los primeros pasos para instalar tu sistema de desarrollo local en función del Sistema Operativo que tengas (Windows, Mac, Linux…).
  • Help Center o Centro de Ayuda, es el lugar al que recurrir en caso de que encuentres alguna dificultad que no sepas resolver.
  • Guía de Usuario para OpenShift Online, es una extenso y detallado manual que te explicará hasta el último detalle de esta plataforma.

El proceso para instalar Node RED en OpenShift, paso a paso, es el indicado a continuación.

  1. Crear una cuenta en OpenShift, en la modalidad Online. Escogemos el plan básico gratuito, pulsando en el botón rojo “SIGN UP FOR FREE”.
  2. Una vez creada la cuenta, ya dentro de nuestra área personal, añadimos la primera aplicación, pulsando el botón “Add Application…” y seleccionamos Node.js del listado que se nos ofrece.
  3. Una vez completado el proceso, tendremos Node.js instalado y listo. Opcionalmente, podemos añadir algún cartridge o complemento. Yo, por ejemplo, añadí MongoDB y  RockMongo, en este orden. El primero es un sistema de base de datos “No-SQL” o no estructurado, útil para almacenar, por ejemplo, un histórico de valores recogidos por sensores de temperatura, humedad, etc., que podamos tener en nuestro hogar. El segundo es un interfaz gráfico para acceder a cada uno de los datos que vayamos almacenando en la base de datos.
  4. El siguiente paso es hacer una réplica de nuestra aplicación de OpenShift en nuestro PC local. Para ello, seguimos los pasos de la guía “Getting Started“, según sea nuestro sistema operativo. Con esto habremos conseguido tres cosas: tener un entorno de desarrollo local, disponer de una herramienta o “cliente” de OpenShift que nos permitirá sincronizar nuestro PC con OpenShift y por último habremos replicado en el PC la aplicación recién creada en OpenShift.
  5. Ahora debemos preparar algunos archivos en nuestro PC local, para instalar Node RED. Para ello, seguimos los pasos de esta guía de instalación del Blog de Danngemist. Al finalizar este proceso, deberemos ser capaces de poder acceder a Node RED en OpenShift, a través de la URL personalizada, según se indica en el paso a paso anterior, desde cualquier PC con acceso a Internet.

Ya tenemos Node RED funcionando en la nube de OpenShift.

 

 

Y ahora ¿qué?

Ahora toca sacarle todo el jugo a este tándem OpenShift + Node RED. Pero eso será en el próximo artículo. Mientras tanto, os dejo un enlace de documentación de Node RED, extraído de su propia web, para que os vayáis familiarizando con este entorno visual de nodos y flujos.

Y a tí, ¿qué te parece construir el “Internet de tus Cosas” con dos herramientas abiertas y gratuitas como OpenShift y Node RED, respaldadas por empresas tan relevantes como IBM y Red Hat?

Tus comentarios, como siempre, son bienvenidos.

Soy un entusiasta de la tecnología desde niño y dicha afición la he ido aplicando en las diferentes etapas por las que ha transcurrido mi vida. Soy Ingeniero Industrial por la Universidad Politécnica de Madrid, carrera que me ha aportado la capacidad de comprender los problemas desde una perspectiva global, relacionando diferentes conceptos para lograr una solución a un problema concreto. Profesionalmente hablando, mi carrera ha transcurrido principalmente por puestos relacionados con la tecnología e Internet. Actualmente soy responsable de servicios digitales en AXA Seguros, siendo mi misión ofrecer servicios de valor a los clientes de la compañía a través de sus canales digitales.
OpenShift y Node RED: el Internet de tus Cosas
Etiquetado en:                                    

9 thoughts on “OpenShift y Node RED: el Internet de tus Cosas

  • 25/04/2016 a las 12:19
    Enlace permanente

    Muy bueno el artículo Roberto.
    He estado trasteando con NodeRed un par de días y se pueden hacer cosas bastante chulas. De todos modos me asalta la siguiente duda: de cara al manejo por una persona que no se lleve bien con la informática, ¿No es mas intuitivo una interface de móvil como la que se puede hacer con openremote, en vez de la interface de flujos de NodeRed?
    Es decir, imagina que le dices a tu padre que te mire habitualmente el estado de riego, ¿No sería mas cómodo para él una interface hecha con Openremote?

    Otra cosilla que te quería preguntar. ¿Cómo obtienes o mandas información al EtherRain a través de NodeRed? ¿Con objetos http u objetos tipo GET y POST?

    Un saludo.

    Responder
    • 25/04/2016 a las 13:44
      Enlace permanente

      Hola Joaquín,

      Muchas gracias por tu comentario. Efectivamente NodeRED no está pensado para utilizar como interfaz para un usuario final, sino como herramienta “visual” para la persona que configura el sistema. NodeRED te permite definir la lógica de comportamiento, la interconexión entre todos y cada uno de los sensores y actuadores que tengas. Para el uso habitual, y el control manual, debes considerar un interfaz adicional, como OpenRemote, por ejemplo.

      Podrías, por ejempplo, utilizar OpenRemote únicamente como capa visual y redirigir todas las peticiones de encendido/apagado de aparatos, estado de sensores, etc., hacia NodeRED, mediante peticiones HTTP (por ejemplo) que, a su vez, NodeRED redirigiría hacia los dispositivos finales. Tanto OpenRemote como NodeRED permiten esta flexibilidad de interacción.

      Si, lo que prefieres, es tener una solucicón completamente dentro de NodeRED, sin necesidad de utilizar OpenRemote, ¡también existe! Hay un tipo de nodo que puedes añadir a tu instalación de NodeRED, llamado node-red-vis que precisamente lo que hace es añadir una capa visual a NodeRED. Está basado en HTML, por lo que cualquier smartphone / tablet modernos serían válidos para utilizar como elemento de control. Como podrás ver por la documentación, la libertad es total a la hora de definir la interfaz gráfica. Personalmente me gusta más esta opción que la de OpenRemote. Me parece más flexible y potente, con capacidad de poder complementar con otros servicios como gráficos de actividad, etc., al ser todo en formato web.

      Respecto a la manera de interactuar con EtherRain, efectivamente, es a a través de peticiones HTTP GET. Es muy sencillo y te da un control total sobre el dispositivo y su estado.

      Saludos,

      Roberto

      Responder
  • 29/04/2016 a las 10:21
    Enlace permanente

    No conocía node-red-vis, lo he instalado y es una pasada! tienes todo tipo de objetos entre botones, medidores… y muy personalizable. Con eso si que se puede hacer una interface chula, si señor. He estado trasteando un rato con ello y no me ha llevado mas de 10 minutos hacer una interface con una bombilla y un interruptor que cambie de estado e incluso lea de la entrada. Me ha gustado mucho 🙂

    Saludos.

    Responder
    • 10/05/2016 a las 21:12
      Enlace permanente

      Hola Joaquín,

      Me alegro de que te sirva para tus propósitos. La verdad es que al estar basado en HTML la libertad y flexibilidad son totales.

      Saludos,

      Roberto

      Responder
  • 02/11/2016 a las 21:37
    Enlace permanente

    En este articulo he encontrado varias respuestas que andaba buscado sobre node-red, muchas gracias. Tienes un seguidor desde ya.

    Responder
    • 03/11/2016 a las 23:59
      Enlace permanente

      Hola Óscar,

      Muchas gracias por tus palabras. Me alegra saber que el artículo te haya despejado dudas sobre nodeRED. No dudes en preguntar cualquier cuestión que te pueda surgir.

      Saludos,

      Roberto

      Responder
  • 27/09/2017 a las 03:53
    Enlace permanente

    Muchas gracias por la información, ando buscando cosas relacionadas con el IoT. Estoy muy interesado en aplicar el IoT al mundo de la agricultura y me gustaría aterrizar en este mundillo. Un saludo.

    Responder
    • 28/09/2017 a las 20:34
      Enlace permanente

      Hola Fernando. Gracias a ti por comentar en el blog. El IoT para agricultura creo que tiene aplicaciones muy interesantes en cuanto a optimización de recursos (consumo eficiente de agua, por ejemplo), monitorización de cultivos, etc. El problema es que las soluciones comerciales que existen para agricultura no son muy variadas (aparte de los típicos sensores de lluvia, humedad de suelo…) y las que hay tienden a tener un coste alto. Por eso creo que la opción DIY o hazlo tú mismo con hardware como Arduino o Raspberry Pi y software OpenSource es muy interesante si dispones de los conocimientos para ello, además de que el precio pasa a ser un factor irrelevante (los sensores los puedes adquirir por unos pocos euros, por ejemplo).

      Suerte con tu proyecto ¡No dudes en preguntar de nuevo o comentar qué solución eliges finalmente!

      Un saludo

      Responder
      • 28/09/2017 a las 22:55
        Enlace permanente

        Buenas noches Roberto,

        Después de navegar un poco tengo algunas lagunas conforme a que sistema elegir. Me explico:
        – Qué hardware utilizar (Arduino, ESP8266, Rapsberry Pi, etc.)
        – Qué comunicación inhalámbrica utilizar (GSM, 4G, LoRa, SigFox, Xbee, ZigBee, etc.)
        – Con qué plataforma apoyarme para ofrecer una aplicación (OpenShift +Node RED, FIWARE, Google Firebase, otras preconfiguradas, etc.)

        Los dos pilares fundamentales para que surta efecto serían por un lado un precio reducido y una buena comunicación (ya que sería para el campo, en agricultura)

        Si tienes conocimientos sobre todo esto me gustaría que pudieses compartirlos.

        Muchas gracias,

        Un saludo.

        Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *