![]() |
|
Node-RED - Printable Version +- PINE64 (https://forum.pine64.org) +-- Forum: PINE A64(+) (https://forum.pine64.org/forumdisplay.php?fid=4) +--- Forum: Pine A64 Projects, Ideas and Tutorials (https://forum.pine64.org/forumdisplay.php?fid=19) +--- Thread: Node-RED (/showthread.php?tid=2395) |
Node-RED - klliew - 10-15-2016 Node-RED is a tool for wiring together hardware devices, APIs and online services in new and interesting ways. It build on top of Nodejs With this, PINE64 going to be more interesting. Tested with PINE64 2GB(1GB and 512MB shall work well, anyone with this please help to test out), Debian Base(Others Debian built shall work well, some Debian only support Nodejs 4.x). 1) Install Nodejs sudo su cd /home/debian mkdir src cd wget https://nodejs.org/dist/latest-v6.x/node-v6.8.1-linux-arm64.tar.gz tar -xvf node-v6.8.1-linux-arm64.tar.gz cd node-v6.8.1-linux-arm64 sudo cp -R * /usr/local/ cd .. rm -rf node-v6.8.1-linux-arm64 2) Install Node-Red sudo npm cache clean sudo npm install -g --unsafe-perm node-red 3) Boot time auto start a) Create bash file for node-red service sudo nano /lib/systemd/system/nodered.service Code: # systemd service file to start Node-RED
[Unit]
Description=Node-RED graphical event wiring tool.
Wants=network.target
Documentation=http://nodered.org/docs/
[Service]
Type=simple
# Run as normal debian user - feel free to change...
User=debian
Group=debian
WorkingDirectory=/home/debian
Nice=5
Environment="NODE_OPTIONS=--max-old-space-size=128"
# uncomment and edit next line if you need an http proxy
#Environment="HTTP_PROXY=my.httpproxy.server.address"
# uncomment the next line for a more verbose log output
#Environment="NODE_RED_OPTIONS=-v"
#ExecStart=/usr/bin/env node $NODE_OPTIONS red.js $NODE_RED_OPTIONS
ExecStart=/usr/bin/env node-red-pi $NODE_OPTIONS $NODE_RED_OPTIONS
# Use SIGINT to stop
KillSignal=SIGINT
# Auto restart on crash
Restart=on-failure
# Tag things in the log
SyslogIdentifier=Node-RED
#StandardOutput=syslog
[Install]
WantedBy=multi-user.targetsudo nano /usr/bin/node-red-start Code: #!/bin/bash
echo -e '\033]2;'Node-RED console'\007'
nv=`node -v | cut -d "." -f1`
if [ "$nv" = "v0" ]; then
echo -e "\033[0;47m \033[0m"
echo -e "\033[0;47m node.js v0.10 is NO LONGER supported. \033[0m"
echo -e "\033[0;47m please consider upgrading to node.js LTS. \033[0m"
echo -e "\033[0;47m \033[0m"
echo -e "\033[0;47m you can do this with the following command: \033[0m"
echo -e "\033[0;47m update-nodejs-and-nodered \033[0m"
echo -e "\033[0;47m \033[0m"
echo -e " "
fi
HOSTIP=`hostname -I | cut -d ' ' -f 1`
if [ "$HOSTIP" = "" ]; then
HOSTIP="127.0.0.1"
fi
echo -e "Start \033[1m\033[38;5;88mNode-RED\033[0m"
echo " "
echo "Once Node-RED has started, point a browser at http://$HOSTIP:1880"
echo "On Pine64 Node-RED works better with the Firefox browser"
echo " "
echo -e "Use \033[0;36mnode-red-stop\033[0m to stop Node-RED"
echo -e "Use \033[0;36mnode-red-start\033[0m to start Node-RED again"
echo -e "Use \033[0;36mnode-red-log\033[0m to view the recent log output"
echo -e "Use \033[0;36msudo systemctl enable nodered.service\033[0m to autostart Node-RED at every boot"
echo -e "Use \033[0;36msudo systemctl disable nodered.service\033[0m to disable autostart on boot"
echo " "
echo "To find more nodes and example flows - go to http://flows.nodered.org"
if [ "$nv" = "v0" ]; then
echo "You may also need to install and upgrade npm"
echo -e " \033[0;36msudo apt-get install npm\033[0m"
echo -e " \033[0;36msudo npm i -g npm@2.x\033[0m"
fi
sudo service nodered start
echo " "
sudo journalctl -f -n 0 -u nodered -o catc) Create bash file to stop node-red sudo nano /usr/bin/node-red-stop Code: #!/bin/bash
echo -e '\033]2;'Node-RED console'\007'
echo -e "\033[1mStop \033[38;5;88mNode-RED\033[0m"
echo " "
echo -e "Use \033[0;36mnode-red-start\033[0m to start Node-RED again"
sudo service nodered stop
echo " "
exitd) reload systemctl daemon sudo systemctl daemon-reload e) create auto start link sudo systemctl enable nodered.service 4) Start Node-red without reboot sudo systemctl start nodered.service 5) View node-red log: sudo journalctl -f -u nodered -o cat 6) Configure node-red settings and install node After first time start up, node-red will auto created a system folder at /home/debian/.node-red To configure the setting, /home/debian/.node-red/settings.js To install node, /home/debian/.node-red/node_modules Default setting node-red will use PINE64 host name to generate flow file. /home/debian/.node-red/flows_pine64.json If you will change host name, update the "flowFile" path in settings.js a) to generate password protected npm install -g node-red-admin node-red-admin hash-pw (Enter your password, it will return encoded password string, copy this string) b) Famous Dashboard UI npm install node-red-dashboard c) Useful scheduler node npm install node-red-contrib-bigtimer There are thousand of node & flow at here. after install new node, restart node-red. sudo systemctl restart nodered.service 7) After all done, you will able to access node-red at browser (Default will use port 1880, can be update in settings.js) http://[PINE64-IP-Address]:1880 8) Create a sample flow. You can import the this sample flow at Menu(Right Top Corner) -> Import -> Clipboard Code: [{"id":"60ba3a72.b24c54","type":"ui_button","z":"5bd1466.b4e63b8","name":"","group":"7e934c94.882ef4","order":0,"width":0,"height":0,"label":"Click Me!","color":"","icon":"","payload":"","payloadType":"str","topic":"","x":188,"y":93,"wires":[["529c0ec4.837a7"]]},{"id":"529c0ec4.837a7","type":"function","z":"5bd1466.b4e63b8","name":"","func":"var d = new Date();\nmsg.payload = d;\nreturn msg;","outputs":1,"noerr":0,"x":326,"y":90,"wires":[["29ee44ea.ad52ec"]]},{"id":"29ee44ea.ad52ec","type":"ui_text","z":"5bd1466.b4e63b8","group":"7e934c94.882ef4","order":0,"width":0,"height":0,"name":"","label":"Current Date","format":"{{msg.payload}}","layout":"row-spread","x":542,"y":95,"wires":[]},{"id":"7e934c94.882ef4","type":"ui_group","z":"","name":"Hello PINE64","tab":"1680a81f.a5aec8","disp":true,"width":"6"},{"id":"1680a81f.a5aec8","type":"ui_tab","z":"","name":"Home","icon":"dashboard"}]9) This sample flow using node-red-dashboard, you can access the UI at http://[PINE64-IP-Address]:1880/ui/#/0 Hope you guy enjoy this. Have fun!!!
RE: Node-RED - MarkHaysHarris777 - 10-15-2016 Thank you. I fixed your 7) bullet point. (it had a mistaken "frown face" due to a misplaced colon) RE: Node-RED - klliew - 10-15-2016 (10-15-2016, 09:08 AM)MarkHaysHarris777 Wrote: Thank you. I fixed your 7) bullet point. Thanks Mark.
RE: Node-RED - MarkHaysHarris777 - 10-15-2016 The Node-Red Documentation is linked to the left. RE: Node-RED - klliew - 10-15-2016 Install Mosquitto (MQTT) Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "Internet of Things" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino. 1) Install sudo apt-get update sudo apt-get install mosquitto 2) Configure Password cd /etc/mosquitto/ mosquitto_passwd -c [output file name] [your username] [your password] sudo nano mosquitto.conf Append this string at the bottom of the file. Code: password_file /etc/mosquitto/mqttPINE64pass3) Manually Start/Stop (Default Auto Start) sudo /etc/init.d/mosquitto start sudo /etc/init.d/mosquitto stop 4) Receive and send from Node-Red RE: Node-RED - SvdSinner - 12-14-2016 Awesome guide! Thanks! I would suggest one minor addition/edit to step 1: (10-15-2016, 08:55 AM)klliew Wrote: cd /home/debian |