Noeud function : stocker et partager des données avec context ou context.global

node-red
javascript
mini-tuto

#1

Il est possible de stocker des variables dans le contexte de Node-RED. Le contexte est disponible dans le noeud function qui permet de coder en javascript classique. On pourra par exemple s’en servir par exemple dans les cas suivants :

  • Pour stocker des réglages et les recharger automatiquement au démarrage de Node-RED
  • Pour comparer la variation de deux valeurs entre deux exécution du noeud. Utilise pour mesurer le temps écoulé entre deux exécution
  • Pour échanger des données entre tous les noeuds. Dans ce cas, on ajoutera le mot clé global

Pour déclarer un variable de contexte, on utilise le formalisme suivant. Ici on créé une variable locale time qui contient la date et l’heure.

context.time = new Date().getTime();

Si on veut partager cette variable entre tous les noeuds de type function, il suffit d’ajouter le mot clé global comme ceci

context.global.time = new Date().getTime();

Le contenu du contexte est automatiquement enregistré et rechargé à chaque déploiement du flow et au démarrage de Node-RED.
Maintenant pour utiliser une variable, aucune function n’est nécessaire. On appel la variable de contexte comme une autre variable. Ici on va comparer le temps écoulé entre deux exécutions de la fonction

var currentTime = new Date().getTime();		// Récupère la date et l'heure actuelle
var lastTime = context.time;  				// Récupère la date et l'heure du dernier passage
// Plus d'une seconde (1000ms) entre deux exécutions 
if (currentTime - lastTime > 1000 ) {
  node.log("Une seconde écoulée");  // On affiche un message dans le log d'exécution
  contexte.time = currentTime;           // On met à jour l'heure de passage pour la prochaine fois
}

Pour aller plus loin, la documentation officielle de Node-RED