Objetivos
<
Material requerido.
Una Raspberry Pi | |
¿Qué es Nodered y porque lo instalamos?
Bueno… Esto… Muy buena pregunta si me permite… Ejem… yo…
La verdad es que definir Nodered es bastante más complicado de lo que parece, pero si estas leyendo esto, es que tienen interés en el tema, seguramente porque algún Amigo /Conocido te ha calentado la oreja con el asunto y eso me facilita el trabajo, al menos un poco.
Podríamos definir Nodered como un sistema de programación a base de bloques o Nodos, basado en Node-js, cada uno de los cuales esta diseñado para resolver un problema especifico en un entorno visual de interconexión de elementos IOT, a base de estándares de la industria como MQTT, REST, JSON, Modbus, OPC-UA, Bacnet, Websocket,… y eso les ha permitido acabar estableciendo nodos a servicios estándar en la web de proveedores comerciales, como Microsoft Azure, Amazon Web servicios y…. toda una lista de otros proveedores.
Si eres nuevo en esto, es imposible que hayas entendido una palabra de lo de arriba, pero paciencia, Nodered es un concepto extraño y sorprendente, pero también absolutamente asombroso en cuanto a las posibilidades que te ofrece y además lo hace un modo tan sencillo y elegante que asombra a cualquiera que empieza… y le obliga a repensar muchas cosas de sus concepciones acerca de la programación, porque , en realidad está pensado para no programadores y probablemente si eres un niño todo te parecerá tan normal y evidente que te sorprenderá que no se pueda hacer de otro modo.
Pero si eres un adulto con experiencia en lenguajes de programación, te dejará anonadado por la potencia y sencillez del modo de desarrollar aplicaciones. Por eso, te pido un poco de paciencia conmigo (Estoy mayor y con tendencia a divagar) y en esta sesión, vamos a instalar Nodered en Raspberry Pi para mas adelante ver como leer los datos que hemos ido subiendo a los servidores MQTT, y como almacenarlos en una base de dados o simplemente presentarlos en un panel de control visual.
No quiero ponerme pesado, pero… os pido un acto de fe y que instaléis Nodered. En los siguientes capítulos haremos una mini introducción a la programación con Nodered para conectar con el servidor MQTT que creamos anteriormente y tratar esos datos. Animo
Instalando Nodered en raspberry Pi
Como siempre antes de instalar algo en tu Raspberri tienes que poner al día tu sistema para evitar líos:
Sudo apt-get update Sudo apt-get upgrade
Y ahora ya podemos ir al comando de instalación de Nodered, que según la pagina oficial recomienda instalarlo con el siguiente comando (A mí no me miréis)
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
No preguntéis mucho. Copiad y pegad. Por lo visto, Node-red viene ya instalado de serie en el nuevo Raspbian (¿A que no lo sabías?), pero seguro que será viejo y con este comando se instala o actualiza según sea el caso. Al acabar en principio ya tienes listo el Nodered para correr en tu máquina con el comando:
sudo node-red
Que tras una larga parrafada te dejará una pantalla como esta:
Arrancar Nodered manualmente, tiene el inconveniente de que en primer lugar, que algunos somos vagos y no nos gusta hacer algo que puede hacer una máquina por mí, y en segundo lugar si pulsas [CTRL]+ C, saldremos de Nodered y cesará el servicio lo que no suele ser buena idea.
Por eso es mejor (y descansado) correr Nodered como un servicio, de modo que no se suspenda al hacer [CTRL]+ C . Para instalar el servicio:
node-red-start
Y también tenemos disponibles:
node-red-stop node-red-restart node-red-log
Para los que odiáis escribir comandos, también podéis arrancar el servicio Nodered desde el modo grafico en:
\\Menu\Programming\Node-Red
Pero los que somos vagos profesionales, preferimos que Node-red arranque solo al inicio por lo que estos comandos me encantan:
sudo systemctl enable nodered.service
Y si por cualquier razón, necesitas pararlo (Por ejemplo, porque traga cantidad de memoria y CPU, algo de lo que la Raspberry Pi no va sobrada, ni con los 8Gb):
sudo systemctl disable nodered.service
Para empezar a usar Nodered, dado que se instala con acceso vía Web, si vas a tu navegador y escribes en la dirección URL:
localhost:1880
Pero… tienes que entender que Nodered consume muchos recursos de tu Raspberry por lo que la página principal de Node-red, recomienda que accedas a el desde un ordenador externo, para no agotar memoria y hacer que la Raspi vaya demasiado lenta.
Para eso necesitas saber la dirección IP de tu Raspberri y por si eres nuevo (Tranqui que nos ha pasado a todos) puedes usar el comando: ifconfig
O también:
hostname -I
Si tiene un pc cualquiera por ahí, (Windows o Linux o Mac) puedes acceder Nodered en tu Raspi con tu navegador favorito, sin mas que en lugar de localhost indicar la IP de la Raspberry, y el puerto 1880 de acceso. En en mi caso es:
http://192.168.1.52:1880/
Accediendo desde mi Microsoft Edge, podremos ver:
Configurando la seguridad de Nodered
Por defecto, Nodered aplica aquello de todo el mundo es bueno, y no establece contraseñas ni seguridad de ningún tipo, por eso hemos podido entrar antes a la pantalla principal. Esto está bien si estas montando un servidor en la Raspberry para ti y como mucho unos coleguillas, pero en cuanto montes un servidor con acceso desde internet comprobarás que la cantidad de hijos de perra que hay por la red es infinito y aun cuando sea un porcentaje bajo de la población total, son mas que suficientes para que pierdas la fe en la humanidad.
Por eso vamos a tener que montar un mínimo servicio de seguridad, que nos permita filtrar a indeseables de nuestro bonito servidor Nodered y el primer paso es montar un sistema de usuario y contraseña.
Para ello tenemos que saber que como siempre en Linux hay fichero de opciones infinitas que configura en el arranque el comportamiento del Nodered y para pedirle que utilice autentificación por usuario con contraseña hay que editar ese fichero, que se llama settings.js y que se encuentra en un directorio oculto, de tu carpeta de usuario llamado .node-red:
Recuerda, que cada vez que hagas cambios en el fichero de configuración, tendrás que tumbar el Nodered y volverlo a iniciar para que los cambios tengan efecto, con los comandos:
node-red-start node-red-stop
Vamos a crear un par de usuarios, que puedan acceder a nuestro Node-red y para ello tienes que editar el fichero settings.js con tu editor favorito, que para mi en Raspberry voy a usar:
sudo mousepad settings.js
Una vez dentro busca una sección llamada adminAuth. Si tienes el fichero de configuración original pondrá algo como esto:
/** To password protect the Node-RED editor and admin API, the following * property can be used. See http://nodered.org/docs/security.html for details. */ //adminAuth: { // type: "credentials", // users: [{ // username: "admin", // password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.", // permissions: "*" // }] //},:
Lo mismo que Arduino y C++ los comentarios se indican con // para las líneas y con /* hasta */ para bloques. Tienes que escribir en su lugar exactamente esto:
adminAuth: { type: "credentials", users: [ { username: "admin", password: "$2b$10$2DiQRwQ/yi7OZyBYxGd4keFwmxj9RpitnzOyTwBh8oP3SYqPouEQa", permissions: "*" }, { username: "charly", password: "$2b$10$P8UmP07PNO6FZ2PwT2v34OY9RNCJbR3Wt9bsRW9No4EjTgWQb5vM.", permissions: "*" } ] },
En mi caso he creado dos usuarios admin y Charly (Para variar) pero para crear las contraseñas encriptadas y que no lo vea el enemigo, hay dos procedimientos: El primero es decidir que, para el usuario admin y charly, quiero las contraseñas “Pagasarri” y “contrase” respectivamente. Para ello abrimos una ventana de comandos y escribimos:
Node-red admin hash-pw
El programa te pedirá la clave a encriptar, que no se verá en pantalla, (Por eso las he pintado en rojo) y te devolverá ese chorro de caracteres, que, por increíble que te parezca, es único, y van a ser la forma en que guardaras las contraseñas en tu fichero de configuración.
Ahora solo tienes que copiar cada una de esas claves encriptadas que ha generado y pegarlas en la sección password: del fichero de configuración (Asegúrate de poner la contraseña a su usuario asociado) y ya puedes salvar el fichero.
Alternativamente si eres de los que odias escribir comandos en la consola, tienes algunos servidores públicos para generar el hash como por ejemplo, este:
Puedes comprobar que para la misma clave se genera el mismo hash con exactitud. Si ahora entras a la página de tu Nodered veras que te pide un usuario y contraseña, antes de dejarte pasar:
En la próxima sesión empezaremos a jugar con Nodered y veréis porque es tan interesante.