Node-Red e Home Assistant – Programmazione settimanale

HassioHelp

Node-Red e Home Assistant – Programmazione settimanale

.

Argomento: Node-Red

Livello: Novizio (Novizio,Esperto, Pro)

Difficoltà: Bassa (Bassa, Media, Alta)

Eccoci qua a un nuovo appuntamento Node-Red, dove metteremo in atto, tramite un flusso di automazione, ciò che ho spiegato alla guida precedente BigTimer.

Detto ciò, se non l’avete ancora letta, vi consiglio di farlo per capirne la programmazione.

Oggi andremo a programmare Il nodo Big-Timer da interfaccia Home Assistant. Una programmazione settimanale di accensione e spegnimenti molto semplice che va anche ad aggirare il problema della programmazione in “override” che avevo spiegato nella guida precedente.

Capita questa programmazione settimanale, potrete adattarla e implementarla a vostro piacimento.

PRIMA DI INIZIARE:

Importare automazioni Node-Red senza capirne il flusso d’automazione non é utile a nessuno. Node-Red ha un metodo tutto suo.

Consiglio di  iniziare dal Corso 1 Node-Red in italianoecco il link al MODULO per richiederlo. E’ gratuito.

Per qualsiasi domanda non esitate a contattarmi.
Telegram Manuel Del Gada

Iscrivetevi ai canali “Node-Red italia” : Gruppo Facebook – Canale Youtube – Gruppo Telegram 

Premessa

  • Questa é una automazione per chi utilizza Node-Red con Home Assistant, perché contiene nodi dedicati (per configurare Node-red come add-on segui la guida di Giovanni C. Lezione 1)

Fase 1

Per prima cosa andiamo a reperire e creare tutto il materiale necessario.

Ci servirà scaricare il nodo “string” e creare un input_boolean di programmazione e quattordici input_text su Home Assistant. Sette per le accensioni di ogni giorno della settimana e Sette per gli spegnimenti.

Per scaricare il nodo “string”, se non é in vostro possesso, ci rechiamo nelle palette e cerchiamo: “node-red-contrib-string”. (In questa guida vi avevo fatto vedere come scaricare nuovi nodi).

In foto il nodo string

Dopodiché ci rechiamo sul configurator.yaml di Home Assistant e configuriamo 14 input_text e un input_boolean che vi elenco qui sotto.

input_text:
lunedi_on:
name: Lunedi on
martedi_on:
name: Martedi on
mercoledi_on:
name: Mercoledi on
giovedi_on:
name: Giovedi on
venerdi_on:
name: Venerdi on
sabato_on:
name: sabato on
domenica_on:
name: Domenica on
lunedi_off:
name: Lunedi off
martedi_off:
name: Martedi off
mercoledi_off:
name: Mercoledi off
giovedi_off:
name: Giovedi off
venerdi_off:
name: Venerdi off
sabato_off:
name: sabato off
domenica_off:
name: Domenica off
input_boolean:
programmazione_in_corso:
name: Programmazione
icon: mdi:account-badge-horizontal

Dopo il controllo configurazione e riavvio, ci rechiamo nella panoramica Home assistant, nel menù “configura interfaccia utente” e andiamo ad inserirli come scheda entità.

Il risultato é questo. In questo caso ho doppiato anche il boolean “programmazione” in modo che sia sempre visibile. Poi se volete creare delle card e modificare a piacimento non é questa la guida adatta.

Fase 2

Ora, come vi avevo promesso nella guida BigTimer, utilizziamo le potenzialità di Node-Red, importando l’intero flow di automazione che ho creato.

Ci rechiamo sul “menu” poi su “import”

Apriamo questo file di testo dove copieremo l’intero codice.

Poi incolliamo il codice nella finestra di importazione, clikkiamo su “new flow” e su “import”.

Una volta importato, clikkate su “deploy” e vi ritroverete il seguente flow intitolato “BigTimer Settimanale” (E’ un flow ripetitivo, per ogni giorno della settimana. Perciò ci concentreremo in una veloce spiegazione evidenziata in rosso)

Avendo importato il mio flow, importate anche la mia configurazione Home Assistant.

Perciò dovrete entrare all’interno di ogni nodo Home Assistant (nodo blu) e selezionare il vostro server, confermare con “done” poi “deploy”.

Noterete che sotto ai nodi apparirà il pallino “verde” con scrtto “connected”.

Spiegazione automazione

