Page 1 sur 2
Node-red function
Publié : 04 nov. 2017, 22:44
par dokho
Bonsoir,
Je souhaiterais utiliser node-red pour récupérer et envoyer via mqtt la valeur de consommation électrique issue de ma teleinfo wifi.
J'ai bricolé une fonction qui me permet de publier la valeur sur un topic mais elle est au format 00520.
Je souhaiterais supprimer les 00 devant n'avoir que 520.
J'ai bien trouvé des fonctions Java script pour arrondir à x chiffres après la virgule, d'autres pour arrondir à l'entier supérieur mais je ne pense pas que cela fasse l'affaire.
Quelqu'un aurait il une idée ?
Merci d'avance.
Re: Node-red function
Publié : 04 nov. 2017, 23:53
par vil1driver
Salut,
sans connaitre ça sent l'usage de chaîne de caractères au lieu d'entier..
Re: Node-red function
Publié : 05 nov. 2017, 07:45
par filoo
Effectivement c'est une chaîne de caractère et on doit pouvoir faire un truc comme ça :
var bidule = ta_variable.substring(2,5);
Re: Node-red function
Publié : 05 nov. 2017, 12:52
par dokho
Bonjour,
Merci à vous deux, ça fonctionne
Code : Tout sélectionner
msg.topic = "domoticz/out/"+msg.payload.name+"/Energy";
if (msg.payload.idx === 1277)
{
msg.payload = msg.payload.svalue5.substring(2,5)
return msg;
}
Re: Node-red function
Publié : 05 nov. 2017, 16:35
par dokho
filoo a écrit :Effectivement c'est une chaîne de caractère et on doit pouvoir faire un truc comme ça :
var bidule = ta_variable.substring(2,5);
En fait ça fonctionne tant que ma conso n'excède pas 999 Watts, au delà ça va tronquer le 1er chiffre non ?
Re: Node-red function
Publié : 05 nov. 2017, 17:28
par filoo
Tu testes ce que tu trouves avant tes 3 dernières lettres et tu passes à : variable.substring(1,5);
Re: Node-red function
Publié : 05 nov. 2017, 18:33
par vil1driver
Effectivement,
J'avais une autre approche en tête en parlant d'entiers
C'est la conversion chaîne > entier
Exemple en lua c'est tonumber()
Re: Node-red function
Publié : 05 nov. 2017, 18:39
par dokho
Re: Node-red function
Publié : 05 nov. 2017, 19:51
par filoo
C'est encore mieux, parfait
Re: Node-red function
Publié : 05 nov. 2017, 20:03
par vil1driver
C'est tordu.. Même si ça fait le job, ce n'est pas la bonne façon de le faire.. Math.round sert à arrondir un entier pas à convertir une chaîne en entier.
Alors j'ai pris 10min sur google et je suis tombé là dessus
https://www.google.fr/search?q=nodered+ ... to+integer
Donc regarde plutôt du côté de parseInt() qui doit être l'équivalent de tonumber() en lua et plus encore.
https://www.w3schools.com/jsref/jsref_parseint.asp
The parseInt() function parses a string and returns an integer.
Ce sera certainement meilleur et plus fiable