Bentornato nel secondo esperimento della rubrica “Raspberry Pi, la domotica con Node-Red” . Hai fatto i compiti per casa del precedente articolo?
Per una casa domotica con tanti dispositivi in rete, ad esempio i Wemon D1 mini sparsi per il giardino e stanze varie, si potrebbe voler tener monitorata la loro connettività. Un modo molto banale è il comando ping. Tramite il comando ping, si invia un pacchetto via rete ad un dispositivo, che risponderà segnalando di essere connesso.
Il Nodo ping
In node red installiamo, dal menu, manage palette, il nodo node-red-node-ping .
Le informazioni del nodo ping dicono
Esegue il ping di una macchina e restituisce il tempo di risposta in ms come msg.payload.
Restituisce falso se non viene ricevuta alcuna risposta entro 5 secondi o se l’host non è risolvibile.
Il ping predefinito è ogni 20 secondi ma può essere configurato.
msg.topic contiene l’IP host di destinazione.
Nota: se si esegue Ubuntu Snap è necessario avviare manualmente l’interfaccia di osservazione della rete. ‘snap connect node-red: network-observe’
E’ un buon sistema perché in automatico ci restituisce False, ma un po’ un problema perché non restituisce True.
Vediamo come impostare il nodo ping
Target sarà l’ip pubblico o privato, o il nome del dispositivo da testare.
Come consigliato dalla fondazione Raspberry Pi, si può usare il nome multicast dns composta da nome del dispostivo.local , ovviamente deve essere supportato dal target.
La mia via consigliata è entrare nel pannello del router, di solito http://192.168.1.1 cercare la sezione dhcp e prenotare gli ip statici per ogni scheda.
Se colleghiamo il nostro fidato nodo debug in successione, vedremo il risultato numerico del tempo di risposta.
Il Nodo Convert
Personalmente trovo più logico gestire un True ed un False. Ma come fare? Ci serve un nodo di conversione.
Il nodo convert, indovina? Converte i valori in vari formati, senza complicarsi la vita con le funzioni.
Per magia, avremo come risultato True in caso di risposta.
Minima spesa, massima resa .
Eccellente, possiamo verificare lo stato di un dispositivo locale o remoto che risponda ad un ping, ora dall’uscita del nodo convert sfoghiamo la nostra fantasia.
Il Nodo Led
Visto che stiamo creando una dashboard, inviamo il msg.payload ad un nodo node-red-contrib-ui-led che troveremo sempre nel menu manage palette.
Partiamo dal gruppo per dargli la posizione nella dashboard, insieme alla sua dimensione.
Nella parte colori, potremmo assegnare i colori preferiti in base ai valori in arrivo dal payload. Il ping ci restituirà True se il dispositivo risponde e False se non sarà raggiungibile entro 5 secondi. Il controllo verrà effettuato ogni 20″.
Per oggi abbiamo finito la terza parte della mia rubrica ” Raspberry Pi, la domotica con Node-Red ” , per importare il flusso visto in questo articolo, trascina questo codice in node-red o importalo dal menu import.
1 |
[{"id":"ff4b6aaf.6685e8","type":"ui_led","z":"b313a11e.083d4","group":"274e796c.c9bd96","order":2,"width":2,"height":1,"label":"Rpi 3","labelPlacement":"left","labelAlignment":"left","colorForValue":[{"color":"red","value":"false","valueType":"bool"},{"color":"green","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"name":"Rpi3","x":570,"y":480,"wires":[]},{"id":"768f4cf7.5cac24","type":"convert","z":"b313a11e.083d4","name":"Converti in True/False","convertTo":"boolean","x":380,"y":480,"wires":[["ff4b6aaf.6685e8","11ac5e90.7f2ed1"]]},{"id":"46505bbb.574d24","type":"ping","z":"b313a11e.083d4","name":"Ping Pi3.local","host":"pi3.local","timer":"10","x":160,"y":480,"wires":[["768f4cf7.5cac24","11ac5e90.7f2ed1"]]},{"id":"621453e1.f0656c","type":"ui_led","z":"b313a11e.083d4","group":"274e796c.c9bd96","order":1,"width":3,"height":1,"label":"Wemos D1 Mini","labelPlacement":"left","labelAlignment":"left","colorForValue":[{"color":"red","value":"false","valueType":"bool"},{"color":"green","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"name":"Arduino","x":580,"y":520,"wires":[]},{"id":"c64d1996.194858","type":"convert","z":"b313a11e.083d4","name":"Converti in True/False","convertTo":"boolean","x":380,"y":520,"wires":[["621453e1.f0656c"]]},{"id":"17771767.44a6f9","type":"ping","z":"b313a11e.083d4","name":"Ping Pi3.local","host":"arduino.local","timer":"30","x":160,"y":520,"wires":[["c64d1996.194858"]]},{"id":"11ac5e90.7f2ed1","type":"debug","z":"b313a11e.083d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":570,"y":440,"wires":[]},{"id":"274e796c.c9bd96","type":"ui_group","z":"","name":"Grafici","tab":"1d57abec.c27e64","order":2,"disp":true,"width":"6","collapse":false},{"id":"1d57abec.c27e64","type":"ui_tab","z":"","name":"Gestione Rpi","icon":"fa-gear","order":1,"disabled":false,"hidden":false}] |
Compiti per Casa
Invia un messaggio allo smartphone nel caso un dispositivo non risponda al ping, scegli tu se usare la notifica sull’app IoT MQTT Panel, telegram, email, IFTTT o altro.