Un impianto di domotica deve avere una unità centrale capace di far colloquiare i vari dispositivi hardware IOT, i vari software locali e le API dei servizi online più diffusi. Questa unità è un PLC “esteso”. Una delle piattaforme più interessanti e flessibili che abbia conosciuto è Node-RED (link al sito ufficiale Node-RED). Abbiamo scritto per voi un semplice tutorial in Italiano su come installare ed usare Node-RED.
Node-RED, dove e come installarlo ?
Un possibile scenario reale potrebbe essere dotare il nostro impianto domotico di un Raspberry (io l’ho comprato su amazon ) che faccia da gateway per tutti gli altri dispositivi IOT. Installare Node-RED su questo dispositivo, quindi, è una soluzione ideale.
Tuttavia, se siete curiosi di provare Node-RED, oppure volete creare un ambiente di sviluppo, possiamo installarlo su Sito web di Docker.
Installiamo Node-RED con Docker
Far “girare” Node-RED su Docker è abbastanza semplice, anche se è necessario fare chiarezza sulle immagini disponibili:
latest
– basata sulla immagine Node.JS v4slim
– basata su Alpine linuxrpi
– basata su una immagine compatibile con Raspberry PI
Se state pensando di provare senza troppe pretese Node-RED, potete provare con la slim, tuttavia essendo una versione “castrata”, vengono a meno tuttele dipendenze per compilare moduli aggiuntivi. Consiglio, se siete interessati a portare il software in futuro su Raspberry, la latest con salvataggio dei dati su host locale.
Avviamo il comando run per permettere a Docker di scaricare l’immagine e avviare il container mappando la porta locale 1880 con quella interna al container 1880, permettendo al container di accedere alla directory locale nodered-data in cui saranno salvati i dati. Il container si chiamerá noderedvixrit.
docker run -it -p 1880:1880 -v ~/nodered-data:/data --name noderedvixrit nodered/node-red-docker
Sul terminale vedremo:
Accediamo all’interfaccia web di programmazione di Node-RED
A questo punto siamo pronti per usare Node-RED sulla porta 1880. Apriamo il browser e digitiamo l’indirizzo:
http://127.0.0.1:1880/
Per fermare il container o farlo ripartire, potete usare i comandi:
docker stop noderedvixrit
docker start noderedvixrit
Per verificare invece se il container é correttamente avviato:
docker ps
Se il container é avviato, dovrebbe comparire nella lista:
Iniziamo a programmare il nostro flow in Node-RED
Node-RED si programma concatenando degli oggetti, chiamati Node, ognuno dei quali ha un compito differente. I nodi, per poter colloquiare tra loro, utilizzano un datagram, un pacchetto dati prestabilito, chiamato message, il cui contenuto puó variare a seconda delle esigenze (stringhe, numeri, booleani e via discorrendo).
Praticamente i nodi si scambiano messaggi, ognuno di loro applica un logica stabilita al messaggio dando vita in output ad un nuovo messaggio, rielaborato.
I messaggi hanno queste caratteristiche:
- Topic
- Payload
Il Topic identifica l’ambito, possiamo impostarlo usando una stringa e possiamo dargli qualsiasi valore noi vogliamo. Il Payload é il valore dell’informazione che noi vogliamo trasmettere.
Potete iniziare con un semplicissimo esempio: concatenate due nodi nodo di tipo “inject” ad altri due nodi, uno di tipo “function” e a catena uno di tipo “debug”. Lo schema é il seguente:
I due nodi inject servono a iniettare un messaggio nel momento in cui si preme il pulsante alla sinistra del nodo. Configuriamo, per capire il concetto di topic, i due nodi in modo che inviino informazioni di topics differenti, quindi:
- inject 1: topic altroTopic
- inject 2: topic testTopic
Per entrambe lasciamo il payload impostato su timestamp, praticamente facciamo generare un messaggio la cui informazione é il timestamp di quando viene generato.
Passiamo a myFunction: impostiamo all’interno del codice della funzione questo script:
if( msg.topic == 'testTopic'){
msg.payload = 'VIXR.IT-'+msg.payload;
}
return msg;
Come é facile intuire, la funzione aggiunge la stringa VIXR.IT-
al timestamp se il topic di provenienza é testTopic
.
Concludiamo aggiungendo il nodo debug e premiamo il tasto “Deploy” posizionato in alto a destra. Il comando deploy invia a regime il flow, dopo averne analizzato la sintassi. Se tutto é andato liscio, nella finestra di debug saranno riportate le informazioni elaborate dal nodo function ad ogni interazione con i nodi di inject:
Come utilizzo Node-RED per la domotica ?
I metodi per fare domotica con Node-RED sono pressoché infiniti, prima di farvi un esempio pratico, mi é necessario farvi una panoramica su MQTT e sul firmware per i dispositivi Wemos (leggi articolo dedicato) altrimenti richierei solo di creare confusione. Fatevi le ossa su Node-RED e continuate a seguirmi, svilupperemo insieme un progetto di domotica basato su ESP8266, MQTT e Node-RED
Ciao, mi chiamo Alessandro Lanni. Sono un professionista nel settore IT, ho iniziato la carriera da sviluppatore nel 2002. Mi appassiona l’elettronica amo condividere il know-how: “Cercare risposte e’ meglio che fare domande”
Una risposta.
Concetti basilari molto chiari e concisi, a differenza del testo (confusionario) in italiano “Node-RED” di Pier Calderan scritto forse per chi già conosce l’argomento.