Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

NodeRed: modificare proprietà messaggio e importare codice

Modifichiamo le proprietà di un messaggio per ottenere risultati visivamente più comprensibili e personalizzati con NodeRed.
Modifichiamo le proprietà di un messaggio per ottenere risultati visivamente più comprensibili e personalizzati con NodeRed.
Link copiato negli appunti

Nella lezione precedente abbiamo visualizzato sul cellulare lo stato logico di un I/O definito dalla pressione di un pulsante, tuttavia leggere “1” o “0” non fornisce immediatamente il senso di ciò che accade, dovremmo ricordare che "1" significa "pulsante non premuto" e "0" l'opposto. In questa lezione faremo quindi in modo di ottenere un risultato immediatamente interpretabile.

Azioni da intraprendere

Clicchiamo sul filo di collegamento tra GPIO di uscita ed etichetta di testo e premiamo CANC sulla tastiera per eliminare il collegamento.
Dall’elenco Functions trasciniamo il nodo Switch (che ha il simbolo di una freccia che si divide in due). Questo nodo funziona un po’ come un IF e consente di testare le proprietà del messaggio e dirottarlo in base al valore. Il nodo Switch di default ha un punto di input e un punto di output. Facciamo doppio click sul nodo, dalla finestra che si apre clicchiamo sul pulsantino “add” che si trova più in basso. Questo pulsantino, presente anche su altri nodi, consente di aggiungere altre funzionalità al nodo in funzione del nodo stesso. In questo caso aggiungerà un'uscita. Adesso impostiamo il nodo come da immagine seguente:


Dall'elenco a discesa che affianca Property selezioniamo "msg." e scriviamo payload nello spazio contiguo. Stiamo, in pratica, istruendo NodeRed per controllare il payload del messaggio. Se il valore è uguale a 1 (il confronto di uguaglianza viene effettuato con il doppio segno di uguale come in C), il messaggio deve essere dirottato verso l’output 1, se uguale a 0 deve essere instradato verso l’output 2 (che è quello aggiunto con il pulsante add). Premiamo il pulsante Done per salvare queste modifiche.
Ora aggiungiamo due nodi Change (il loro simbolo è due frecce che si intrecciano). Questo nodo si trova nell’editor proprio sotto il nodo Switch. Il nodo Change permette di modificare le proprietà di un messaggio ovvero cambiare alcuni valori (tra cui il payload) nonché assegnare nuove proprietà se lo desideriamo. Facciamo doppio click sul primo nodo Change, premiamo anche in questo caso il pulsante Add che aggiungerà una seconda regola. Replichiamo quanto vediamo dopo questo testo.


Il nome, come sempre, serve solo a noi per riconoscere il nodo in mezzo agli altri, si rivelerà utile per comprendere a colpo d’occhio il funzionamento del flusso senza aprire ogni singolo nodo. Le regole sono impostate in modo da cambiare il payload del messaggio in “non premuto”. La seconda regola, quella che abbiamo aggiunto, imposta una nuova proprietà del messaggio, che abbiamo chiamato “Color”, adoperando il colore rosso espresso in RGB. Da notare il simboletto az, serve a indicare a NodeRed che la proprietà deve avere un valore espresso in formato stringa. Premiamo Done e facciamo doppio click sul secondo nodo change.


Premiamo quindi Done e colleghiamo i nodi in questo modo:

Ora comprendiamo l’importanza dei nomi assegnati ai nodi, consentono di individuare subito il percorso che segue il messaggio partendo dal GPIO (chiamato "Pulsante") fino ad arrivare all’etichetta di testo sulla destra. Se il nodo Switch legge il valore di payload1” instraderà il messaggio nel primo nodo change, in questo nodo il contenuto del messaggio sarà cambiato in “non premuto” e verrà impostata una proprietà, “color”, la quale avrà un valore in formato stringa RGB corrisponde al colore rosso che utilizzeremo in seguito per fornire un colore all'etichetta. Se, invece, il nodo switch rileva il valore di payload uguale a zero instraderà il messaggio sulla seconda uscita che conduce al secondo nodo change il quale cambierà il payload in “premuto” e definirà una proprietà color uguale al colore verde espresso in RGB.
Intendiamo sfruttare questa nuova proprietà color assegnata al messaggio. L’etichetta di testo, infatti, non ha una proprietà "colore" che possiamo impostare arbitrariamente dalla sua finestra di configurazione. In realtà tutto quello che compare sulla dashboard non è altro che codice HTML, quindi possiamo utilizzare un escamotage. Facciamo doppio click sull'etichetta di testo chiamata “pulsante” e notiamo il campo Value format che consente di visualizzare il contenuto del payload specificandone un formato. Il campo value format, ad esempio, ritorna molto utile nei casi in cui il payload sia un valore decimale. Può essere utilizzato anche in altri modi.
Cambiamone il contenuto in:

<font color={{msg.color}}>{{msg.payload}}</font>

Quanto è riportato tra doppie parentesi graffe fa riferimento ai diversi tipi di variabile presenti nel flusso. Semplicemente queste variabili saranno stampate a video. Nell'esempio abbiamo incluso il valore contenuto nel payload del messaggio (espresso come {{msg.payload}}) all’interno di un tag HTML font, che di fatto ci permette di assegnare un colore a piacere a un testo, e ne abbiamo impostato l’attributo color prendendolo dalla proprietà “color” assegnata arbitrariamente al messaggio nei nodi change! Abbiamo quindi "inventato" una proprietà che il messaggio normalmente non ha e ne abbiamo adoperato il valore per modificare il codice HTML visualizzato da NodeRed per il nodo etichetta di testo. Ciò è esemplificativo dell’alto livello di personalizzazione che possiamo ottenere nella Dashboard anche se i nodi non sono provvisti di alcune proprietà sfruttando, appunto, i tag HTML.
Premiamo il pulsante Deploy, il risultato finale di queste ultime due lezioni è quello che vedete immediatamente nel video a seguire.

Importare ed esportare il flusso

Il sorgente di questa lezione può essere scaricato qui.
I flussi che creiamo possiamo salvarli e importarli. Decomprimiamo il file zip appena scaricato, contiene un file JSON che possiamo aprire con un editor di testo (notepad ad esempio), selezioniamo tutto il contenuto e copiamolo in memoria (CTRL+C). Dal pulsante menù di NodeRed (le tre lineette in alto a destra, di fianco al tasto Deploy), possiamo selezionare Import ⇒ Clipboard. Nella finestra che compare, incolliamo il contenuto e premiamo il pulsante rosso Import. Sulla dashboard verrà ricreato il flusso, funzionante, senza sforzo.

Anticipazioni

Nella prossima lezione impareremo cosa è il protocollo MQTT che, in seguito, ci consentirà di fare le cose appena viste ma da un oggetto che si trova fisicamente lontano dal Raspberry Pi sfruttando il collegamento Wi-Fi o Ethernet.


Ti consigliamo anche