Doua intrari intr-o functie node

Salut. Am doua intrari intr-o functie node in care intra date numerice aleatoare citite dintr-un invertor solar. PV este productia instanta a invertorului iar Grid este consmulul din retea.
Prin functia respectiva doresc sa fac urmatoarele:

var Grid = {payload: msg.payload};

var PV = {payload: msg.payload};

if (PV >1.1 && Grid >-0.4)

{ return 1;}

if (PV <0.7 && Grid <-0.4)

{ return 2; }

if (PV >2.1 && Grid >-0.4)

{ return 3; }

if (PV <1.7 && Grid <-0.4)

{ return 4; }

if (PV >2.8 && Grid >-0.4)

{ return 5; }

if (PV <2.5 && Grid <-0.4)

{ return 6; }

else {

return 0 ;}

datele 1,2 ,3 4,5,6 ar fi trimise spe un node switch care comanda niste intrerupatoare

Din pacate nu am nimic pe output, ceva nu merge bine. Sunt la inceput si nu reusesc sa-i dau de cap.
Poate cineva ma ajuta cu codul din functia node. Multumesc

Cred ca in loc de PV si Grid (in conditiile din if) voiai sa scrii PV.payload si Grid.payload

1 Like

Salut, multumesc ptr raspuns, am facut modificarea, arata acum astfel:

var Grid = {payload: msg.payload};

var PV = {payload: msg.payload};

if (PV.payload >1.1 && Grid.payload >-0.4)

{ return 1;}

else {
   return 0 ;}

Din pacate nu am nici un rezultat la iesirea functiei pe debug4, datele de intrare sunt oke asa cum se vede din imagimea urmatoare- pe debug Grid si debug PV


.

https://nodered.org/docs/user-guide/writing-functions#writing-a-function

Daca citesti Writing a Function o sa vezi ca sunt cateva conditii clare pe care nu le indeplinesti.

The function must always return a msg object. Returning a number or string will result in an error.

Dupa

var Grid = {payload: msg.payload};

var PV = {payload: msg.payload};

Aici n-are sens ce faci din punct de vedere al codului, iei exact aceeasi valoare in fiecare variabila, cred ca trebuie sa tratezi msg.topic === ‘grid’ si msg.topic === ‘pv’ separat sau in documentatie scrie de context.

E destul de complicat, vezi un curs de node.red.

Poti sa incerci si libraria aceasta: