Node-red function

Posez vos questions concernant le Raspberry (conseil avant achat, choix de connectique, demandes de câblages...) un espace spécifiques pour les questions relatives aux scripts shell,bask,block etc ... est ouvert dans un autre forum.
dokho
Messages : 427
Inscription : 28 déc. 2014, 19:32

Node-red function

Messagepar dokho » 04 nov. 2017, 22:44

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.

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


vil1driver
Messages : 4028
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Node-red function

Messagepar vil1driver » 04 nov. 2017, 23:53

Salut,

sans connaitre ça sent l'usage de chaîne de caractères au lieu d'entier..

Domoticz v3.8158 (ubuntu server) OpenZwave v1.4-2503 (zwave+ sigma designs) mysensors v1.5 (serial gateway) rfxtrx433 fw1015T1

433mhz : thgn800, ms13e2, phenix, Di.O, zk1pa, creasol sender
868mhz : fgms-001, fgfs-101, dsd37-zweu
2.4ghz : RGB-3D

modules.lua

filoo
Messages : 27
Inscription : 14 sept. 2017, 10:58

Re: Node-red function

Messagepar filoo » 05 nov. 2017, 07:45

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);

dokho
Messages : 427
Inscription : 28 déc. 2014, 19:32

Re: Node-red function

Messagepar dokho » 05 nov. 2017, 12:52

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;
}

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


dokho
Messages : 427
Inscription : 28 déc. 2014, 19:32

Re: Node-red function

Messagepar dokho » 05 nov. 2017, 16:35

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 ?

filoo
Messages : 27
Inscription : 14 sept. 2017, 10:58

Re: Node-red function

Messagepar filoo » 05 nov. 2017, 17:28

Tu testes ce que tu trouves avant tes 3 dernières lettres et tu passes à : variable.substring(1,5);

vil1driver
Messages : 4028
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Node-red function

Messagepar vil1driver » 05 nov. 2017, 18:33

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()

Domoticz v3.8158 (ubuntu server) OpenZwave v1.4-2503 (zwave+ sigma designs) mysensors v1.5 (serial gateway) rfxtrx433 fw1015T1

433mhz : thgn800, ms13e2, phenix, Di.O, zk1pa, creasol sender
868mhz : fgms-001, fgfs-101, dsd37-zweu
2.4ghz : RGB-3D

modules.lua

dokho
Messages : 427
Inscription : 28 déc. 2014, 19:32

Re: Node-red function

Messagepar dokho » 05 nov. 2017, 18:39

J'ai réussi avec:

Code : Tout sélectionner

msg.payload = Math.round(msg.payload.svalue5)

filoo
Messages : 27
Inscription : 14 sept. 2017, 10:58

Re: Node-red function

Messagepar filoo » 05 nov. 2017, 19:51

C'est encore mieux, parfait

vil1driver
Messages : 4028
Inscription : 30 janv. 2015, 11:07
Localisation : Rennes (35)

Re: Node-red function

Messagepar vil1driver » 05 nov. 2017, 20:03

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

Domoticz v3.8158 (ubuntu server) OpenZwave v1.4-2503 (zwave+ sigma designs) mysensors v1.5 (serial gateway) rfxtrx433 fw1015T1

433mhz : thgn800, ms13e2, phenix, Di.O, zk1pa, creasol sender
868mhz : fgms-001, fgfs-101, dsd37-zweu
2.4ghz : RGB-3D

modules.lua

Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.



Revenir vers « Raspberry, Linux et autres geekeries »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 7 invités