GianCann Inserito 14 Febbraio 2019 segnalazione Inserito 14 Febbraio 2019 In questo topic analizzeremo come installare 3 configurare i 3 software FONDAMENTALI per l'architettura di ATS. Nello specifico, vedremo come installare i seguenti applicativi: - Mosquitto broker: è il software che farà da centro di smistamento dei messaggi MQTT. Benché non vi servirà conoscere nel dettaglio cos'è un broker MQTT penso vi possa comunque far comodo conoscerne i principi base di funzionamento, soprattutto se vorrete espandere ATS in futuro. Per tale motivo, prima di illustrare i passaggi per l'installazione vera e propria, vi suggerisco di leggere l'articolo MQTT, il protocollo dell’IoT e guardare la parte introduttiva del video Come e per cosa utilizzare MQTT via Mosquitto e Paho su Raspberry Pi per comprendere qual'è il compito di Mosquitto. Sappiate, giusto per cultura personale, che il protocollo MQTT è largamente utilizzato nella domotica e che anche Facebook Messenger si basa su questo protocollo (giusto per citare una App tra le più note);(Nota: Mosquitto si può installare anche su Windows) - Node.js: è il runtime JavaScript sul quale si baseranno molte delle librerie/applicative che useremo per ATS. E' diventato uno dei framework di sviluppo più noti in ambiente web (ma non solo). Per utilizzarlo in ATS non vi servirà conoscere nulla di più se non come installarlo su Raspbian... ma se volete approfondire, anche solo superficialmente, leggete la descrizione di Node.js su Wikipedia;(Nota: Node.js si può installare anche su Windows) - Node Red: è il "pannello di controllo" di ATS, ovvero lo strumento che utilizzeremo per creare le automazioni o, nei casi più semplici, per pilotare i nostri treni dallo smartphone. Dal nome si evince che è fortemente legato a Node.js e, in effetti, si può definire come un ambiente di sviluppo grafico per Node.js, senza la necessità di conoscere i dettagli della programmazione JavaScript (benché, nei workflow più avanzati per controllare i nostri treni, useremo anche piccole porzioni di codice che vi spiegherò nei minimi dettagli al momento opportuno). Node Red è uno strumento molto potente, facile da utilizzare e che può essere impiegato a 360° per realizzare un po' di tutto... vedrete che, una volta compreso il funzionamento, vi verrà naturale adattarlo anche ad esigenze ben diverse da quelle per le quali lo utilizzeremo in ATS. Vi invito a leggere l'articolo Scopriamo insieme Node-RED. Grandi progetti IOT in pochi minuti! per capire meglio come funziona Node Red.(Nota: Node Red si può installare anche su Windows) ATTENZIONE: non lascetevi spaventare da sigle, acronimi, protocolli, e bla-bla-bla... vedrete che implementare ATS sarà molto più semplice di quanto possiate credere e, una volta messo in piedi il sistema, vi potrete divertire ad automatizzare i vostri diorami con pochi e semplici passaggi.
GianCann Inserito 14 Febbraio 2019 Author segnalazione Inserito 14 Febbraio 2019 Step 1: installazione Mosquitto Broker Lanciate il terminale (LXTerminal) e digitate il seguente comando e seguire le istruzioni a video: sudo apt-get install mosquitto Al termine dell'istallazione del broker, installiamo anche il client a riga di comando (potrà essere utile, in futuro) sudo apt-get install mosquitto-clients Completata l'installazione, procediamo a configurare Mosquitto lanciando l'editor di testo (sempre da LXTerminal) con questi parametri: sudo geany /etc/mosquitto/mosquitto.conf Nell'editor di testo, che già presenterà una configurazione 'standard', sostituiamo il contenuto del file mosquitto.conf con questi parametri: # Place your local configuration in /etc/mosquitto/conf.d/ # # A full description of the configuration file is at # /usr/share/doc/mosquitto/examples/mosquitto.conf.example pid_file /var/run/mosquitto.pid allow_anonymous false password_file /etc/mosquitto/pwfile persistence true persistence_location /var/lib/mosquitto/ log_dest topic log_type error log_type warning log_type notice log_type information connection_messages true log_timestamp true include_dir /etc/mosquitto/conf.d Chiudiamo il file e generiamo ora l'utente e la password per connettersi al broker MQTT. Sempre da LXTerminal, digitiamo: sudo mosquitto_passwd -c /etc/mosquitto/pwfile MQTT-User Vi verrà chiesto di specificare due volte la password per l'utente MQTT-User: inserite MQTT-Password (attenzione: quando digiterete la password non la vedrete a video). A questo punto riavviate il Raspy con il comando: sudo reboot Una volta che il sistema è ripartito, possiamo fare un veloce test di funzionamento del broker MQTT. Aprite due finestre separate di LXTerminal e mettetele affiancate tra loro. Nella prima finestra digitate questo comando e premete invio: mosquitto_sub -d -t itlug/ats/test -u MQTT-User -P MQTT-Password Passate alla seconda finestra e digitate questo comando, premendo nuovamente invio: mosquitto_pub -d -t itlug/ats/test -m "Benvenuto in ATS" -u MQTT-User -P MQTT-Password Se tutto funziona come dovrebbe, nella prima schermata dovrebbe apparire la frase 'Benvenuto in ATS'. Il test si basa banalmente su due client MQTT a riga di comando (mosquitto_sub, il subscriber e mosquitto_pub, il publisher). Il primo, con funzoni di 'subscriber', si registra/sottoscrive per ricevere i messaggi (chiamati anche 'payload') che verranno inviati al topic itlug/ats/test. Il secondo, con funzioni di 'publisher' invia/pubblica il messaggio Benvenuto in ATS nel topic itlug/ats/test Mosquitto farà da intermediario e passerà il payload (ovvero, il testo del messaggio) al subscriber di quello specifico topic che, a sua volta, lo visualizzerà a video. Dato che abbiamo configurato Mosquitto per non accettare connessione anonime (vedi parametro 'allow_anonymous false' nel file di configurazione) i client devono autenticarsi fornendo nome utente e password (opzioni -u MQTT-User -P MQTT-Password sulla riga di comando). A questo punto Mosquitto è installato, configurato e pronto a partire automaticamente ad ogni riavvio del sistema.
GianCann Inserito 14 Febbraio 2019 Author segnalazione Inserito 14 Febbraio 2019 Step 2: Installazione Node.js (e npm Node Package Manager) L'installazione di Node.js è molto semplice. Aprite la solita finestra di LXTerminal e digitate: sudo apt-get install -y nodejs npm Al temine dell'installazione, l'ultima versione di Node.js (la 10.15.1 al momento in cui scrivo questa guida) sarà presente sul nostro sistema e, parallelamente, sarà installato anche npm, il gestore di pacchetti Node.js che useremo successivamente per installare le varie librerie di supporto.
GianCann Inserito 14 Febbraio 2019 Author segnalazione Inserito 14 Febbraio 2019 Step 3: Installazione Node Red e configurazione per l'autostart al boot del Raspberry Per installare Node Red, digitiamo questo comando nella solita finestra del terminale: bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered) Terminata l'installazione, facciamo in modo che Node Red parta automaticamente al boot del sistema digitando questo comando: sudo systemctl enable nodered.service Al termine riavviamo il tutto con il solito sudo reboot e testiamo il funzionamento di Node Red aprendo il browser e digitando il seguente url nella barra degli indirizzi: http://192.168.1.200:1880 Se tutto è andato per il verso giusto, vedrete l'interfaccia di Node Red A questo punto non ci resta che 'testare' il tutto, creando un semplicissimo workflow, usando come client in vostro smartphone... Vedremo come fare nel prossimo post!
GianCann Inserito 14 Febbraio 2019 Author segnalazione Inserito 14 Febbraio 2019 Step 4: Test dei componenti di base Per testare il funzionamento di Mosquitto+Node Red realizzeremo un piccolo workflow per inviare e ricevere messaggi MQTT sul nostro smartphone, connesso via WiFi alla rete del Raspberry. Partiamo dal creare il nostro primo Workflow in Node Red, e poi vedremo come configurare lo smartphone. (Nota: i numeri in rosso li ho aggiunti io per far meglio identificare i componenti/menù descritti nel testo) Il workflow denominato 'Flow 1' è composto da due distinti 'processi', ognuno dei quali utilizza due "nodi". Il primo usa un nodo inject (1), seguito da un nodo mqtt-sender (2) per trasmettere un messaggio MQTT nel topic ats/test-out. Il secondo usa un nodo mqtt-receiver (3), seguito da un nodo debug (4). Non entrerò nel dettaglio di come questi nodi sono configurati, dato che più avanti vi copierò il codice completo del workflow e potrete vederli direttamente nel vostro Node Red in tutti i loro dettagli: una delle cose interessati di Node Red è la possibilità di importare/esportare i workflow in formato testo puro. Come funziona questo Workflow? Il primo processo invia un messaggio MQTT: Cliccando sul quadratino colore sand blue (quello a sx) del node inject (1), verrà generato un messaggio il cui contenuto (payload) è un valore di tipo timestamp (il numero di millisecondi da quando è stato acceso il Raspberry) che viene passato al nodo mqtt-sender che, a sua volta, si occuperà di pubblicarlo nel broker MQTT ovvero il nostro Mosquitto: sarà poi lui a distribuirlo ai vari 'subscriber' in ascolto (il nostro smartphone, in questo esempio che stiamo realizzando). Il secondo processo è in attesa di un messaggio MQTT: Il nodo mqtt-receiver (3) è connesso al broker MQTT ed ha sottoscritto il topic ats/test-in. Appena riceverà dal broker un messaggio in quello specifico topic, passerà il messaggio al successivo nodo debug (4) che ne visualizzerà il contenuto nella finestra di debug (7) attivabile cliccando sull'icona dell'insetto (5). Ricordate: ogni volta che creiamo o modifichiamo un workflow è necessario metterlo in 'esecuzione' cliccando sul pulsante 'Deploy' per essere sicuri che venga 'eseguito'. Una volta che il workflow è messo in deploy esso girerà in backgroud finché non saremo noi a decidere il contrario. Anche riavviando il raspberry, il worlflow riprenderà funzionare in background. Per importare questo workflow nel vostro Node Red copiate il testo dello script che troverete più avanti usando il menù Import > Clipboard (il menù compare cliccando sulle 3 linee in alto a dx): In testo andrà copiato dentro questa finestra: Codice del Workflow (l'ho copiato su pastebin, per comodità)https://pastebin.com/LL7FmKJu ATTENZIONE: La funzionalità di importazione/esportazione non importa/esporta le credenziali di accesso al broker MQTT. Bisognerà quindi specificarle manualmente nel vostro workflow appena creato, seguendo questi passaggi: 1) doppio click su uno dei due nodi mqtt presenti nel workflow 2) click sull'icona 'matita' accanto al testo localhost:1883 3) click sul tab 'security', e poi specificare username e password negli appositi campi (MQTT-User / MQTT-Passord) 4) click su 'update' 5) click su 'done' (è sufficiente effettuare questa operazione solo per un nodo mqtt) Eseguiti questi passaggi, potete cliccare su 'Deploy' (6) e il vostro workflow è ora pronto per funzionare. Passiamo ora alla configurazione dello smartphone. Installate, per prima cosa, l'App IoT MQTT Panel (Google Play) Dopo averla installata attivate la connessione WiFi del vostro smartphone e cercate la rete 'AFOL-Train-System' alla quale vi collegherete usando la password ATS-WiFi-pwd. (ricordatevi che quando sarete connessi a questa rete, il vostro smatphone non avrà più connettività con la rete Internet e quindi non potrete ricevere messaggi whatsapp/email/notifiche di ogni genere). Lanciate l'App IoT e create una nuova connessione con questi parametri: Connection name: AFOL Train System (WiFi) Client id: (lasciare vuoto) Broker Web/IP Address: 192.168.100.1 Port Number: 1883 Network protocol: TCP Fate poi un tap sull'icona '+' accanto alla voce 'Device list' e scrivete ATS MQTT Test nel campo Device Name e, successivamente, tap su Add. Espandete la sezione Advanced options e specificate questi parametri: Connection timeout: 30 Keep alive: 60 Username: MQTT-User Password: MQTT-Password Salvate il tutto con un tap su Create. Fate tap sulla connessione appena create e poi su 'Add Panel'. Selezionate 'Button' e configuratelo con questi parametri: Panel name: Invia messaggio Topic: ats/test-in Payload: Saluti da ATS (il resto lasciatelo vuoto) Salvate il tutto con un tap su Create Aggiungete un ulteriore panel cliccando sull'icona + in basso a destra. Scegliete il componente 'Text log' e configuriatelo con questi parametri: Panel name: Messaggi da Node Red Topic: ats/test-out (in resto lasciate tutto vuoto) Salvate il tutto con un tap su Create Bene... provate dallo smartphone a tappare sul pulsante 'Invia messaggio' e, dal browser del vostro PC, a cliccare sul riguadro sand blue del nodo 'Inject'... Semplice vero? Ha reagito a questo contenuto: ZioTitanok 1
GianCann Inserito 14 Febbraio 2019 Author segnalazione Inserito 14 Febbraio 2019 Note aggiuntive: Potete utilizzare qualsiasi altra App MQTT: ne esistono svariate sia per Android, sia per IoS, ma anche per sistemi Windows/MAC. I parametri di configurazione sono sostanzialmente gli stessi. Ha reagito a questo contenuto: ZioTitanok 1
ZioTitanok Inserito 14 Febbraio 2019 segnalazione Inserito 14 Febbraio 2019 Ho già un RaspberryPi con Mosquitto, Node.js e Node-Red in funzione in casa, anche se per altri scopi (domotica). Per sicurezza mi sono riletto tutti i passaggi, controllando di avere tutto aggiornato. Confermo che funziona tutto perfettamente. @GianCann a me il messaggio è arrivato leggermente diverso! Hanno reagito a questo contenuto: alf, pivan e Asterix 1 2
LegoAmaryl Inserito 17 Febbraio 2019 segnalazione Inserito 17 Febbraio 2019 (modificato) Ciao @GianCann! Anch'io ho un Raspberry Pi con alcuni software già installati, ma non avevo mai usato né Mosquitto né Node-RED, che non conoscevo. Per installare Mosquitto ho dovuto preliminarmente aggiornare la lista dei pacchetti. sudo apt-get update Per Node-RED l'installazione non è stata così lineare, perché forse a causa di pasticci effettuati in passato per installare NodeJS mi sono ritrovato con node che mi restituiva il seguente errore, che causava il fallimento dell'installazione di Node-RED: error while loading shared libraries: libhttp_parser.so.2.8: cannot open shared object file: No such file or directory Ho capito che il problema era che l'eseguibile /usr/sbin/node era una vecchia versione di node, che non veniva sostituita pur reinstallando il pacchetto nodejs. Ho risolto cancellando il file e sostituendolo con un link a /usr/bin/node. Riporto i passaggi nel caso qualcuno avesse lo stesso problema: sudo rm /usr/sbin/node sudo ln /usr/bin/node /usr/sbin/node Una volta effettuata questa correzione, ho potuto installare Node-RED e da lì tutto il resto è andato liscio. L'installazione di Node-RED mi ha richiesto se volevo configurare dei Pi-specific nodes. Ho lasciato la scelta di default (no), ho fatto male? Per il resto al momento non ho seguito alla lettera tutta la tua guida, in particolare non ho ancora configurato il Raspi come access point, perché per altre cose che ci sto facendo mi serve collegato alla wi-fi domestica. Ma a meno di non utilizzare un access point esterno quando si è alle esposizioni, non mi viene in mente un'alternativa. Eventualmente potrei fare uno script per fare lo switch da una configurazione all'altra. Ultima modifica: 17 Febbraio 2019 da LegoAmaryl tag
GianCann Inserito 17 Febbraio 2019 Author segnalazione Inserito 17 Febbraio 2019 Innanzitutto, grazie per aver speso del tempo per seguire la procedura, @LegoAmaryl 1 ora fa, LegoAmaryl ha scritto: Anch'io ho un Raspberry Pi con alcuni software già installati, ma non avevo mai usato né Mosquitto né Node-RED, che non conoscevo. Ritengo che ti risulteranno utili anche in altri ambiti... Ovviamente, come hai potuto riscontrare, la guida si basa su un ambiente "pulito" e alcuni passaggi, au un sistema già usato per altri scopi, può comportate qualche problema (come accade spesso su qualsiasi sistema) dovuto a versioni di librerie/software differenti. La documentazione del tuo problema potrà essere utile in futuro. 1 ora fa, LegoAmaryl ha scritto: L'installazione di Node-RED mi ha richiesto se volevo configurare dei Pi-specific nodes. Ho lasciato la scelta di default (no), ho fatto male? Diciamo che, allo stato attuale, è ininfluente in quanto ATS, al momento, non farà uso di componenti specifici drl Raspy (tipo l'uso delle GPIO). Quei nodi possono comunque essere aggiunti successivamente dall'interfaccia di Node-Red, come altru che vi suggerirò di aggiungere quandi spiegherò come realizzare dei Worlflow più utili al nostro scopo. 1 ora fa, LegoAmaryl ha scritto: Per il resto al momento non ho seguito alla lettera tutta la tua guida, in particolare non ho ancora configurato il Raspi come access point, perché per altre cose che ci sto facendo mi serve collegato alla wi-fi domestica. Ma a meno di non utilizzare un access point esterno quando si è alle esposizioni, non mi viene in mente un'alternativa. Eventualmente potrei fare uno script per fare lo switch da una configurazione all'altra. L'alternativa, per non usare il Raspy come AP è appunto quella di avere un Access Point separato. Ce ne sono anche 'economici' (intorno ai 20 euro). In realtà, il Raspy può essere configurato per agire contemporaneamente sia come client di una rete WiFi esistente, sia come Access Point: RASPBERRY PI 3 - WIFI STATION+AP Se ti andasse di sperimentare questo sistema, potrebbe essere utile anche ad altri. Altrimenti, quando avrai preparato il tuo script per switchare da una configurazione all'altra, ti invito a condividerlo qui su forum. Grazie
BOLTO@ Inserito 26 Agosto 2021 segnalazione Inserito 26 Agosto 2021 Complimentandomi per l'ottimo lavoro, per chi affrontasse ora l'installazione di node-red, il comando aggiornato da eseguire è il seguente: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered) Ciao Ha reagito a questo contenuto: Wolfolo 1
sdrnet Inserito 26 Agosto 2021 segnalazione Inserito 26 Agosto 2021 Quando vedo questo post mi sale la tristezza... scusate lo sfogo. Hanno reagito a questo contenuto: sancho375, Arrow, Pix e altri 2 utenti 5
Pix Inserito 26 Agosto 2021 segnalazione Inserito 26 Agosto 2021 Stava facendo un lavoro immane anche con il suo Blog, vederli li fermo... Hanno reagito a questo contenuto: Wolfolo, sancho375, Frank4bricks e un altro utente 4
Frank4bricks Inserito 26 Agosto 2021 segnalazione Inserito 26 Agosto 2021 Davvero! Stava collaborando con vari gruppi internazionali per rendere più accessibili i nuovi prodotti... Hanno reagito a questo contenuto: Wolfolo e Pix 2
Post raccomandati
Crea un account o accedi per commentare
Devi essere un utente registrato per postare un commento
Crea un account
Iscriviti per un nuovo account nella nostra community. È facile!
Registra un nuovo accountAccedi
Hai un account? Accedi .
Accedi ora