Node-RED: integración con IDM


Node-RED es una herramienta que permite crear flujos de datos y conectar múltiples elementos entre sí, de una forma visual. Está pensada para IoT. En esta entrada veremos como incluir objetos IDM en estos flujos.

Captura de pantalla de 2016-05-09 16-22-19

Instalación de Node-RED e IDM

Nota: En esta entrada se detalla el proceso de instalación para GNU/Linux, y en concreto para Debian. Si tienes algún problema, no dudes en comentarlo.

Antes de nada, debes instalar npm utilizando el gestor de paquetes de tu distribución. Para Debian y derivados (Ubuntu):

$ sudo apt-get install npm nodejs nodejs-legacy

A continuación, instala node-red y node-red-contrib-idm:

$ mkdir nodered
$ cd nodered
$ npm install node-red node-red-contrib-idm

¡Y ya está! Ahora, solo tienes que ejecutar node-red, de la siguiente forma:

$ node_module/.bin/node-red -v

Nota: también es posible hacer una instalación global de Node-RED. El proceso está perfectamente detallado en http://nodered.org/docs/getting-started/installation.

Ejemplo básico: ¡encender un LED!

Básicamente, este ejemplo asume que tienes un nodo IDM corriendo en algún sitio, que implementa la interfaz DUO.IDM.IBool.W, y que es accesible por un router IDM conocido. A efectos de documentación, el nodo tendrá la dirección AA:02, y el router será accesible a través de TCP/IP, con la dirección 192.168.0.2.

Abre en un navegador web la dirección que te indicó el servidor de node-red, probablemente http://127.0.0.1:1880/. Verás el editor de Node-RED, con los nodos de IDM disponibles, algo similar a la siguiente figura:

Captura de pantalla de 2016-05-09 16-55-03

Este ejemplo, constará de dos elementos: una entrada, de tipo booleana, y una salida, que representa al objecto IDM remoto. En la categoría Input, busca el nodo de tipo bool, y añádelo al flujo. En la categoría IDM, busca el nodo de tipo IBool y añádelo también. Estos dos nodos son sencillos de identificar pues comparte el mismo color:

Captura de pantalla de 2016-05-09 17-01-37

El nodo de entrada no tiene configuración específica (sólo el nombre), por lo que no es necesario indicar nada más. El nodo de salida (IBool) requiere de dos cosas: la dirección IDM del objeto al que representa, y la configuración del router IDM.

En este ejemplo, como dirección de destino pon AA:02. A continuación, pulsa sobre el icono de editar en la parte derecha del campo IDM Router, de esta forma se añadirá un nuevo nodo de configuración que podrás reutilizar. Ponle un nombre sencillo de recordar, y la dirección IP del router en el campo Host:

Captura de pantalla de 2016-05-09 17-17-30

Pulsa sobre Add. La configuración del nodo quedaría de la siguiente forma:

Captura de pantalla de 2016-05-09 17-18-46

Al pulsar sobre OK, el nodo quedará listo para ser conectado y desplegado. Enlaza los dos nodos que has creado:

Captura de pantalla de 2016-05-09 17-20-04

Si lo prefieres, también puedes importar este flujo con el siguiente JSON:

[
 {"id":"22e70bd6.822514",
  "type":"idm-router",
  "z":"c4023636.31e548",
  "name":"Main Router",
  "host":"192.168.0.2",
  "port":"6140"},

 {"id":"8b41ba21.c2bfb8",
  "type":"bool-input",
  "z":"c4023636.31e548",
  "name":"",
  "x":240, "y":260,
  "wires":[["a24bd7e5.8e5cc8"]]},

 {"id":"a24bd7e5.8e5cc8",
  "type":"IBool",
  "z":"c4023636.31e548",
  "name":"",
  "dst":"AA:02",
  "router":"22e70bd6.822514",
  "x":420,"y":260,
  "wires":[]}
]

Ahora puedes pulsar sobre el botón Deploy. Si todo ha ido bien, al hacer click sobre el botón que hay a la izquierda del nodo input, el estado cambiará, y se mandará un mensaje al nodo AA:02 con el nuevo estado.

Referencias

 

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s