
Spanish: 
Probablemente ha escuchado mucho acerca
Node-RED y su importancia a la revolución
de IoT. Pero, ¿qué es exáctamente?
Simplemente, Node-RED es un editor visual de
código abierto que permite a los programadores de 
cualquier nivel, a interconectar rápidamente las
entradas y salidas físicas, sistemas basadas en la nube,
bases de datos, y la mayoría de APIs en cualquier
combinación que pueda imaginarse. Node-RED
gana más y más apoyo en el
mundo emergente de IoT y IIoT. Si no lo está
usando, está perdiendo el uso
de una herramiento increíblemente flexible. En
este video, voy a repasar los 
conceptos básicos de Node-RED
y enseñarle cómo construir un proyecto,
o “flujo”, para ayudarle comenzar.
Node-RED puede correr en la mayoría de sistemas
de computadoras modernas, incluso PCs de Windows, MAC,
y Linux, o hasta computadoras ligeras cómo
computadoras como Rasberry Pi o
aparatos robustos e industriales como
este groov-AR1, el cual voy a 

English: 
You've probably heard a lot about
Node-rRED and its importance in the IOT
revolution. But what exactly is it?
Simply put Node-RED is an open source
visual editor that allows programmers of
any level to rapidly interconnect
physical i/o, cloud-based systems,
databases, and most API's in any
combination you can imagine.  Node-RED
is getting more and more support in the
growing world of IOT and IIoT. If you're
not using it you're missing out on an
incredibly flexible and powerful tool. In
this video I'm going to go over the
fundamentals of Node-RED
and show you how to build a simple
project or flow to help you get started.
Node-RED can be run on most modern
computer systems including Windows, Mac,
and Linux pcs or even lightweight
computers like the Raspberry Pi or
industrially hardened appliances like
this groov AR1 which is what I'll be

English: 
using for this workshop. Node-RED's
website has instructions on how to get
the application running on whatever
system you're using but it's running on
the groov AR1 by default. So I can just
go over to Node-RED by going to my
boxes host name:1880 and login
with my admin user's credentials. This is
a pretty big deal. By default Node-RED
installations are wide open
but on the groov AR1 we have added
both HTTPS and authentication for you. Now
I can see the main landing page for Node-RED with its three main sections. The
Node palette on the left, the main
workspace front and center, and the
output pane on the right. The nodes on
the left are organized into collapsible
categories to sort your available nodes.
You can also search for them in the
filter at the top. Most of the nodes you

Spanish: 
usar para este taller. La página web de Node-RED
tiene instrucciones para hacer 
la aplicación correr en cualquier
sistema que este usando, pero se ejecuta en
el groov-AR1 por default. Puedo usar
Node-RED si voy al
host name de la caja: 1880 y me ingreso
con mis credenciales de administrador. Esto es
muy importante. Por default, las instalaciones 
de Node-RED están abiertos
pero en el groov-AR1, hemos agregado
ambos HTTPS y autenticación. Ahora
puedo ver la página principal de Node-RED con tres secciones principales. 
El panel al lado izquierdo, el espacio principal
de trabajo, y la
pantalla de salidas al lado derecho. Los nodos al
lado izquierdo están organizados en 
categorías para surtir los nodos disponibles.
También los puede buscar con el 
filtro en la parte superior. La mayoría de los nodos que

Spanish: 
se ven aquí, están incluídos por default, y llamados
‘nodos bases’. Puede instalar nodos externos
para conseguir más funcionalidad, cómo 
explicaré después. Estos dos nodos de Opto 22
están incluidos en el AR1 por default.
Cada nodo tiene un uso específico
y lo que hace Node-RED ser tan flexible y
tan poderoso, son los nodos modulares que son
autonomos y reutilizable con casi toda la
lógica de programación de JavaScript y
la sobrecarga del API escondidos dentro de estos gráficos
redondeados. Consigue nuevos nodos en su 
programa al hacer clic y agarrandolos 
desde el panel al lado izquierdo, y arrastrarlos
en el espacio de trabajo. Aquí, traje 
uno de los nodos bases, ‘el nodo de
inyección’.  Node-RED usa programación
basado en flujo y para comenzar el flujo,
algo tiene que “inyectar” un mensaje
al flujo donde el nodo de inyección
empuja un sello de tiempo por default. Como 
puede ver en la etiqueta, otro nodo base principal
es el nodo de depuración de salida. Voy a
arrastrar uno de esos ahora.
Si verifica en la pestaña de Información y luego la 
pantalla de salidas, le explica que el nodo

English: 
see here are included by default called
'core nodes'. You can install external
nodes to get more functionality as I'll
explain later on. These two Opto nodes
are included on the AR1 by default.
Each node performs a specific function
and what makes Node-RED so flexible and
powerful is that the modular nodes are
self-contained and reusable with most of
the JavaScript program logic and API
overhead hidden in these colored rounded
boxes. You get new nodes into your
program by clicking and grabbing them
from the node palette and dragging them
into the workspace. Here I've brought in
one of the key core nodes 'the Inject
node'.  Node-RED uses flow-based
programming and so to start the flow
something will need to inject a message
into the flow where the inject node
pushes a timestamp in by default. As you
can see by its label another key core
node is the output debug node. so I'll
drag one of those in now to
if you check the info tab and then
output pane it explains that the debug

English: 
node displays the msg.payload
from the flow by default. To actually see
this message you'll need to come up here
and switch to the debug tab. To edit a
node double click it and a new pane will
pop out. Here with the inject node you
can see that the time stamp is going
into msg.payload which is what
the debug node will output to this
window by default.  So we don't need to
change any settings but we do need to
connect the pair. As you can see input
nodes have a small icon on the left side
of the node and output nodes have a
small icon on the right. This represents
what kind of action the node takes. In
the case of the inject you get a small
arrow, the debug has a couple of lines,
and the catch has an exclamation point
and so on. Also note that the timestamp
node has one connection port on the
right side. This is for the flow output
of the node.  And the output node has a
connection port on the left side of the
node this is for flow input. To wire two
nodes together grab one connection port

Spanish: 
de depuración enseña la carga útil de msg.payload
del flujo por default. Para ver
este mensaje, vaya a la parte superior 
y vaya a la pestaña de depuración. Para editar un 
nodo, haga doble-clic y una nueva ventana
se presenta. Aquí con el nodo de inyección, puede
ver que el sello de tiempo se incluye
en msg.payload, que es lo que
saldrá del nodo de depuración en esta
pantalla por default. No tenemos que
cambiar ninguna configuración, pero sí temenos que 
conectarlos. Se puede ver que los nodos
de entrada tienen un icono pequeño al lado izquierdo
del nodo, y los nodos de salidas, tienen un
icono pequeño al lado derecho. Esto representa
el tipo de acción que el nodo tomará. En
el caso de la inyección, resulta en una pequeña
flecha, la de depuración tiene un par de lineas,
y el catch tiene un signo de exclamación,
y así. También, tome nota que el nodo 
de sello de tiempo tiene un puerto de conexión al
lado derecho. Este es para el flujo de la salida 
del nodo. Y el nodo de salida tiene 
un puerto de conexión al lado izquierdo del 
nodo. Este es para el flujo de entrada. Para conectar dos
nodos, agarre un puerto de conexión,

Spanish: 
haga clic, detenga, y arrastre la conexión hacía
el otro puerto de conexión y suelte. Puede
moverlo de la izquierda a la derecha, o
de la derecha hacía la izquierda, no importa. Ahora que
están conectados, necesitamos activar los
cambios y presionar el botón de Deploy,
colocado en la parte superior. Antes que los nodos
con cambios son activados, hay un pequeño, circulo
azul que indica que hay cambios sin 
guardar. Después de deplegar, lo verá 
desaparecerse y sabra que los nodos están
activos. El programa representado
por estos nodos está en marcha, pero
al momento, no hace nada como
los mensajes no han sido inyectados al 
flujo. Force la inyección con la pestaña del 
botón azul que sale del nodo del 
sello de tiempo. Esto inyecta la hora de Unix – un estandar
que mide cuantos milisegundos
han pasado desde el día primero de enero, 1970.
Este número fluye por la conexión y 
es presentado en la pantalla de depuración por
el nodo de salida. Node-RED reconoce este 
número como el sello de tiempo. Puede hacer clic
para ver la representación de ISO, hacer clic
otra vez, para ver el valor en hexadecimal, y 

English: 
click and hold drag the wire over to
another connection port and release. You
can do this either left to right or
right to left it doesn't matter. Now that
they're connected we need to make the
changes active by hitting the deploy
button in the top right. Before changed
nodes are deployed there's a small blue
circle indicating that there are unsaved
changes. After deploying you will see it
go away and you know that the nodes are
live currently the program represented
by these nodes is running but not
actively doing anything since no
messages have been injected into the
flow yet. Force an inject using the blue
button tab coming out of the timestamp
node. This injects unix time - a standard
that measures the number of milliseconds
elapsed since the first of January 1970.
This number flows along the wire and
gets displayed in the debug window by
the output node. Node-RED recognizes this
number as a time stamp. So I can click it
to see the ISO representation, click it
again to see the hexadecimal value, and

Spanish: 
hacerle clic una vez más para regresar al decimal.
La depuración muestra el contenido de msg.payload, el cual es lo que 
proporciona el nodo de inyección 
Vamos a decir que quiero ver la hora cada
segundo. Puedo ir al nodo de inyección,
seleccionar ‘repeat’ (repetir), y cambiar el
intervalo a un segundo. Ahora hago clic en Done,
despliego los cambios, y veré que el tiempo
aparece una vez por segundo. Para detenerlo,
tendré que regresar, quitar el interval,
y guardarlo una vez más. Ahora puedo
cambiar lo que el nodo de inyección 
manda al flujo y puedo cambiarlo de
un sello de tiempo, a una cadena. Para
hacerlo,
hago clic en el nodo, clic en el
menu desplegable para el sello de tiempo, y cambiarlo
a la cadena fija “Hello world”. Haga clic en Done,
Deploy

English: 
click it once more to return to decimal.
The debug shows the content of msg.payload which is what the inject
node feeds.
Let's say I want to see the time every
second I can go back to the inject node
select 'repeat' and change it to the
interval of one second. Now I click done,
deploy the changes, and I'll see the time
appear once every second. To stop this
I'll need to go back, turn the interval
off, and save it once again. Now I can
change what the inject node is inserting
into the flow and I can change it from
time stamp to a string message. To do
that
I double-click the node, click the drop
down for time stamp, and make it the
constant string 'hello world'. Click done,
deploy,

Spanish: 
y inyecte para ver la nueva carga útil. Ahora
ha visto unas entradas y salidas básicas
usando los nodos bases de inyección y depuración.
Vamos a ver cómo podemos usar nodos
de procesos que tienen ambos una entrada y una 
salida para cambiar los datos. Comencemos 
con un nodo sencillo de cambio. Desde la 
sección de función, despliegue hacía abajo y 
arrastre uno encima de la conxión entre los 
dos nodos que ya tengo. Lo verá 
cambiar de una linea solida a una discontinua para indicar que
automáticamente va a conectarse.
Haga doble-clic en el nodo para editarlo y 
aquí le enseñaré cómo cambiar el
msg.payload y buscar la 
palabra “world” y reemplazarla con otra 
cadena de “from Node-RED”. Haga clic en Done, Deploy,
e inyecte de nuevo para ver el cambio en 
el flujo. Aquí en la pantalla de depuración, puedo ver
que ha cambiado la palabra de ‘world’

English: 
and inject to see the new payload. Now
you've seen some basic inputs and outputs
using the core nodes inject and debug.
Let's see how we can use processing
nodes that have both an input and an
output to modify our data. Let's start
with a simple change node. From the
function section scroll down there and
drag one onto the wire in between the
two nodes I already have. You'll see it
go from solid to dashed to indicate that it's
going to automatically wire itself in.
Double click the node to edit it and
here I'll show you how to change the
msg.payload and search for the
word 'world' and replace it with another
string 'from node red'. Click done, deploy,
and inject again to see the modified
flow. Here in the debug window I can see
that it has changed the word 'world'

English: 
to 'from Node-RED' so now I have the full
string 'hello fromNode-RED' however this
change node is relatively limited in
what it can do and is not designed to
loop or make complex logical decisions.
Only follow the specific rules entered
in this window. Thankfully there's an
alternative - the function node. Which has
very few limitations. So let's get rid of
this one. You can delete wires by
clicking on them and pressing delete. And
you can get rid of nodes the same way. If
you make any changes you're unhappy with
you can use the shortcut control Z to
undo them. Note that when I deleted the
wires nothing happened to the nodes but
when I delete the node the wires
connected to it are deleted as well. This
new function node is one of the most
powerful in Node-RED.
Once I connect it and edit it I can see
that it exposes a block of JavaScript to
the user and I can do whatever I wish
within this language. In this example
I'll show how it can replicate the
change node functionality by creating a

Spanish: 
a “from Node-RED” y ahora tengo 
la cadena completa de “hello from Node-RED”. Aunque este
nodo de cambio es medio limitado en
lo que puede hacer, y no fue diseñado para
iterar o hacer decisiones lógicas complejas.
Solo para seguir las reglas introducidas
en esta pantalla. Afortunadamente, hay una
alternativa – el nodo de función. El cual, tiene 
muy pocas limitaciones. Vamos a eliminar
este. Puede eliminar conexiones al
hacer clic en ellos y hacer clic en Suprimir. Y
puede eliminar nodos de la misma forma. Si
hace cambios que no desea,
puede usar el atajo de ‘Control Z’ para
deshacerlos. Note que cuando suprimí las 
conecciones, no le pasó nada a los nodos, pero
cuando elimino el nodo, las conecciones
que están conectadas, también son eliminados. Este
nuevo nodo de función es uno de los más
poderosos en Node-RED.
Cuando lo conecto y lo actualizo, puedo ver
que expone un bloque de JavaScript para
el usuario y puedo hacer cualquier cosa que quiera 
dentro de este lenguaje. En este ejemplo,
le enseñaré cómo puede duplicar la
funcionalidad del nodo de cambio al crear una

English: 
new string and using the replace
function to look for the world 'world' and
replace that with 'from Node-RED'.  Then I
can return a new object with this new
string as the payload. I'll click done,
deploy, and then inject the payload so
that I can see the new flow in action.
Here in the debug window I see that the
exact same string is outputted as I got
from the change node now to get a quick
example of how new node packages are
installed go over to the node-red menu
click on manage palette
and then navigate up to the install
nodes tab. You can search for any package
you'd like. Here but I'm going to search
for the MS SQL package. This will
allow me to connect to a Microsoft
SQL database. I can click install and
since this node has no extra

Spanish: 
nueva cadena y usar la función de reemplazo
para buscar la palabra de “world” y
reemplazarlo con “from Node-RED”. Luego 
puedo regresar un objeto nuevo, como la carga, 
con esta nueva cadena. Hago clic en Done,
en Deploy, y luego inyecto la carga para
poder ver el nuevo flujo trabajar.
Aquí en la pantalla de depuración, veo que la
la misma cadena es igual
a la salida del nodo de cambio. Ahora para un 
ejemplo rápido de cómo paquétes nuevos de nodos son
instalados, vaya al menu de Node-RED.
Haga clic en Manage palette,
y vaya a la pestaña de nodos de
Install. Puede buscar cualquier paquete
que desea aquí. Pero voy a buscar
el paquete de MicroSoft SQL. Esto me 
permitirá conectarme a la
base de datos de MSSQL. Puedo hacer clic en Install y 
como este nodo no tiene dependencias 

English: 
dependencies I'm free to bring it in.
Once it's done installing I can click
close and scroll down to the storage
section where I see the MS SQL node
installed right below the core file
nodes. So there you have it I have given
you a brief overview of what the
Node-RED interface contains how inject
nodes can input information have it
processed by different function nodes
and output messages with the debug node.
Using user-defined function nodes or
community built packages.This simple
flow based programming tool can do
incredible things. For more information
check out workshops opto22.com and
node-red org thanks for watching
 

Spanish: 
adicionales, puedo incluirlo.
Al terminar la instalación, puedo hacer clic en
Close, y desplacer hacía abajo a la 
sección de Storage, donde veo que el nodo de MS SQL
está instalado debajo de los nodos de archivos 
bases. Aquí lo tiene, le he dado
un resumen de lo que
la interface de Node-RED contiene, cómo los 
nodos de inyección pueden introducer información, cómo
se puede procesar por diferentes nodos de función
y producir mensages con el nodo de depuración.
Utilizando nodos que han sido definidos o
paquetes que se han armado por la comunidad. Esta
herramienta sencilla de programación, basada en flujos puede
hacer cosas increibles. Para más información,
visite workshops.opto22.com y 
Node-RED.org. Gracias por su atención.
