La rubrica sta giungendo al termine, ma è importante sperimentare Node-red. Node-Red è un è un potente strumento per la creazione di applicazioni Internet of Things (IoT) con l’obiettivo di semplificare la connessione dei blocchi di codice per eseguire le attività. E’ uno strumento serio e permette anche a chi non sa programmare, di creare applicazioni e dashboard semplicemente trascinando i blocchi e compilando qualche campo.
Noder-Red è bastato su Node.js e conoscere le basi di JavaScript aiuta nell’uso di blocchi più complessi, chiamati “function” , nei quali puoi eseguire ogni genere di azione si renda necessaria, nel caso non esistesse già un blocco utile allo scopo.
Bentornato alla tredicesima puntata della rubrica “Raspberry Pi, le basi“. Che ne dici di creare una dashboard senza saper programmare?
Nelle puntate precedenti
- Raspberry Pi, le basi: Cos’è e cosa non è. #1
- Raspberry Pi, le basi: Sistemi operativi ed installazione. #2
- Raspberry Pi, le basi: post installazione. #3
- Raspberry Pi, le basi: i software. #4
- Raspberry Pi, le basi: Comandi e file utili #5
- Raspberry Pi, le basi: accesso remoto al Desktop. #6
- Raspberry Pi, le basi: sicurezza informatica contro gli hacker. #7
- Raspberry Pi, le basi: le porte GPIO. #8
- Raspberry Pi, le basi: pulsanti e led. #9
- Raspberry Pi, le basi: Robot e Smartphone, con BlueDot. #10
- Raspberry Pi, le basi: DHT11 umidità e temperatura. #11
- Raspberry Pi, le basi: Allarme di casa con PIR e IFTTT #12
Come usare Node-red
Partiamo dalla logica del software, si parla di flussi e nodi. Semplicemente, un messaggio, msg.payload di norma, inizia il suo viaggio all’interno di un flusso, magari dal nodo “inject” . Prosegue la sua corsa fino ad incontrare nodi di input, ad esempio un messaggio su Twitter, magari venendo manipolati da nodi come “function” e finendo per generare messaggi nei nodi di output. Spiegato cosi è molto basilare, ma in realtà è molto potente ed usato da società di grosso calibro per i loro progetti.
Installare Node-red su Raspberry Pi
Node-red è uno strumento installabile in molti modi, nella pagine get started troviamo:
- Docker
- On a device
- Raspberry Pi
- BeagleBone Black
- Interacting with Arduino
- Android
- In the cloud
- IBM Cloud
- SenseTecnic FRED
- Amazon Web Services
- Microsoft Azure
A me piace Raspberry Pi, visto che lo voglio usare per Dashboard e comandi per sensori e pulsanti, quindi in questa guida lo userò come riferimento.
Personalmente lo trovate nella lista dei software installabili, nella versione desktop di Raspbian, ma consiglio di usare questo semplice comando per ottenere un installazione perfetta ed aggiornata.
1 |
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) |
Semplicissimo non trovi?
Completiamo l’installazione abilitando il servizio, se non fosse già stato fatto
1 |
sudo systemctl enable nodered.service |
Lo script si preoccuperà di verificare i requisiti, installare o aggiornare tutti i pacchetti necessari.
Apri il browser da qualsiasi pc o smartphone per iniziare a programmare. L’indirizzo è http://<hostname>:1880 dove al posto di hostname metterai l’ip locale o pubblico del Raspberry Pi.
Nel caso fosse accessibile dall’esterno, crea gli utenti limitati ed attiva il sistema di autenticazione, seguendo la guida Securing Node-Red.
L’interfaccia di Node-Red
Nodi
Il fulcro dell’interfaccia di progettazione Node-Red sono i nodi nella colonna di sinistra, sono divisi per categorie e colori e se ne possono aggiungere installandoli da una vasta libreria.
Proviamo ad aggiungerne uno fondamentale per iniziare, la Dashboard. Apriamo il menù Manage Palette, Install, cerchiamo la funzione che ci interessa, in questo caso vogliamo una “dashboard” . node-red-dashboard è quella ufficiale, mentre la buona norma dice di aggiungere node-red-contrib-<nome> per quelli creati da svuluppatori esterni.
Una volta premuto install, compariranno i nodi per la dashboard nella prima colonna. Mentre premendo il quadrato con la freccia vicino install, si aprirà la pagina di documentazione di node-red-dashboard.
Flussi
Sopra la schermata centrale noterai la voce Flow 1, li ci saranno tutti i flussi, che potrai scegliere di collegare insieme successivamente cosi da generare un programma ordinato e gestibile.
Premendo il + creerai nuovi flussi, mentre con i nodi Link in e Link Out invierai e riceverai messaggi tramite i vari flussi.
Un esempio che avevo provato era :
- Flusso 1 : riceve messaggi MQTT dai vari sensori Arduino, WeMos, Raspberry Pi
- Flusso 2: elabora i dati e li salva in un database
- Flusso 3: reagisce in base a certi messaggi
Ricorda sempre che i messaggi viaggiano in un flusso.
Informazioni sui nodi
Proseguendo sulla destra, troveremo le informazioni del singolo nodo selezionato, la descrizione e l’aiuto su come usarlo, nel caso dei nodi con elementi grafici, troveremo anche la loro posizione nell’interfaccia utente.
L’interfaccia utente, dove posizionare pulsante, grafici, pezzi di siti, codici html e javascript la potrai trovare all’indirizzo http://<ip raspberry pi>:1880/ui una volta premuto il pulsantone “Deploy“.
Debug
I messaggi di debug, li troveremo cliccando il pulsante a forma di insetto. E’ una cosa utilissima.
Funziona cosi, in qualsiasi punto del nostro flusso, potremmo voler visualizzare i messaggi in transito, ma senza dover creare un interfaccia grafica a parte. Basterà collegare un estermità dell’ output di un node ad un node debug per visualizzarne i messaggi.
Cliccando due volte nel nodo debug troveremo la possibilità di visualizzare i messaggi anche nella shell, mentre del menu debug si potranno filtrare i vari nodi di debug per flusso o nome.
Un utile funzione è espandere il messaggio, cosi da verificare, ad esempio nel caso di un Json corposo, tutti i valori ricevuti.
Dashboard Nod-red
Il pulsante dashboard in alto a destra, permetterà di scegliere lo stile grafico, dai colori alla versione Node-red o Angular .
Potremmo creare gruppi, in cui inserire i vari plugin grafici, adattandone le dimensioni in modo responsive, senza scrivere un solo codice funzionerà alla perfezione su smartphone e TV 8K . Non male
Variabili Context
Dopo aver fatto pratica, noterai il bisogno di salvarti dei valori da gestire successivamente e magari in altri cicli nelle funzione. Per questo esiste context con il suo relativo pulsante.
Un nodo può archiviare dati nel suo oggetto di contesto. Per ulteriori informazioni sul contesto, leggi la guida Lavorare con il contesto .
Esistono tre ambiti di contesto disponibili per un nodo:
- Nodo: visibile solo al nodo che imposta il valore
- Flusso: visibile a tutti i nodi sullo stesso flusso (o scheda nell’editor)
- Globale: visibile a tutti i nodi
Maggiori dettagli li troverai nella documentazione “lavorare con context” .
Importare / Exportare Nodi Node-red
Una cosa che troverai spesso nei forum node-red saranno delle caselle di testo, piene di codici strani, ed ovviamente nessuno ti dirà che farne! Te lo spiego io, copiali, Apri il menù in alto destra, scegli import, clipboard ed incolla.
Magicamente compariranno tutti i nodi, pronti e configurati da posizionare nel tuo flusso.
Con la stessa logica potrai esportare i tuoi dati dove vorrai e condividere nei forum di assistenza in caso cercassi aiuto.
Con il menù library potrai crearti le tue librerie riutilizzabili ogni volta che vorrai, con estrema semplicità, magari salvandoli nel menu subflows.
Non ci hai capito niente e vuoi vedere dei flussi pronti per farti un idea?
Visita la raccolta pubblica di nodi e flussi e scegli il flusso che preferisci, premi copy, vai nel menù import, clipboard ed incolla. Inizia con una Dashboard per il Raspberry Pi.
Materiale utilizzato
https://youtu.be/BZ9O2hu3PgE
Ci vediamo alla prossima puntata di RaspberryPi, le basi !
Seguici per non perdere le prossime novità
E tu che programma vuoi iniziare a creare? Scrivicelo nei commenti!