Problème fonction node red


#1

Bonjour à tous,
Après recherche sur le forum et google, ne n’arrive pas à trouver la réponse de mon problème…

Je souhaite créer un compteur qui s’incrémente j’usqu’à 5 et se des-incrémente jusqu’à 0 en boucle. J’ai un problème sur le résultat de ma fonction qui envoi ces valeurs : 2, 3, 4, 5, 6, 4, 3, 2, 1, 0, 2, 3… (Elle saute le 1 puis monte jusqu’à 6 alors que je veux monter à 5).

Je vous donne mon code source :

//Recupération des valeurs sauvegardées
var count = context.get (‘count’) || 0 ;
var sens = context.get(‘sens’) || 0;

//Donne le sens incrementation ou decrementation
if (count === 0) {
sens = true;
context.set(‘sens’, sens);
}
if (count == 5) {
sens = false;
context.set(‘sens’, sens);
}

//Incrementation ou decrementation
if (sens) {
count += 1;
}
if (!sens) {
count -= 1;
}

//Sauvegarde et envoi de la valeur
context.set(‘count’, count);
msg.payload = count + sens;
return msg;

Quelqu’un aurai une idée svp ?
Cordialement,


#2

Bon j’ai trouvé la solution à mon problème, c’était dû à msg.payload = count + sens; à la fin du code.
J’ai enlever la variable sens et le ça marche nickel.

Dsl du dérangement…
@+


#3

Bonjour,

Si tu souhaites réduire le nombre de ligne de ton code, voici un algo qui permet de faire la même chose:

var val = context.get(“val”) || 0;
var absValue = Math.abs(val);
if (absValue == 5)
val = -5;
// Increment val
val++
msg.payload = absValue;
context.set(“val”, val);
return msg;


#4

Merci Atikin pour la petite modif