17 settembre 2020

Node-RED: realizzare gratis sistemi IoT altamente integrati e complessi!

Viviamo in un mondo sempre più connesso al punto che ormai anche oggetti della nostra vita quotidiana sono in grado di collegarsi ad Internet andando a costituire quella che viene definita Internet of Things.

Per avere degli esempi basti pensare al fatto che le nostre auto sono in grado di collegarsi ad Internet sia per accedere a servizi (es. Spotify per la musica) oppure per fornire telemetrie ai costruttori. Altro esempio sono gli Home Assistant che abbiamo in casa che sono in grado, oltre a collegarsi ad Internet, di interagire con sensori e oggetti domotici presenti ad esempio per accendere la caldaia oppure per regolare la luce nella nostra stanza.

Da questi esempi si evince che le applicazioni IoT sono dei sistemi altamente integrati e complessi (dipende dal contesto di applicazione). Ciò potrebbe portarci a pensare che se volessimo sviluppare noi una nostra applicazione IoT sarebbe un lavoro per professionsiti del settore e fuori dalla nostra portata.

In realtà ciò non è del tutto vero. Se volessimo dedicarci allo sviluppo di applicazioni IoT a titolo amatoriale oppure per progetti professionali esiste una soluzione Open Source che ci semplificherà notevolmente il lavoro: Node-RED.

Si tratta di un software di sviluppo/integrazione basato su NodeJS e JavaScript che permette di connettere in modo semplice e veloce dispositivi IoT, API e servizi online mettendo a disposizione un editor visual via web browser e sfruttando il paradigma basato su flussi.

All'atto pratico un'applicazione sviluppata con Node-RED consiste in una serie di blocchi che utilizzano una o più porte (sia in ingresso che in uscita) per poter essere collegati tra loro tramite delle connessioni e che andranno a costituire il flusso logico della nostra applicazione. Quindi a differenza del caso in cui si usa un linguaggio di programmazione come Java o Python l'applicazione non è più una sequenza di istruzioni ma è un insieme di flussi di dati che vengono scambiati tra i blocchi in maniera completamente asincrona.

Facciamo un esempio molto semplice per comprendere meglio la logica dietro Node-RED.

Supponiamo di avere dei sensori in grado di fornire delle telemetrie in tempo reale; potrebbero essere ad esempio dei sensori domotici di temperatura presenti nelle varie stanze di una casa oppure in vari punti di una città. Immaginiamo ora di voler, allo stesso tempo, salvare i dati inviati dai sensori su un database e di volerli inviare via email ad un indirizzo specifico.

Sfruttando Node-RED realizzare questa applicazione diventa molto semplice in quanto dobbiamo solo selezionare i nodi di nostro interesse, collegarli opportunamente tra loro e configurarli.

I nodi messi a disposizione sono veramente innumerevoli e se ce ne servisse uno non presente è disponibile un nodo "generale" in cui possiamo scrivere noi la logica di funzionamento tramite JavaScript. In alternativa possiamo sviluppare, come fanno tanti contributori della community, noi un nuovo nodo e metterlo poi a disposizione di tutti. Inoltre tenete presente che tramite Node-RED è possibile anche creare delle dashboard e gui, sempre tramite dei nodi. Quindi l'unico limite alle applicazioni che è possibile sviluppare è solo la nostra fantasia.

Grazie alla sua semplicità Node-RED può rendersi molto utile anche in fase di prototipazione di un progetto per individuare da subito funzionalità e potenzialità.

Le applicazioni sviluppate grazie a Node-RED possono essere eseguite, con lo stesso comportamento, non solo su un computer (desktop, server o Raspberry) ma anche in cloud dal momento che tutto poggia sul framework NodeJS.

Se volete vedere alcuni esempi di applicazioni sviluppate con Node-RED da usare anche come tutorial vi consiglio di visitare questo sito oltre quello ufficiale.

Se anche voi volete realizzare, per passione oppure per lavoro, delle applicazioni IoT (ma non solo) in tempi brevi ed in maniera intuitiva allora Node-RED fa al caso vostro.

Se ti è piaciuto l'articolo, segui il feed per tenerti sempre aggiornato sui nuovi contenuti del blog!

0 comments:

Posta un commento