¿Cómo usar librería Node-RED para interactuar con Onesait Platform?
Introducción
En la actualidad, Node-RED es una herramienta de programación muy popular que permite a los desarrolladores crear programas de forma visual. Desde una paleta muy amplia de nodos, los desarrolladores pueden crear flujos al conectar unos con otros. Los desarrolladores también pueden crear sus propios nodos para satisfacer sus necesidades y después compartirlos con la comunidad a través de NPM. Desarrollar pruebas de concepto usando un motor de flujo como Node-RED es fácil y rápido.
onesait Platform ya proporciona un motor de flujo dentro de su Panel de Control, con una conexión directa a los datos almacenados en la plataforma. Esta página presenta la librería cliente para interactuar con la Plataforma onesait desde una instancia Node-RED ejecutada en un dispositivo cliente (otro sistema, una Raspberry Pi ...)
Descripción de los nodos
El paquete del cliente tiene seis nodos de usuario con diferentes operaciones sobre la plataforma, más un nodo de configuración que se ocupa de los detalles de la conexión. Describamos cada nodo en detalle:
onesait-platform-insert: este nodo inserta datos en una ontología. Se requieren los siguientes parámetros:
Ontology: nombre de la ontología. Para crear una ontología, por favor ve a https://lab.onesaitplatform.com/controlpanel/ontologies/list
Instance: una instancia JSON válida para la ontología seleccionada.
onesait-platform-delete: este nodo borra los datos de una ontología de acuerdo con una consulta, o por identificador de RTDB (base de datos en tiempo real). Se requieren los siguientes parámetros:
Ontology: nombre de la ontología. Para crear una ontología, por favor ve a https://lab.onesaitplatform.com/controlpanel/ontologies/list
Delete Type: el tipo puede ser por consulta o por identificador.
Query/Id: consulta o identificador (dependiendo del tipo elegido) que se quiere eliminar.
Query Type: SQL o NATIVE (MongoDB para el despliegue de CloudLab).
onesait-platform-query: este nodo ejecuta una consulta sobre una ontología. Se requieren los siguientes parámetros:
Ontology: nombre de la ontología. Para crear una ontología, por favor ve a https://lab.onesaitplatform.com/controlpanel/ontologies/list
Query: consulta a ejecutar.
Query Type: SQL o NATIVE (MongoDB para el despliegue de CloudLab).
onesait-platform-update: este nodo actualiza los datos en una ontología. Se requieren los siguientes parámetros:
Ontology: nombre de la ontología. Para crear una ontología, por favor ve a https://lab.onesaitplatform.com/controlpanel/ontologies/list
Update Type: el tipo puede ser por consulta o por identificador.
Id: identificador de la instancia a actualizar.
Query: consulta cuyo resultado se actualizará.
Query Type: SQL o NATIVE (MongoDB para el despliegue de CloudLab).
onesait-platform-leave: este nodo cierra la sesión actual con la plataforma.
onesait-platform-subscribe: este nodo se suscribe a cualquier interacción con la ontología seleccionada. Se requieren los siguientes parámetros:
Ontology: nombre de la ontología. Para crear una ontología, por favor ve a https://lab.onesaitplatform.com/controlpanel/ontologies/list
Query Type: SQL o NATIVE (MongoDB para el despliegue de CloudLab).
onesait-platform-connection-config: los nodos de configuración tienen un alcance global por defecto. Esto significa que el estado será compartido entre los flujos. Este nodo representa una conexión compartida con un sistema remoto. En ese caso, el nodo config es responsable de crear la conexión (MQTT) y ponerla a disposición de los nodos que utilizan el nodo config. También es posible conectarse a la plataforma a través de una interfaz REST. Los siguientes parámetros son necesarios para definir la conexión:
IoTClient: nombre del cliente digital.
Instance: nombre que le damos a la instancia del cliente.
Token: token generado para el cliente digital.
Renovate session every: cantidad de minutos tras la cual se renueva la sesión. Por defecto 5 minutos.
Protocol: protocolo usado en la comunicación con plataforma. Podemos elegir entre REST y MQTT. En cada caso, tendremos que definir los siguientes parámetros de conexión.
MQTT:
IP: IP del servidor de plataforma.
Port: puerto de la conexión MQTT contra plataforma.
Enable SSL/TLS security: podemos activar el check box para indicar que la conexión se realiza sobre SSL/TLS. No es obligatorio.
Certificate: en el caso de activar el check anterior, se tiene que especificar el certificado para la conexión.
REST:
Endpoint: dirección del servidor donde está alojada la plataforma. Si se indica https como protocolo, se gestiona la conexión por SSL/TLS de manera transparente.
Enable SSL/TLS security: podemos activar el check box para añadir parámetros extra sobre la conexión SSL/TLS. No es obligatorio.
Proceso de instalación
Primero tienes que instalar Node.js desde la página oficial de Node.js. Una vez instalado, puedes probar su configuración abriendo un símbolo del sistema y ejecutando estos comandos:
node --version
npm --version
En este momento, Node.js debería estar instalado y las versiones deberían aparecer en la línea de comandos. El siguiente paso es instalar Node-RED. Para ello, ejecuta este comando:
npm install -g --unsafe-perm node-red
Cuando termines, deberías poder ejecutar Node-RED ejecutando el comando node-red en el prompt que elijas. Esta versión ya tiene muchos de los nodos utilizables que puedes probar en http://localhost:1880
El último paso es instalar el cliente Node-RED de la onesait Platform para ejecutar este comando:
npm install node-red-contrib-onesait-platform
También puedes instalar los nodos clientes desde la interfaz web de Node-RED desde los comandos a la derecha, menu→Manage palette, y después buscar onesait:
Al final, es necesario reiniciar Node-RED, y entonces los nodos onesait deberían aparecer como parte de tu paleta.
Usando los nodos del ejemplo
Hay un flujo de ejemplo disponible en línea para acelerar tu curva de aprendizaje en el uso esta librería cliente. Está disponible en https://flows.nodered.org/flow/989c8da7c08465f132882f24740c835f
Una vez importado, tu flujo debe ser parecido a esto:
Puede parecer un poco desordenado, pero es un simple flujo para mostrar todas las capacidades de los nodos. Este ejemplo está listo para usar, ya que tiene credenciales válidas de un usuario de demostración creado para este ejemplo en nuestra instancia de CloudLab. Vamos a sumergirnos en los diversos bloques y explicarlos en detalle: