Noeud function : comment avoir plusieurs sorties

Discussions autour de la programmation d'objets connectés avec Node-RED. Guides et astuces de programmation
Avatar de l’utilisateur
admin
Site Admin
Messages : 23
Inscription : Mar Juil 04, 2017 4:04 pm

Noeud function : comment avoir plusieurs sorties

Message par admin » Jeu Juil 13, 2017 7:28 am

Le noeud function peut avoir plusieurs sorties. Par défaut, on retourne (on fait sortir) un seul message (msg). On augmente le nombre de sorties avec l'indicateur numérique situé en dessous de la zone d'édition. Ici, on va créer 3 sorties (outputs)
Image
Pour tester le fonctionnement, on va créer une variable qui contient un nombre tiré au hasard à chaque exécution du noeud à l'aide de la fonction javascript Math.random(). La fonction tire au hasard un nombre entre 0 et 1. Il a été multiplié par 100.
On créé 3 variables (msg1...msg3) qui contiendront chacune le message de sortie. Ici, le payload contient une simple chaine de caractère (output 1...output 3).
Maintenant, pour utiliser les sorties multiples, on construit un tableau qui contient les messages, par exemple

Code : Tout sélectionner

return [msg1,msg2,msg3]
Il n'est pas obligatoire de disposer de tous les messages de sortie. En remplaçant un message par null, la sortie ne sera pas activée et le flow associé ne sera pas exécuté.

Le code complet du flow qu'il suffit d'importer sur le flow

Code : Tout sélectionner

var rand = Math.random() * 100;
node.log(rand);
msg1 = {};
msg2 = {};
msg3 = {};
msg1.payload = "output 1";
msg2.payload = "output 2";
msg3.payload = "output 3";

if ( rand <= 30 ) {
    return [msg1,null,null];    
} else if ( rand > 30 && rand < 65 ) {
    return [null,msg2,null];   
} else {
    return [msg1,msg2,msg3];    
}
Ajoutez un noeud Inject pour exécuter à intervalle régulier la fonction
Image

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité