Functies: IF, Math, Range, Filter, Javascript
De knooppunten van de categorie Functions in de Flow: vergelijkingen met IF, berekeningen met Math, schaalkonversies met Range, filtering van waarden met Filter en aangepaste code met het Javascript-knooppunt, met eigenschappen en voorbeelden.
De knooppunten van de categorie Functions werken met waarden: ze vergelijken, berekenen, converteren en filteren. IF, Math, Range en Filter hebben de ingang TRG, die werkt zoals in de booleaanse operatoren: als die is aangesloten, berekent het knooppunt alleen wanneer TRG naar ingeschakeld gaat.
IF: twee waarden vergelijken
Vergelijkt IN A met IN B en schakelt de uitgang OUT in als de voorwaarde waar is.
Voorwaarde | OUT ingeschakeld wanneer |
|---|---|
Greater | A > B |
Less | A < B |
Greater or equal | A ≥ B |
Less or equal | A ≤ B |
Equal | A = B |
Not equal | A ≠ B |

Als beide waarden getallen zijn (ook wanneer ze als tekst zijn geschreven, bijvoorbeeld "21.5"), dan is de vergelijking numeriek; anders vergelijkt IF de teksten exact zoals ze zijn geschreven (inclusief hoofdletters). Zo kun je Equal ook gebruiken om een tekst te controleren, bijvoorbeeld de weekdag Sunday van het Date/Hour-knooppunt.
Voorbeeld — koelvraag: kamertemperatuur op IN A, setpoint op IN B, voorwaarde Greater: de uitgang Cooling request schakelt in wanneer de ruimte warmer is dan het setpoint.
Een IF tussen temperatuur en setpoint schakelt om bij elke tiende graad rond de waarde. Voor een echte thermostaat is hysterese nodig: zie het voorbeeld in Praktische voorbeelden.
Math: berekeningen op meerdere waarden
Voert een bewerking uit op alle ingangen IN (met Add voeg je er meer toe) en zet het resultaat op OUT.
Bewerking | Resultaat |
|---|---|
Max / Min | De hoogste / laagste waarde. |
Average | Het gemiddelde. |
Sum | De som. |
Subtraction | De eerste ingang min alle andere. |
Multiplication | Het product. |
Division | De eerste ingang gedeeld door de andere; delen door nul geeft een ongeldig resultaat (NaN). |
Absolute | De absolute waarde van de net ontvangen waarde. |
Log10 | De logaritme met basis 10 van de net ontvangen waarde (alleen waarden groter dan nul). |

Ingangen die nog geen waarde hebben ontvangen, worden genegeerd: een gemiddelde van drie sensoren, waarvan er één nog niet is aangesloten, is het gemiddelde van de andere twee.
Voorbeeld — gemiddelde temperatuur: drie temperatuursensoren op een Math Average; de uitgang gaat naar een Info-component voor de app of naar een thermostaat als referentietemperatuur.
Andere toepassingen: Sum voor het totale verbruik van meerdere lijnen, Max voor de hoogste temperatuur in meerdere ruimtes, Subtraction voor het verschil tussen aanvoer en retour, Multiplication om een eenheid om te rekenen (bijvoorbeeld kWh × prijs).
Range: een schaal converteren
Converteert een waarde lineair van de ene schaal naar een andere: de waarde X0 aan de ingang wordt Y0 aan de uitgang, X1 wordt Y1, en tussenliggende waarden zijn proportioneel.
Eigenschap / ingang | Betekenis |
|---|---|
X0, X1 | Begin en einde van de ingangsschaal. |
Y0, Y1 | Begin en einde van de uitgangsschaal. |
IN | De te converteren waarde. |
Priority Enabled | Als dit is ingeschakeld, neemt de uitgang de vaste waarde Priority Value aan, ongeacht de ingang. |
Priority Value | De afgedwongen waarde wanneer de prioriteit actief is (standaard 0). |
Direct/Inverse | Als dit is ingeschakeld, voert het knooppunt de omzetting omgekeerd uit: van Y0–Y1 naar X0–X1. |

Het knooppunt begrenst het resultaat niet: een waarde buiten de ingangsschaal geeft een waarde buiten de uitgangsschaal (met X 0–100 en Y 0–255 geeft een ingang van 110 280,5).
Voorbeeld — van percentage naar DMX: een schuifregelaar 0–100 % stuurt een DMX-kanaal 0–255 aan. Met X0 = 0, X1 = 100, Y0 = 0, Y1 = 255 wordt 50 % 127,5. De ingang Force value gekoppeld aan Priority Enabled dwingt de prioriteitswaarde af (bijvoorbeeld 0 om alles uit te schakelen).
Andere toepassingen: een 4–20 mA-sensor gelezen als 0–1000 om te zetten naar 0–50 °C; een omgekeerde schaal (Y0 = 100, Y1 = 0) om de opening van een rolluik om te zetten in sluiting.
Filter: slechts één waarde doorlaten

Laat naar OUT alleen waarden door die gelijk zijn aan de Condition:
Condition = 1: alleen inschakelingen gaan door; uitschakelingen worden verworpen.
Condition = 0: alleen uitschakelingen gaan door; inschakelingen worden verworpen.
Voorbeeld — alleen inschakeling: een bewegingssensor schakelt een licht in, maar het uitschakelen moet van een andere logica komen (bijvoorbeeld een timer). Met een Filter op 1 kan de sensor alleen inschakelen.
Javascript: aangepaste code
Wanneer de standaardknooppunten niet volstaan, voert het Javascript-knooppunt een door jou geschreven script uit. Het heeft één ingang IN en één uitgang OUT; met de knoppen Add voeg je extra ingangen toe (IN 1, IN 2…) en extra uitgangen (OUT 1, OUT 2…).

Het script wordt telkens uitgevoerd wanneer een ingang verandert en heeft toegang tot:
Naam | Inhoud |
|---|---|
| De lijst met huidige ingangwaarden: |
| Het nummer van de ingang die zojuist van waarde is veranderd (0 voor IN, 1 voor IN 1…). |
| De nieuwe waarde van die ingang. |
| Stuur een waarde naar uitgangsnummer n (0 voor OUT, 1 voor OUT 1…). Als het script |
| Schrijft een bericht in het serverlogboek, handig om het script te controleren. |
Waarden komen als tekst binnen: gebruik Number(inputs[0]) voor getallen. De variabelen die in het script worden gedeclareerd blijven in het geheugen tussen uitvoeringen van dezelfde node, zodat je een vorige waarde kunt onthouden.
Voorbeeld — verbruik opmaken: van watt naar tekst in kW met twee decimalen, voor een Info-component.
var w = Number(inputs[0]);
setOutput(0, (w / 1000).toFixed(2) + ' kW');
Voorbeeld — alleen grote veranderingen melden: stuur de temperatuur alleen wanneer deze met minstens een halve graad verandert.
var t = Number(inputs[0]);
if (typeof last === 'undefined' || Math.abs(t - last) >= 0.5) {
last = t;
setOutput(0, t);
}
Voorbeeld — twee uitgangen uit één ingang: van een vermogen, een booleaanse uitgang "overbelasting" en een numerieke uitgang in kW.
var w = Number(inputs[0]);
setOutput(0, w > 3000);
setOutput(1, w / 1000);
Elke uitvoering mag maximaal 250 ms duren en maximaal 8 MB geheugen gebruiken; recursieve functies zijn beperkt tot 64 niveaus. Een script dat de limieten overschrijdt, wordt afgebroken en de fout verschijnt in het serverlogboek. Gebruik geen wachtlussen: voor vertragingen gebruik je de timer-nodes.