This procedure describes how to start Node-red automatically when the PLCnext starts. It is a alternative to pm2 that apparently it is not working with the node from PLCnext Store.
The idea is to include a script to run in init.d directory. The script bellow was adapted from the script found in the node-red page.
Procedure
1) Log in to the PLC as root:
Using username "admin".
admin@192.168.1.2's password:
Last login: Wed May 8 15:33:03 2019 from 192.168.1.120
admin@axcf2152:~$ su root
Password:
root@axcf2152:/opt/plcnext/#
2) Change to init.d folder and open a new file with the name “start_nodered”
root@axcf2152:/opt/plcnext/# cd /etc/init.d
root@axcf2152:/etc/init.d# sudo nano start_nodered
3) Copy the script bellow to this file. This script can be found in the follow link Link to start_nodered script
#! /bin/sh ### BEGIN INIT INFO # Provides: node-red # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 6 # Short-Description: Start or stop the node-red server ### END INIT INFO # Script to start node-red with PLCnext from Phoenix Contact using init.d # Execute these commands: # sudo chmod 755 start_nodered # sudo update-rc.d start_nodered defaults 99 USER=root USER_DIR='/opt/plcnext/.node-red' PATH=/usr/bin:/usr/sbin:/opt/plcnext/apps/60002172000051/opt/node-v10.15.3-linux-armv7l/bin NAME=node-red DAEMON=/opt/plcnext/appshome/data/60002172000051/bin/node-red OPTIONS="--max-old-space-size=128" if [ -n "$USER_DIR" ]; then OPTIONS="$OPTIONS --userDir=$USER_DIR" fi LOG='/var/log/node-red.log' PIDFILE=/var/run/node-red.pid . /etc/init.d/functions start_daemon () { start-stop-daemon --start --background --chuid $USER --name $NAME $START_STOP_OPTIONS --make-pidfile --pidfile $PIDFILE --startas /bin/sh -- -c "$DAEMON $OPTIONS >> $LOG 2>&1" echo "Logging to "$LOG } case "$1" in start) echo "Starting daemon" "$NAME" start_daemon ;; stop) echo "Stopping daemon" "$NAME" start-stop-daemon --stop --user $USER --name $NAME --pidfile $PIDFILE --retry 30 --oknodo ;; restart) $0 stop sleep 5 $0 start ;; status) status "$DAEMON" "$NAME" exit $? ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 esac exit 0
4) Execute the two commands bellow:
root@axcf2152:/etc/init.d# sudo chmod 755 start_nodered root@axcf2152:/etc/init.d# sudo update-rc.d start_nodered defaults 99
5) Restart the PLC and check if Node-RED has started.
Note:
- It is important to keep the file name with “start” or any other word that starts with letter with or after “s” to ensure that the Node-red will start after all others process.
Leave a Reply
You must be logged in to post a comment.