Can't add values

when I try to add and subtract values, it seems that adding 2 numbers will not work while subtracting is oke.

in the function node I do the following:

var waarde1 = 0
var waarde2 = 0
var jitter = 5

waarde1 = cvwaarde1 + jitter; ( 851 + 5 will give 8515) is NOK
waarde2 = cvwaarde1 - jitter; (851 - 5 will give 846) is OK

or

waarde1 = cvwaarde1 +=5; ( 851 + 5 will give 8515) is NOK
waarde2 = cvwaarde1 -=5; (851 - 5 will give 846) is OK

What do I wrong?


My last function node script after many tries:

var inp = msg.payload;
var kronwaarde = global.get('kronwaarde');
var aanuit = global.get('krongelijk');
var waarde1 = 0
var waarde2 = 0
var inpa = 0
var jitter = 5

waarde1 = kronwaarde + jitter;
waarde2 = kronwaarde - jitter;

if (inp >= waarde1){
cv = "aan";
aanuit = "aan";
}

else if (inp <= waarde2) {
cv = "uit";
aanuit = "uit";
}
else cv = aanuit;

global.set('kronwaarde', inp);
global.set('krongelijk', aanuit)

msg.payload = "KRON|"+ new Date().toDateString()+"|"+ inp + "|" + cv;
return msg;

Aditional info:
Global variables list:

cvgelijk1 "aan"
cvgelijk2 "uit"
cvwaarde "858"
cvwaarde1 "857"
cvwaarde2 "859"
gelijk "aan"
kmargelijk "aan"
kmargelijk1 "aan"
kmargelijk2 "uit"
kmarwaarde "191"
kmarwaarde1 "185"
kmarwaarde2 100
krongelijk "aan"
kronwaarde "185"
tabgelijk "aan"
tabwaarde "851"

Dag Ronald,
even in het Nederlands voor de snelheid. Je numerieke waardes staan als tekst opgeslagen. Zie de quotjes aan beide kanten. Om er mee te rekenen moet je ze naar nummers overzetten. Ik zoek er even een forum post bij waar ik dit een paar dagen geleden heb uitgelegd :slight_smile:
Zie het tweede deel van de volgende post:


Summary in English: your values are stored as string values rather than numbers. To use them for calculations you have to turn them into numbers first.
  1. for a whole number, an integer: msg.payload = parseInt(msg.payload, 10); // 10 as in base 10, a decimal number
  2. for a decimal number, or rather a floating point: msg.payload = parseFloat(msg.payload);
  3. if you don't know if it's a decimal or whole number, or if you want it to fail if there's still text in it: msg.payload = Number(msg.payload); If it has any text in it that makes it's unable to get a number, you will get NaN instead: Not a Number.
1 Like

[quote="afelix, post:3, topic:14725"]
parseInt(msg.payload, 10)
[/quote
Thanks for the fast replay, it solves a the the issue.

Bedankt voor de snelle reactie, ik heb zo bijna het hele internet afgezocht maar kon de oplossing niet vinden. maar je oplossing werkt :blush: