Node-RED

Node-RED (NR) è un ambiente di sviluppo visuale basato sulla gestione del flusso dati (Flow-Based Programming).

Partiamo dal concetto di flusso dati. La programmazione si concentra sul dato che viene processato da elementi (blocchi o nodi) dei quali non è necessariamente nota l’impetrazione. È nota invece l’operazione che verrà applicata. Un poco come un segnale audio che entra in un equalizzatore e poi in un amplificatore. Di entrambi gli apparati non si conosce la reale elettronica si sa però che l’equalizzatore esalta o limita determinate frequenze, mentre l’amplificatore ‘rinforza’ il segnale in modo da poter essere riprodotto in un altoparlante.

I nodi sono detti generalmente black-block, ad indicare che il contenuto del blocco non è noto, ma la funzioneimplementata si.
Lo sviluppo visuale si avvale di una interfaccia grafica che consente di scegliere i blocchi necessari ed interconnetterli. Le interconnessioni rappresentano e ‘trasportano’ il flusso dei dati.
Un esempio di programmazione visuale, nel mondo della radio, è GNU Radio dove il flusso è il segnale elettrico che viene manipolato da blocchi quali, ad esempio, mixer, filtri o altro. Il tutto è gestito graficamente consentendo di vedere come il segnale evolve.

In Node-RED il flusso è una generica informazione generata ad hoc o che proviene da una risorsa esterna, ad esempio un sensore, una porta seriale o un elemento di una pagina web. Il flusso dati è manipolato da opportuni nodi, di fatto delle funzioni predefinite, per produrre una azione finale, come ad esempio l’apertura di una valvola quando un sensore di livello raggiunge un determinato livello.

Node‑RED, rilasciato con licenza Common Public License (CPL), quindi ad uso libero, è nato nel 2013 in casa IBM come un sotto progetto di altre attività, diventando velocemente uno strumento più generale facilmente utilizzabile in varie applicazioni. Un ambito dove è molto utilizzato è nel campo dell’IoT. Node‑RED è sviluppato usando Node.js[1], un ambiente run-time per l’esecuzione di codice JavaScript.

NR è supportato da varie piattaforme (Windows, Linux con processori Intel, ARM ed altri) e ed è facilmente installabile anche su Raspberry Pi, quindi, non necessita di particolari risorse.

L’ambiente si presenta con una interfaccia WEB. Dall’interfaccia si governa lo sviluppo, scegliendo i vari nodi dedicati alla gestione del flusso dati. I nodi (funzionalità) principali sono presenti alla prima installazione ed altri possono esser facile aggiunti o sviluppati. NR mette a disposizione una interfaccia web, un cruscotto o dashboard, per visualizzare risultati. Le operazioni di sviluppo si attuano con funzioni di drag & drop dei nodi e delle loro interconnessioni. In figura un semplice esempio per acquisire dati elaborarli, riportarli sulla dashboard in forma grafica e salvarli su un database.

I nodi disponibili sono riportati a sinistra. Nella parte centrale la logica di implementazione e l’interconnessione dei nodi per la funzionalità desiderata. I dati sono acquisiti con un protocollo MQTT[2] elaborati per essere rappresentati sulla dashboard e salvati nel database. Sulla destra sono riportate informazioni prodotte dalla procedura e utili per il debug.

In figura la dashboard generata.

Si tratta di un semplice esempio, ma gli impeghi sono numerosi, ad esempio in ambito di un controllo di processo, i sensori possono essere acquisiti, elaborati i dati ricevuti per controllare una macchina.
Pensiamo ad esempio ad dun controllo di un rotore di antenna, implementato su un Raspberry Pi, per controllare il puntamento dell’antenna e seguire un satellite.

Categoria: 

Tags: 

Mi piace: 

0
No votes yet