Function filter

Salve a tutti,
sto iniziando a lavorare con node-red in ambito della building automation, avrei un esigenza che dovrebbe risolversi con un function node, fondamentalmente ho un sistema di domotica (sistema A) con collegamento modbus ip, da lì provengono i comandi che devono poi essere inviati ad un server tcpip (sistema B) in ascolto. La formattazione che ricevo dal modbus è la stessa che poi dovrei inviare al sistema B, si tratta di un solo holding register che varia il suo valore.
Considerando che devo fare il polling (100 ms) per avere l'aggiornamento delle chiamate dal sistema A, se non ci sono variazioni al sistema B viene inviato lo stesso dato, ma io dovrei applicare un filtro o qualcosa che fa passare soltanto le variazioni provenienti dal sistema A.
Qui sotto la funzione che sto utilizzando con il problema che se non si verificano variazioni invia ciclicamente lo stesso dato.
Fondamentalmente quello che dovrei ottenere è che il dato (registro modbus) che passa attraverso il nodo function deve passare soltanto su variazione ed evitare l'invio ripetuto dello stesso valore.
Grazie molto.

Nodo function:

var buff = global.get;
if(msg.payload != buff)
{
buff = {payload: msg.payload};
return buff ;
}
else
{
return null;
}

1301/5000
Hello everyone,
I'm starting to work with node-red in the field of building automation, I would have a need that should be solved with a function node, basically I have a home automation system (system A) with modbus ip connection, from there come the commands that must then be sent to a listening tcpip server (system B). The formatting I receive from the modbus is the same that I should then send to system B, it is a single holding register which varies its value.
Considering that I have to poll (100 ms) to have the calls updated from system A, if there are no variations to system B the same data is sent, but I should apply a filter or something that only passes the variations coming from system A.
Below is the function I am using with the problem that if there are no changes, it sends the same data cyclically.
Basically what I should get is that the data (modbus register) that passes through the function node must pass only on variation and avoid the repeated sending of the same value.
Thank you very much.

Node function:

var buff = global.get;
if (msg.payload! = buff)
{
buff = {payload: msg.payload};
return buff;
}
else
{
return null;
}

Sounds like you need to use the RBE node. It only allows a msg to pass if it has changed.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.