Domotica – Primi passi con Node-RED – Guida in italiano all’installazione

Guida a Node-RED in Italiano

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 v4
  • slim – basata su Alpine linux
  • rpi – 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:

Comando docker run nodered

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/

node red su docker, come appare l'interfaccia su 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:

invio comando docker ps

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:

Flow di esempio, per iniziare con NodeRed

Flow di esempio, per iniziare con NodeRed

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:

finstra di debug di node red



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

Una risposta.

  1. Alessandro ha detto:

    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.

Lascia un commento

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