Installazione Node-Red su RoadRunner

Appunti installazione Node-RED su scheda RoadRunner Acme Systems

Testato su Debian Jessie Kernel 4.9.109-linux4sam_5.8++

Installazione eseguita come utente root

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

Ora da terminale lanciare il comando:

node-red

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:

nano /lib/systemd/system/node-red.service

Inserire al suo interno:

[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

Aggiornare i servizi:

systemctl daemon-reload
systemctl enable node-red
systemctl start node-red

Controllare la partenza del servizio Node Red

systemctl start node-red

Eseguire un reboot e controllare l'avvio automatico di Node Red.

Ora andiamo nella directory .node-red ed installiamo il pacchetto per gestire l'accesso con il browser in Node Red con utente e password.
L'indirizzo è http://IP_RoadRunner:1880

npm install -g node-red-admin

Esguire il comando per impostare utente e password di accesso

node-red-admin hash-pw

Password: acmesystems
Risultato: $2a$08$cdAk7WZqMq6Yu0Bh5U4LoeaVjv8GM.k5drbvjO8jyVkwxPo8RSvZi

Inserire utente e password dentro il file .node-red/settings.js

module.exports = {
    adminAuth: {
        type: "credentials",
        users: [{
            username: "acme",
            password: "$2a$08$cdAk7WZqMq6Yu0Bh5U4LoeaVjv8GM.k5drbvjO8jyVkwxPo8RSvZi",
            permissions: "*"
        }]
    },

Riavviare il servizio:

systemctl restart node-red.service

L'indirizzo per accedere a Node Red è http://IP_RoadRunner:1880

Installiamo il necessario per vedere le porte seriali:

apt-get install python-pip
pip install pyserial

Verifichiamo ora con il comando:

python -m serial.tools.list_ports

Esempio di risultato ottenuto:
/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

Attenzione !
Installare i pacchetti controllando con htop oppure top, attraverso il browser non si vede il termine dell'avvenuta installazione del pacchetto.

Elenco pacchetti

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

Altri pacchetti interessanti

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
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

Se il nodo node-red-node-sqlite dovesse presentare problemi d'installazione eseguire in sequenza:

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

Installare node-red-node-sqlite direttamente da console per problemi

Fermare prima il servizio:

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

Altri pacchetti installati da http://IP_roadrunner:1880

node-red-contrib-roadrunner

reboot

In Node Red è possibile installare i paccheti anche da linea di comando come di seguito descritto:

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

Durante il processo d'installazione può esere richiesto di lanciare il comando: npm audit fix
Al termine dell'installazione dei pacchetti lanciare il comando : systemctl restart nodered.service

Alla pagina http://IP_roadrunner:1880/ui sono visibili i vari Dashboard creati.

Links

Mauro Tocci
CMMS (Computerized Maintenance Management System) & CAFM (Computer Aided Facility Management) Specialist Project Manager
Analyst & Developer - Building Automation & Access Control Systems Integrator
Linux Server Administrator - KVM Kernel-based Virtual Machine - Red Hat Enterprise - Fedora - Centos

http://www.coolprojects.it - http://www.multiconproject.com - http://www.multiconproject.it - https://github.com/maurotocci