Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

Autor: Oscar Gonzalez

Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

Tiempo de lectura: 21 minutos

En ésta guía aprenderás cómo instalar Node-RED en Raspberry Pi para automatizar procesos IoT con MQTT y Arduino ESP8266/ESP32

Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

  • 0

0 Principiante

Instalación de Node-Red

La instalación de Node-Red en Raspberry Pi no puede ser más sencilla, ya que los desarrolladores proporcionan un script que automatiza todo el proceso y garantiza que instales tanto la última versión disponible como sus dependencias.

Para eso, primero debemos conectar mediante SSH a nuestro servidor Raspberry Pi. Para eso usaremos el programa KiTTY, un cliente SSH gratuito y para Windows. Si utilizas Linux o MacOS, seguramente ya tengas el comando ssh instalado en tu sistema.

Cliente SSH

Hay muchos programas cliente SSH para Windows. Los dos más populares son KiTTY y PuTTY. Ambos los puedes descargar de forma gratuita.

Conexión SSH con PuTTY

Conexión SSH con PuTTY

Si has puesto un Hostname en la configuración de tu Raspberry Pi, deberías poder conectar por nombre directamente utilizando el puerto por defecto 22.

Si eso no funciona, debes conocer la dirección IP de la Raspberry Pi. Eso lo puedes saber entrando en tu router o bien con un escáner de puertos de red. Una vez hecho pulsamos el botón "Open" y podremos entrar con el usuario Pi y la contraseña que has establecido en la configuración.

Obtener la dirección IP de la Raspberry Pi desde el router depende del modelo de router que tengas. Suele haber algún tipo de lista de usuarios DHCP o algo similar. Desde ahí debes poder ver el dispositivo y su dirección IP.

Instalar Node-Red en Raspberry Pi

Por fin llega la parte interesante y no puede ser más sencillo, ya que gracias a un simple comando podremos realizar todo el proceso de forma automática.

Pero antes, debemos preparar el sistema con los paquetes que necesita. Primero vamos a instalar las herramientas de compilación y el soporte Curl:

sudo apt install build-essential git curl

Se descargarán los paquetes necesarios y una vez hecho, podemos pasar a instalar Node-Red. En el momento de escribir éste tutorial, la versión más reciente de Node-Red es la 1.3.5. 

Ejecutamos el siguiente comando:

sudo bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Éste comando realizará de forma automática las siguiente tareas:

  • Quitar eventuales versiones de Node-Red ya instaladas
  • Si detecta Node.js ya instalado, se asegura que la versión sea la v12 o superior.
  • Instala la última versión de Node-Red usando el gestor de paquetes npm
  • Opcionalmente, instala nodos interesantes específicos para Node-red
  • Instala Node-red como servicio del sistema

Iniciar Node-Red como servicio del sistema

Ahora puedes iniciar Node-red mediante diferentes comandos que podrás ejecutar desde la consola:

  • node-red-start - Inicia Node-Redy muestra el log de lo que hace. Presionando CTRL C lo podemos parar. Esto lo incia como servicio. Es decir, se ejecuta en segundo plano.
  • node-red-stop - Detiene el servicio Node-red
  • node-red-restart - Reinicia el proceso de Node-red
  • node-red-log - Muestra el log del servicio para localizar posibles fallos

Por supuesto, lo que queremos es que se inicie automáticamente cuando tu Raspberry Pi se encienda. Para eso debemos iniciar el servicio en el arranque del sistema con el siguiente comando:

sudo systemctl enable nodered.service

¡Y ésto es todo! Ya tenemos node-Red instalado y funcionando. Ahora podremos acceder a su panel web mediante la dirección http://<hostname>:1880

En "hostname" debes indicar o bien el nombre de tu servidor o bien su dirección IP. Por ejemplo http://piserver.local:1880 o bien http://192.168.1.168:1880.

Ten en cuenta que tanto el nombre del servidor como la dirección IP del ejemplo depende de la propia configuración de tu Raspberry Pi y de tu red.

Instalar Node-Red y Mosquitto con Docker

Si no quieres complicarte con una Raspberry Pi o simplemente quieres probar el sistema Node-Red con Mosquitto, existe también la posibilidad de usar una imagen de Docker

¡Si has seguido los pasos anteriores, no necesitas hacer esto!

Solo es una opción más para usar node-red con Mosquitto por si no tienes acceso a una Raspberry Pi.

Por si no lo conoces, Docker es un sistema de virtualización basado en contenedores y que te permite montar un sistema rápidamente. Debes primero instalar Docker desde su web y luego ejecutar unos comandos que veremos a continuación.

Docker funciona con ficheros de configuración (entre otras muchas cosas) donde se define los servicios que queremos levantar. Esos ficheros generalmente tienen la extensión .yml. Nosotros crearemos uno propio, por lo tanto elije un directorio cualquier en tu equipo y crea un nuevo archivo llamado node-red-mosquitto.yml

En ese archivo, pega el siguiente bloque con un editor de texto:

services:
  node-red:
    image: nodered/node-red:latest
    restart: unless-stopped
    environment:
      - TZ=Europe/Madrid
    networks:
      - node-red-net
    ports:
      - "1880:1880"
    volumes:
      - node-red-data:/data

  MQTTbroker:
    image: eclipse-mosquitto:1.6.13
    restart: unless-stopped
    networks:
      - node-red-net

volumes:
  node-red-data:

networks:
  node-red-net:

ahora, desde el mismo directorio donde se encuentra el archivo, podemos lanzar el servicio con:

docker-compose up -d

Si todo ha sido bien, Docker levantará los servicios y veremos en la consola el resultado de la operación.

Resultado de la consola

Resultado de la consola

Para acceder a node-red, abriremos un navegador y pondremos: