0% encontró este documento útil (0 votos)
6 vistas8 páginas

Ensayos Function Node Red

node-red, ejemplos funciones

Cargado por

luzmary1208
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
6 vistas8 páginas

Ensayos Function Node Red

node-red, ejemplos funciones

Cargado por

luzmary1208
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

http://www.steves-internet-guide.

com/node-red-functions/

El mensaje payload puede ser accedido mediante:

var payload=msg.payload;

y puede ser modificado:

msg.payload=payload;

Igualmente el mensaje topic puede ser accedido mediante:

var topic=msg.topic;

y puede ser modificado:

msg.topic= topic;

Se puede extender usando

var newvalue;

msg.newproperty=newvalue;
Ahora el objeto msg tiene una propiedad llamada msg.newproperty.
Crear un nuevo objeto de mensaje Dentro de una función puede crear
un nuevo objeto msg usando:

var newMsg = { payload: msg.payload,topic:msg.topic };

return newMsg;

Ejemplo:

A continuación, usamos el nodo de inyección para inyectar una carga


útil con la cadena "cadena de prueba" y un tema de prueba.
Si pasamos esto a nuestra función no hacer nada como antes,
obtendremos el siguiente resultado.

El resultado es el esperado. Esta vez mostramos el tema como prueba


y la carga útil como cadena de prueba.
Ahora si modificamos la función para cambiar la carga útil t
Mayúsculas y el tema a mayúsculas usando el siguiente código:

var payload=msg.payload; //get payload

msg.payload=payload.toUpperCase(); //convert to uppercase

var topic=msg.topic; //get topic

msg.topic=topic.toUpperCase();//convert to uppercase
return msg;

El resultado es este:

Código:
---------------------------- código node red --------------------------------------
[{"id":"369a5b23.eef5b4","type":"tab","label":"Flow
1","disabled":false,"info":""},
{"id":"67bf457a.10e95c","type":"inject","z":"369a5b23.eef5b4","name":""
,"topic":"test","payload":"\"test
string\"","payloadType":"str","repeat":"","crontab":"","once":false,"onceD
elay":0.1,"x":220,"y":120,"wires":[["a8be3d75.10356"]]},
{"id":"d9bac251.2029f","type":"debug","z":"369a5b23.eef5b4","name":""
,"active":true,"tosidebar":true,"console":false,"tostatus":false,"complete"
:"true","targetType":"full","x":710,"y":120,"wires":[]},
{"id":"a8be3d75.10356","type":"function","z":"369a5b23.eef5b4","name"
:"","func":"var payload=msg.payload; //get payload\
nmsg.payload=payload.toUpperCase(); //convert to uppercase\nvar
topic=msg.topic; //get topic\nmsg.topic=topic.toUpperCase();//convert
to uppercase\nreturn
msg;","outputs":1,"noerr":0,"x":480,"y":120,"wires":
[["d9bac251.2029f"]]}]

El módulo function tiene la posibilidad de tener 2 salidas.


Para devolver mensajes a múltiples salidas, debe
devolver una matriz.

return [msg1,msg2];

Msg1 aparecerá en la salida1 y msg2 en la salida2.

Para detener una ruta de flujo, devuelve null en esa salida.

Entonces, para devolver el objeto msg en output1 y nada en output2


use:

return [msg1,null];

return [msg1];
Ejemplo
En el flujo de ejemplo, utilizamos dos nodos de inyección para inyectar
un mensaje sobre dos temas diferentes en un nodo de función con dos
salidas.
La función envía el mensaje a la salida en función del nombre del
tema.
La prueba de test1 va a la output1 y test2 va a la output 2.

----------------------------------------código node red-------------------------


[{"id":"369a5b23.eef5b4","type":"tab","label":"Flow
1","disabled":false,"info":""},
{"id":"67bf457a.10e95c","type":"inject","z":"369a5b23.eef5b4","name":""
,"topic":"test1","payload":"\"test
string1\"","payloadType":"str","repeat":"","crontab":"","once":false,"once
Delay":0.1,"x":290,"y":80,"wires":[["a8be3d75.10356"]]},
{"id":"d9bac251.2029f","type":"debug","z":"369a5b23.eef5b4","name":""
,"active":true,"tosidebar":true,"console":false,"tostatus":false,"complete"
:"true","targetType":"full","x":690,"y":60,"wires":[]},
{"id":"a8be3d75.10356","type":"function","z":"369a5b23.eef5b4","name"
:"","func":"var topic=msg.topic;\nif (topic==\"test1\"){\n return
[msg,null];\n \n}\nif (topic==\"test2\"){\n return [null,msg];\n \
n}","outputs":2,"noerr":0,"x":480,"y":120,"wires":[["d9bac251.2029f"],
["6d6b26d0.2411b8"]]},
{"id":"5065e197.7cc77","type":"inject","z":"369a5b23.eef5b4","name":"",
"topic":"test2","payload":"test 2
string","payloadType":"str","repeat":"","crontab":"","once":false,"onceDe
lay":0.1,"x":280,"y":180,"wires":[["a8be3d75.10356"]]},
{"id":"6d6b26d0.2411b8","type":"debug","z":"369a5b23.eef5b4","name":
"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complet
e":"false","x":690,"y":140,"wires":[]}]
-------------------------------------------------------------------------------------------

Múltiples mensajes en una sola salida .


Puede usar una matriz para devolver múltiples
objetos msg en una sola salida. Entonces el
regreso se vería así:

return [msg_object_array];

Es importante que devuelva una matriz de objetos


en una matriz.

Esto se ve mejor con un ejemplo

En este ejemplo, usamos un nodo de inyección para inyectar una


cadena de prueba en el nodo de función.
El nodo de función toma la cadena y la usa para la carga útil del
mensaje, pero en lugar de enviar 1 mensaje tiene un bucle for que
crea 3 mensajes y los coloca en una matriz. ¡La función devuelve la
matriz como una matriz!

Aquí está el flujo:

Resultado:

------------------------------código node red---------------------------


[{"id":"67bf457a.10e95c","type":"inject","z":"369a5b23.eef5b4","name":"
","topic":"test1","payload":"\"test
string1\"","payloadType":"str","repeat":"","crontab":"","once":false,"once
Delay":0.1,"x":290,"y":80,"wires":[["a8be3d75.10356"]]}]

También podría gustarte