Node-RED: Primeros pasos
Cómo empezar con Node-RED
👋 ¡Bienvenido a la documentación de Stackhero!
Stackhero ofrece una solución Node-RED cloud lista para usar que proporciona una serie de beneficios, incluyendo:
- Servidor MQTT incluido (Mosquitto).
- Acceso completo a la interfaz de administración de Node-RED.
- Dashboard de Node-RED incluido.
- Servidor de correo SMTP ilimitado y dedicado incluido.
- Actualizaciones sin esfuerzo con solo un clic.
- Nombre de dominio personalizable asegurado con HTTPS (por ejemplo, https://node-red.tu-empresa.com).
- Rendimiento óptimo y seguridad robusta impulsados por una VM privada y dedicada.
Ahorra tiempo y simplifica tu vida: ¡solo toma 5 minutos probar la solución de Node-RED cloud hosting de Stackhero!
Cómo enviar notificaciones por correo electrónico
Cada instancia de Node-RED en Stackhero viene con su propio servidor de correo electrónico dedicado. Este servidor le permite enviar notificaciones por correo electrónico ilimitadas con solo unos pocos clics.
Para comenzar a enviar correos electrónicos desde su instancia de Node-RED, añada un nodo "email" a su flujo. Notará dos nodos de correo electrónico en la lista de nodos. Elija el que tiene el icono de correo a la derecha. Una vez añadido, el nodo se nombrará automáticamente "Stackhero integrated email server" y viene preconfigurado.
Haga doble clic en el nodo de correo electrónico e introduzca su dirección de correo electrónico en el campo "To:". Es mejor dejar el resto de la configuración sin cambios.
A continuación, añada un nodo "inject" a su flujo y conéctelo al nodo de correo electrónico. Haga doble clic en el nodo inject (llamado "timestamp" por defecto), seleccione "string" como tipo de carga útil e introduzca "This is an email from Node-RED" como carga útil.
Revise sus configuraciones de nodos, despliegue su flujo y haga clic en el icono de acción en el nodo inject. Luego, revise su bandeja de entrada para ver el correo enviado desde Node-RED.
Consejo: Puede enviar correos electrónicos a varios destinatarios separando cada correo con un punto y coma en el campo "To:".
Cómo requerir módulos nativos de Node.js
En las funciones de Node-RED, intentar requerir un módulo nativo de Node.js directamente resulta en el error ReferenceError: require is not defined. Esto se debe a que Node-RED no permite requerir un módulo de Node.js directamente dentro de una función.
Para resolver esto, estos módulos se han integrado en el contexto global de Node-RED. Puede acceder a ellos usando context.global.
Por ejemplo, si necesita el módulo crypto, declárelo así:
const { crypto } = context.global;
Los siguientes módulos de Node.js están disponibles: util, buffer, child_process, crypto, fs, os, http, http2, https, y zlib.
Conexión a una base de datos MySQL o MariaDB
Hemos desarrollado un nodo para conectarse a un servidor MySQL que es totalmente compatible con el nuevo sistema de autenticación de MySQL 8, "Caching SHA2 Password", así como con MariaDB.
Nodo MySQL/MariaDB
Para más detalles, visite el repositorio oficial. Para instalar este nodo en su instancia de Node-RED, simplemente busque stackhero en la sección Administrar paleta de su panel de Node-RED.
Conexión a una base de datos InfluxDB v2
Ofrecemos un nodo diseñado para conectarse a una base de datos InfluxDB v2. Este nodo le permite escribir datos y realizar consultas usando el lenguaje Flux.
Nodo InfluxDb-v2
Información adicional está disponible en el repositorio oficial. Para añadirlo a su instancia de Node-RED, busque stackhero en la sección Administrar paleta.
Cómo capturar y registrar errores de nodos de Node-RED
A veces, los nodos pueden generar errores. Una solución práctica es configurar un flujo "catch all debug" para monitorear estos errores.
Ejemplo de flujo de captura de errores de Node-RED
Para configurar esto, añada un nodo catch y conéctelo a un nodo debug. Configure el nodo debug para que muestre el objeto msg completo. Esta configuración registra cada error generado en el flujo en la ventana de depuración de Node-RED.
Ejemplo de error de nodo de Node-RED capturado
Un nodo
catchsolo se activa por errores de nodos dentro del mismo flujo. Si utiliza múltiples flujos (o pestañas), necesitará añadir los nodoscatchydebuga cada flujo.
Almacenar datos en el sistema de archivos
Stackhero para Node-RED ofrece almacenamiento local donde sus nodos pueden almacenar archivos. Este almacenamiento se encuentra en el directorio /persistent/storage/.
alerta Nunca use otro destino para su almacenamiento local que no sea un subdirectorio de
/persistent/storage/. Si utiliza otro directorio, perderá sus datos al aplicar una actualización de Node-RED.
Configuración del nodo para almacenar datos locales
En este ejemplo, utilizaremos el nodo node-red-node-sqlite. Este nodo requiere un directorio para almacenar sus datos.
Deberá definir un archivo en el directorio /persistent/storage/, por ejemplo, /persistent/storage/myDatabase.sqlite.
Ejemplo de configuración de SQLite en Node-RED
Almacenar archivos
Si necesita almacenar datos localmente, puede escribir archivos en el directorio /persistent/storage/. Algunos datos de Node-RED podrían ya estar presentes en este directorio. Para evitar conflictos, se recomienda usar subdirectorios, por ejemplo, /persistent/storage/myFlowData, para almacenar sus archivos.
Para crear este directorio usando Node.js, ejecute el siguiente código en su nodo:
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
aviso Si planea almacenar más de unos pocos archivos, recomendamos usar un servidor de almacenamiento de objetos. Los servidores de almacenamiento de objetos facilitan la gestión, el intercambio y el acceso a archivos a través de una API, como con el protocolo S3. Considere el servicio MinIO disponible en Stackhero para este propósito, que le ofrece un servidor de almacenamiento de objetos compatible con S3 en solo 2 minutos.
Usar un nodo HTTP con un iFrame
Al usar un iFrame para solicitar contenido a través de un nodo HTTP, el encabezado predeterminado X-Frame-Options: SAMEORIGIN podría impedir que la página se muestre. A partir de la versión 1.2.2-0 de Node-RED, puede anular este encabezado predeterminado.
Para hacerlo, establezca el encabezado X-Frame-Options en null en su nodo de respuesta HTTP. Por ejemplo:
msg.headers = { "X-Frame-Options": null };
Ejemplo de un nodo configurando el encabezado X-Frame-Options
Puede descargar este ejemplo de flujo e importarlo en su instancia de Node-RED para probar la función.
Tenga en cuenta que también puede restringir los dominios permitidos usando los encabezados Content-Security-Policy: frame-ancestors <source> o X-Frame-Options: ALLOW-FROM <source>.
Modo seguro: resolver errores de flujos de Node-RED (error 502)
Si encuentra un error 502 al acceder a su panel de administración, comience por verificar los registros de su instancia. Puede encontrar estos registros en el panel de Stackhero bajo la pestaña "Logs" después de seleccionar su servicio Node-RED.
Los registros pueden contener errores de Node-RED que impiden que se inicie correctamente. Recoja tanta información como sea posible para ayudar a depurar sus flujos.
Después de revisar sus registros, vaya a la configuración de su servicio en el panel de Stackhero y active la opción "Modo seguro". En modo seguro, Node-RED se reiniciará sin iniciar automáticamente sus flujos.
Esto le permite acceder al panel de administración, corregir sus errores de flujo y desplegar sus cambios. Una vez que todo funcione correctamente, recuerde desactivar el modo seguro en la configuración de su servicio para que sus flujos se inicien automáticamente al reiniciar Node-RED.
La versión del nodo en el gestor de paleta es más antigua que la de NPM
Si intenta instalar un nodo usando el Gestor de Paleta pero nota que la versión es más antigua que la de NPM, probablemente significa que el creador del nodo no ha actualizado la versión en el sitio de Node-RED.
Anteriormente, las versiones de los nodos se actualizaban automáticamente para reflejar la versión publicada en NPM. Esto ya no es el caso.
La buena noticia es que puede solicitar al sitio de Node-RED que actualice la versión. Simplemente vaya a https://flows.nodered.org/add/node, ingrese el nombre del módulo NPM (por ejemplo, node-red-contrib-xxx), y haga clic en el botón "Add". Una vez completado, regrese a su panel de Node-RED y abra el Gestor de Paleta. La versión actualizada debería estar ahora visible y lista para su instalación.
Manejar el error "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c"
Si ve este error al enviar un correo electrónico, probablemente sea porque ha seleccionado la opción "Use secure connection" en la configuración de su nodo de correo electrónico.
Dado que el servidor de correo electrónico de Stackhero y el servidor de Node-RED funcionan en la misma instancia, se comunican localmente, por lo que no necesita usar cifrado TLS (SSL). Habilitar la opción de conexión segura hace que Node-RED use TLS para comunicarse con el servidor de correo electrónico, lo que lleva al error SSL sobre un "wrong version number".
Tenga en cuenta que si el servidor receptor admite cifrado, el correo electrónico se cifrará automáticamente con TLS. Esto ha sido preconfigurado para usted.