Vi ricordavate nella guida BigTimer il problema della programmazione in input override? Se programmiamo nel momento in cui il bigtimer é attivo, manda un impulso in output non solo all’orario impostato, ma anche quando viene programmato. 

Esempio pratico:

Oggi é lunedì e sono le 9:00 di mattina. Da interfaccia Home Assistant programmo “on lunedì”  alle 18:00 (accensione irrigazione) e “off lunedì” alle 18:30. Beh appena programmo manda un impulso e l’irrigazione parte. Cosa che non deve accadere.

Da qui la spiegazione del flusso che vedete nella foto in basso.

Il flusso “1” é la parte che non fa accadere tutto questo. Il flusso “2” é la programmazione di on e off di lunedì. Spiegherò solo quella di “on”. Per gli altri giorni sarà lo stesso.

FLUSSO 1:

Il nodo “link” (1a) é collegato virtualmente al “link” in basso (flusso 2). Quando si attiva entra nella call service (1b) che attiva l’input boolean “programmazione”, dopo 2 secondi (trigger 1c) esegue una nuova call (1d) per disattivare l’input boolean “programmazione”. 

NOTA: Inoltre i 2 secondi del nodo trigger (1c) sono un timeout “extend”. Perciò se gli arriva un altro impulso il timeout di 2 secondi riparte. Solo quando scade il tempo prosegue. 

FLUSSO 2:

Appena da interfaccia home assistant andiamo ad inserire un orario di programmazione, il nodo event (2a) emette il msg.payload di ciò che abbiamo scritto (esempio: “12:00”). Quell’orario attiva il link che va ad attivare il flusso 1. Attende mezzo secondo delay (2b) poi entra nel nodo “string” (2c) che é programmato per aggiungere la stringa on_override nella sinistra del msg.payload in ingresso (perciò farà uscire “12:00 on_override”). In contemporanea il msg.payload 12:00 entra anche nel nodo switch (2d) che, solo in caso che arrivano i msg “stop” e “auto” gli farà fuoriuscire in output. Perciò in questo caso 12:00 si blocca.

Il “12:00 on_override” inceve prosegue grazie al nodo string ed entra nel big timer (2e) che viene programmato. Il big timer perciò si attiverà alle 12:00 facendo fuoriuscire in output il msg.payload “onbig” come programmazione al suo interno.

Stessa cosa sarà per il flusso di programmazione di off .

Il bigtimer si attiverà solo alle 12:00 non nel momento della programmazione grazie al nodo current state (2f) che tutte le volte che gli arriva un impulso si chiede: “Il boolean programmazione é spento?”.  Solo se é spento il flusso prosegue. Questo spiega l’utilizzo del nodo di trigger e delay. Mentre programmate noterete che l’input boolean é attivo perciò l’impulso che fa fuoriuscire il bigtimer durante la programmazione si bloccherà.

Mentre se il flusso passa (nell’ora esatta programmatae) entra nel nodo switch (2g) che svincola i msg in arrivo dal bigtimer. Perciò collegherete una call service di accensione irrigazione nell’output dove esce “onbig” e di spegnimento in “offbig”.

Programmazione

Ora potete programmare il BigTimer da interfaccia Home Assistant.

Ho fatto in modo, grazie al nodo string, di eliminare la stringa “on\off_override” che doveva essere messa davanti all’orario di programmazione.

Perciò vi basterà scrivere l’orario (senza spazi) e dare invio.

Oltre ai comandi di programmazione potete anche stoppare il bigtimer per l’intero giorno (“stop”) o riattivarlo (“auto”)  poi rimettere gli orari…

Attenzione: Se inserite un comando sbagliato , rispetterà la programmazione manuale all’interno del bigtimer.

Un esempio di programmazione corretta qui sotto:

Questa programmazione settimanale può avere molteplici funzioni da adattare e\o implementare con ciò che volete.

Potete gestire un’impianto di irrigazione, che magari controlla un sensore pioggia con un nodo current state da inserire dopo il nodo switch “2g”. In modo che, se ha già piovuto, non si attiverà l’irrigazione.

Oppure potete aprire o chiudere delle tapparelle. Se volete potete anche aprirle alla percentuale esatta tramite un altro input_text che inserirete in interfaccia HA. Questo input_text dovrà essere interrogato sempre con un nodo current state dopo il nodo switch “2g” per eseguire una “call service dinamica”.

Ora riusciamo a sfruttare tutte le potenzialità di BigTimer. Lascio a voi la palla! 🙂 Buon divertimento!

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *