Esempi pratici di flow
Tre logiche Flow complete spiegate passo per passo: luce di cortesia notturna con sensore di movimento, termostato con isteresi in Javascript e allarme porta aperta con conteggio degli allarmi.
Tre logiche complete che combinano i nodi delle altre guide. Le trovi pronte nel progetto di esempio con i nomi che iniziano per Example. Per usarle nel tuo impianto sostituisci i nodi Dummy con i tuoi componenti (Componenti e Dummy).
Luce di cortesia notturna
Obiettivo: di notte il movimento in giardino accende la luce per due minuti; di giorno il movimento non fa nulla.

Nodo | Tipo | Configurazione | Ruolo |
|---|---|---|---|
Sun | Coordinates | Acceso di giorno. | |
Night | — | Acceso di notte. | |
Garden motion | Switch (sensore) | — | Il sensore di movimento. |
Night AND motion | Due ingressi | Acceso solo con movimento di notte. | |
Courtesy timer | Delay 120, Mode Pulse | Tiene accesa la luce 2 minuti dopo l'ultimo movimento. | |
Garden light | Switch (luce) | — | La luce del giardino. |
Come funziona: di giorno Night è spento, quindi l'AND resta spento qualunque cosa faccia il sensore. Di notte ogni movimento accende l'AND; lo Stairs Light in modo Pulse accende la luce e riparte da 120 secondi a ogni nuovo movimento. Quando non c'è più movimento la luce si spegne da sola.
Varianti: aggiungi un terzo ingresso all'AND con una variabile Cortesia attiva per disattivare la funzione dall'app; usa un Range per accendere un dimmer al 30 % invece che al 100 %.
Termostato con isteresi
Obiettivo: comandare la valvola del riscaldamento con un'isteresi di ±0,5 °C attorno al setpoint, per evitare che la valvola si apra e chiuda continuamente.

Il nodo Javascript Hysteresis ha due ingressi (temperatura su IN, setpoint su IN 1) e questo script:
var t = Number(inputs[0]), sp = Number(inputs[1]);
if (t <= sp - 0.5) setOutput(0, true);
if (t >= sp + 0.5) setOutput(0, false);
Come funziona: con setpoint 21 °C la valvola si apre quando la temperatura scende a 20,5 °C e si chiude quando sale a 21,5 °C. Tra 20,5 e 21,5 lo script non chiama setOutput, quindi la valvola resta com'era: è questa la "memoria" che fa l'isteresi. Cambiando il setpoint dall'app la logica si adegua subito.
Varianti: cambia 0.5 con l'ampiezza che vuoi; aggiungi un ingresso Finestra aperta e, se è acceso, chiama setOutput(0, false) prima di tutto il resto.
Allarme porta aperta con conteggio
Obiettivo: se la porta d'ingresso resta aperta più di un minuto scatta un allarme; ogni allarme viene contato.

Nodo | Tipo | Configurazione | Ruolo |
|---|---|---|---|
Front door open | Switch (contatto) | — | Il contatto della porta. |
1 minute | Delay Up 60, Delay Down 0 | Acceso solo dopo 60 secondi di porta aperta; si spegne subito alla chiusura. | |
Door alarm | Switch | — | L'allarme (sirena, notifica, spia nell'app). |
New alarm | Cycle Up | Un impulso per ogni nuovo allarme. | |
Count enabled | Switch | Acceso | Abilita il conteggio. |
Alarms today | Up, Preset 0 | Conta gli allarmi. | |
Alarm count | Number | — | Il numero di allarmi, da mostrare nell'app. |
Come funziona: se la porta si richiude prima di un minuto il Timer annulla il ritardo e non succede nulla. Se resta aperta, dopo 60 secondi l'uscita del Timer accende l'allarme e, attraverso il Trigger, aggiunge 1 al contatore. Quando la porta si chiude l'allarme si spegne subito (Delay Down 0).
Varianti: collega all'ingresso Reset del Counter un impulso a mezzanotte (nodo Date/Hour con IF sull'ora) per avere davvero gli "allarmi di oggi"; metti un Repeat Command sull'allarme per ripetere la notifica.