#Installazione Node-Red su RoadRunner
<abstract>
Appunti installazione Node-RED su scheda RoadRunner Acme Systems
</abstract>
### Testato su Debian Jessie Kernel 4.9.109-linux4sam_5.8++
### Installazione eseguita come utente root
<pre class="terminal">
apt-get install curl
apt-get install ntpdate
apt-get install sqlite
apt-get install npm
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
apt-get install -y nodejs
curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
apt-get update && apt-get install yarn
npm install -g --unsafe-perm node-red
</pre>
Ora da terminale lanciare il comando:
<pre class="terminal">
node-red
</pre>
Dopo l'avvio CTRL+C - Verrà creata la directory dentro /root/.node-red. Ora dobbiamo creare un servizio per avviare Node Red automaticamente al boot della scheda:
<pre class="terminal">
nano /lib/systemd/system/node-red.service
</pre>
Inserire al suo interno:
<pre class="terminal">
[Unit]
Description=Node-RED
After=syslog.target network.target
[Service]
ExecStart=/usr/bin/node-red
WorkingDirectory=/root
User=root
Group=root
Nice=10
SyslogIdentifier=Node-RED
StandardOutput=syslog
Restart=on-failure
# Node-RED need a SIGINT to be notified to stop
KillSignal=SIGINT
[Install]
WantedBy=multi-user.target
</pre>
Aggiornare i servizi:
<pre class="terminal">
systemctl daemon-reload
systemctl enable node-red
systemctl start node-red
</pre>
Controllare la partenza del servizio Node Red
<pre class="terminal">
systemctl start node-red
</pre>
Eseguire un reboot e controllare l'avvio automatico di Node Red.<br><br>
Ora andiamo nella directory .node-red ed installiamo il pacchetto per gestire l'accesso con il browser in Node Red con utente e password.<br>
L'indirizzo è http://IP_RoadRunner:1880
<pre class="terminal">
npm install -g node-red-admin
</pre>
Esguire il comando per impostare utente e password di accesso
<pre class="terminal">
node-red-admin hash-pw
</pre>
<font color="blue">
Password: acmesystems<br>
Risultato: $2a$08$cdAk7WZqMq6Yu0Bh5U4LoeaVjv8GM.k5drbvjO8jyVkwxPo8RSvZi
</font>
Inserire utente e password dentro il file .node-red/settings.js
<pre class="terminal">
module.exports = {
adminAuth: {
type: "credentials",
users: [{
username: "acme",
password: "$2a$08$cdAk7WZqMq6Yu0Bh5U4LoeaVjv8GM.k5drbvjO8jyVkwxPo8RSvZi",
permissions: "*"
}]
},
</pre>
Riavviare il servizio:
<pre class="terminal">
systemctl restart node-red.service
</pre>
L'indirizzo per accedere a Node Red è http://IP_RoadRunner:1880<br><br>
Installiamo il necessario per vedere le porte seriali:
<pre class="terminal">
apt-get install python-pip
pip install pyserial
</pre>
Verifichiamo ora con il comando:
<pre class="terminal">
python -m serial.tools.list_ports
</pre>
Esempio di risultato ottenuto:<br>
/dev/ttyAMA0
/dev/ttyUSB0
/dev/ttyUSB1
/dev/ttyUSB2
/dev/ttyUSB3
/dev/ttyUSB4
/dev/ttyUSB5
7 ports found
Ora installare i pacchetti in node red all'indirizzo http://indirizzo_ip_scheda:1880
<div class="alert alert-warning">
<strong>Attenzione !</strong><br>
<font color="red">
Installare i pacchetti controllando con htop oppure top, attraverso il browser non si vede il termine dell'avvenuta installazione del pacchetto.
</font>
</div>
Elenco pacchetti
<pre class="terminal">
node-red-contrib-config # Configurazione variabili flusso e globali
node-red-contrib-contextbrowser # Visualizza variabili flusso e globali
node-red-contrib-cron # Scheduler come cronjob Linux
node-red-contrib-file-function # Lettura e scrittura file
node-red-contrib-file-upload # Upload
node-red-contrib-modbus # TCP / Modbus
node-red-contrib-mqtt-broker # MQTT Broker
node-red-contrib-pythonshell # Utilizzo con script python
node-red-contrib-splitter # Funzioni stringhe
node-red-contrib-string # Funzioni stringhe
node-red-dashboard # Web Page Node Red
node-red-node-rbe # Report by Exception node - only passes on data if the payload has changed
node-red-contrib-roadrunner # I/O scheda Roadrunner
node-red-node-serialport # Comunicazione porte seriali
node-red-contrib-influxdb # Database per utilizzo Grafana
node-red-contrib-serialport-rs485 # Comunicazioni RS 485
node-red-contrib-md5 # Hashing MD5
node-red-node-mysql # Connect to MySQL server
</pre>
Altri pacchetti interessanti
<pre>
node-red-contrib-light-scheduler # Cron con schedulazione grafica
node-red-node-snmp # SNMP Protocol
node-red-contrib-dht-sensor # Sensori temperatura umidità DHT11 e DHT22
node-red-contrib-sensor-ds18b20 # Sensori temperatura
node-red-piervin-sensor-wired # Comunicazione Wired
node-red-contrib-i2c # Comunicazione 12c
</pre>
<pre class="terminal">
node-red-contrib-lcd20x4-i2c # LCD su i2c 20X4
Questo pacchetto richiede:
sudo apt-get install python-smbus
sudo raspi-config
Interfacing Options>I2C>Enable
</pre>
Se il nodo node-red-node-sqlite dovesse presentare problemi d'installazione eseguire in sequenza:
<pre class="terminal">
npm install node-gyp -g node-gyp
npm install sqlite3
npm outdated
npm update
apt-get install libsqlite3-dev
npm install sqlite3 --build-from-source --sqlite=/usr
npm audit fix
</pre>
Installare node-red-node-sqlite direttamente da console per problemi
Fermare prima il servizio:
<pre class="terminal">
systemctl stop node-red.service
cd .node-red
npm i --unsafe-perm node-red-node-sqlite
npm uninstall sqlite3
npm install --save sqlite3
npm rebuild
npm audit fix
</pre>
Altri pacchetti installati da http://IP_roadrunner:1880
<pre class="terminal">
node-red-contrib-roadrunner
reboot
</pre>
### In Node Red è possibile installare i paccheti anche da linea di comando come di seguito descritto:
<pre class="terminal">
cd .node-red
npm install node-red-contrib-config
npm install node-red-contrib-contextbrowser
npm install node-red-contrib-cron
npm install node-red-contrib-file-function
npm install node-red-contrib-file-upload
npm install node-red-contrib-modbus
npm install node-red-contrib-mqtt-broker
npm install node-red-contrib-pythonshell
npm install node-red-contrib-splitter
npm install node-red-contrib-string
npm install node-red-dashboard
npm install node-red-node-rbe
npm install node-red-contrib-roadrunner
npm install node-red-node-serialport
npm install node-red-contrib-influxdb
npm install node-red-contrib-serialport-rs485
npm install node-red-contrib-md5
npm install node-red-node-mysql
</pre>
Durante il processo d'installazione può esere richiesto di lanciare il comando: <b>npm audit fix</b><br>
Al termine dell'installazione dei pacchetti lanciare il comando : <b>systemctl restart nodered.service</b>
Alla pagina http://IP_roadrunner:1880/ui sono visibili i vari Dashboard creati.
## Links
* Appunti installazione Node Red su RoadRunner di Sergio Tanzilli <https://www.acmesystems.it/node-red>
* RoadRunner - System On Module <https://www.acmesystems.it/roadrunner>
* Berta D2 - Evaluation board for RoadRunner SoM <https://www.acmesystems.it/roadrunner_devkit>
* Documentazione Node Red <https://nodered.org/>
* Flows <https://flows.nodered.org>
@include='bio_mauro_tocci'
2018 Ⓒ TanzoLab