Nuova rubrica! 😀 , che ne dite di sperimentare con me, il fanstastico strumento di programmazione a flussi chiamato Node-Red?
L’idea è questa, impariamo un po’ alla volta con la pratica. Un esperimento dopo l’altro scopriamo come programmare, senza scrivere codice! Ok, ok , per far le cose Top in futuro ti leggerai un po’ di JavaScript, anche se non è obbligatorio.
L’idea della domotica come fulcro degli esperimenti, è che si presta bene per giocare con Node-Red, la sua Dashboard, Raspberry Pi ed Arduino.
Nella precedente rubrica, abbiamo visto come installare Node-Red, quindi parti da li. Installalo su Raspberry Pi, attivalo come servizio, imposta se necessario le protezione ed addentriamoci nel primo progetto, la Dashboard.
La dashboard su Raspberry Pi
Cos’e una dashboard? Non è altro che una schermata con pulsanti, grafici, avvisi per interagire con i nostri dispositivi IoT.
Immagina un grafico con l’andamento della temperatura, un pulsante per attivare gli irrigatori, uno switch per abilitare l’antifurto o un messaggio d’allerta.
Il tutto in una gradevole interfaccia web responsive.
Installando node-red-dashboard dal menù Manage palette, appariranno sulla sinistra i seguenti nodi.
- Button: un pulsante personalizzabile con le icone Material Design (es. ‘check’, ‘close’) o le famose Font Awesome icon (es. ‘fa-fire’) e Weather icon.
- DropDown: il classico menù a discesa con varie opzioni.
- Switch: un interruttore con icona e tooltips.
- Slider: la barra di scorrimento, per selezionare da un range di numeri.
- Numeric: permette la scelta di un numero, grazie al click sulle frecce.
- Text input: indovina? Una casella di testo che invierà il tuo messaggio nel flusso.
- Date Picker: un comodo selettore per la data
- Colour Picker: una casellina, col classico selettore di colore, in grado di inviare il valore in vari formati.
- Form: un comodo form, per inviare i dati quali email, nome, password, e molto altro.
- Text: una casella di testo fissa, utile per informare.
- Gauge: quello che uso di più, il grafico in tempo reale stile contachilometri.
- Chart: invece questo rappresenta i dati raccolti in un determinato periodo di tempo.
- Audio Out: Certamente! Puoi far leggere al tuo smartphone o altro, i messaggi TTS (TextToSpeech). Fantastico…
- Notification: una semplice finestrella d’avviso, personalizzabile con colori e scelte.
- Ui Control: permette il controllo dinamico della dashboard, passare ai vari tab, nascondere schermate ed altro ancora.
- Template: Il widget può contenere qualsiasi html valido e direttive Angular/Angular Material, quindi anche il tag <style> per i CSS.
Pulsante spegnimento Raspberry Pi
Quante volte di sei chiesto come spegnere il Raspberry Pi, senza staccargli brutamente la corrente o collegargli per forza un monitor?
Nel nostro primissimo esperimento, vediamo come ottenere un interfaccia web responsive, con un pulsante per spegnere il Raspberry Pi.
Nella sezione Dashboard in alto a destra, voce Tab & Links , premi su +tab per creare un nuovo tab, su edit rinominalo in pulsantiera, se vuoi scegli un icona semplicemente scrivendo il nome dell’icona Material Design , Font Awesone o Weather icon.
Creiamo un gruppo col pulsantino +group affianco al nome del tab. Ricordati che sfrutta un sistema a griglia quando lo imposterai.
Nel Tab Site, personalizziamo la data e mettiamo la formattazione del nostro paese, in italia sarà DD/MM/YYYY. Di interessante per il futuro è ricordarsi che qui possiamo cambiare le dimensioni delle singole celle. Le celle sono i posti dove metterai ogni elemento della dashboard, spiegandogli quante celle dovrà coprire. E’ più facile provarlo, quindi non perdere tempo, trascina il nodo button dalla colonna di sinistra, verso il centro del piano di lavoro.
Personalizziamo il pulsante cliccandoci due volte sopra.
Come gruppo, selezionamo quello appena creato, cosi da dargli la posizione nella griglia responsive.
Impostiamo la dimensione in celle se necessario, ma auto andrà più che bene.
Scegliamo un icona, tra quelle descritte precedentemente, in questo caso power-off.
Proseguiamo con il Tooltip, che non è altro che un suggerimento che comparirà posizionandoci sopra il mouse.
Diamogli un bel colore allarmante, bisogna fare attenzione a non spegnere il Raspberry Pi per errore.
E concludiamo con un nome per non confonderlo tra gli altri.
Le informazioni complete di button dicono:
Aggiunge un pulsante all’interfaccia utente.
Facendo clic sul pulsante genera un messaggio con msg.payload impostato sul campo Payload. Se non viene specificato alcun payload, viene utilizzato l’ID nodo.
Size: Il valore predefinito è 3 per 1.
L’icona può essere definita come un’icona di Material Design (ad es. “Check”, “close”) o un’icona di Font Awesome (ad es. “Fa-fire”) o un’icona Weather. Puoi utilizzare il set completo di icone dei materiali di Google se aggiungi “mi-” al nome dell’icona. per esempio. ‘Mi-videogame_asset’.
È possibile impostare i colori del testo e dello sfondo. Possono anche essere impostati da una proprietà message impostando il campo sul nome della proprietà, ad esempio {{msg.background}}.
L’etichetta può anche essere impostata da una proprietà del messaggio, impostando il campo sul nome della proprietà, ad esempio {{msg.topic}}.
Se impostato per passare attraverso un input, un messaggio in arrivo sull’ingresso agirà come se si premesse il pulsante. Il payload di output sarà come definito nella configurazione del nodo.
Il campo Topic può essere utilizzato per impostare la proprietà msg.topic che viene emessa.
L’impostazione di msg.enabled su false disabilita il pulsante.
Diamo un occhiata premendo Deploy e poi la piccola freccia che aprirà http:<nome rpi>:18080/ui
Abbiamo il nostro pulsante pronto?
Provalo da smartphone, smart Tv e Pc, si adatta? Perfetto diamogli qualcosa da fare alla svelta!
Eseguiamo i comandi da shell
Torniamo nel pannello di gestione, e da qui potenzialmente puoi creare ogni cosa che ti venga in mente, grazie ad un pulsante. Azionare GPIO, aprire le tapparelle, inviare un messaggio MQTT, un avviso telegram, detonare del C4, ma per ora limitiamoci alla cosa più potente, i comandi da shell.
Il nodo exec esegue un comando di sistema e restituisce il suo output.
Il nodo può essere configurato per attendere fino al completamento del comando o per inviare il proprio output quando il comando lo genera.
Il comando eseguito può essere configurato nel nodo o fornito dal messaggio ricevuto.
Hai già notato le tre uscite? Che spettacolo, in automatico suddivide il flusso in base a Standard Output, Standard Error e Return code. In parole semplici, puoi catturare gli errori ed i codici di uscita del programma, per agire automaticamente in caso di problemi.
Il nodo exec avrà ovviamente il comando da eseguire. Potrà appendere un messaggio msg.payload nel flusso, ma non ci serve perché il Raspberry Pi si sta spegnendo. Potremmo aspettare una risposta dal comando e semplicemente proseguire col flusso. Diamogli un nome riconoscibile.
Se ci pensi, tenendo sempre in mente, che è un flusso, ed il messaggio principale è msg.payload , intuirai che il comando potrebbe comporsi nel flusso, raccogliendo “pezzi” dai vari nodi, per finire inviando l’output del comando, al prossimo payload in viaggio on the flow.
Premiamo Deploy, torniamo alla Dashboard e premi il pulsante!
Semplicissimo, quanto codice hai scritto? Zero? E se lo avessi fatto con Python, C, Java, Go, Bash, Assembler?
Compiti per casa
Mai fermarsi a ricopiare il lavoro degli altri, prova a toccare tutto come un bambino, sbaglierai, non capirai, ma scoprirai.
La gioia della scoperta è un dono che purtoppo ci scordiamo di avere.
Il primo compito per casa sarà:
Creare un Tabs, con un pulsante che se premuto, visualizzerà il numero 20 in un nodo gauge, ottenendo esattamente questa pagina, colori compresi.