Node-Red 环境搭建

Node-Red 简介

官网: Node-RED (nodered.org), 针对事件驱动型应用程序的低代码编程. 来看下 Node-RED - Wikipedia 的翻译:

Node-RED是一种基于流的可视化编程开发工具,最初由IBM开发,用于将硬件设备,API和在线服务作为物联网的一部分连接在一起。

Node-RED提供了一个基于Web浏览器的流编辑器,可用于创建JavaScript函数。可以保存或共享应用程序的元素以供重复使用。运行时基于 Node.js 构建。在 Node-RED 中创建的流使用 JSON 进行存储。从 0.14 版开始,MQTT 节点可以建立正确配置的 TLS 连接。

现在的嵌入式设备经常需要一个比较华丽的配置界面, 最好能跨平台(Win, Linux, macOS 或 Android, iOS), 最简单的方法当然是网页了. 很多时候会使用 Home Assistant (home-assistant.io) 和 Node-Red 联用.

Home Assistant 其实类似于一个操作系统, 集成有完整的Linux内核? 所以功能完备, 但体积较大 ~1.3GB. 有很多开箱即用的功能, 其 Lovelace 界面比较完善, Supervisor 和 HACS(Home Assistant Community Store) 也可以安装各种各样的组件, 然后米家或其它物联网设备(窗帘, 灯, 电视, 空调, 扫地机, 电饭锅, 电冰箱…)可以轻松连接进去, 也可以集成HomeKit, 实现 Hey, Siri, 开灯 之类的语音命令. 可以地图设置, 比如快到家的时候自动开启空调. 其实车可以算物联网设备, 可以实现诸如 小爱同学, 进入自动驾驶 之类的命令. 总之, Home Assistant 可以把不同厂家不同平台的智能设备(功能)嵌入到同一个操作面板, 用手机或PC方便的进行自动化管理.

如果是资源较弱的微型嵌入式设备, 对体积和系统资源要求严格, 可以使用 Node-Red 搭配 node-red-dashboard 完成轻量级的简洁界面.

本篇以在 虚拟机 Ubuntu20 中搭建作为演示

Node-Red 安装

首先在终端输入 date , 看是否是现在的时间, 很多嵌入式设备没有后备电池或网络时间同步, 时间不对是装不上的. 如果时间不对, 运行 sudo date -s "$(curl -s --head http://baidu.com | grep ^Date: | sed 's/Date: //g')" 让系统时间和网络时间对齐.

时间正确后就可以正常安装了

#!/bin/bash

# node.js
curl -fsSL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

# node-red
sudo npm install -g --unsafe-perm node-red

说明:

  • 如果curl有问题, 打开链接保存文件, 然后 sudo -E bash setup_14.x
  • 安装位置的查看可以用命令 npm list -g --depth 0, 这里实际是在 /usr/lib/node_modules/node-red

参考:

Node-Red 运行

直接在命令行输入 node-red 即可

$ node-red
29 May 18:53:07 - [info] 

Welcome to Node-RED
===================

29 May 18:53:07 - [info] Node-RED version: v2.2.2
29 May 18:53:07 - [info] Node.js  version: v14.19.3
29 May 18:53:07 - [info] Linux 5.13.0-44-generic x64 LE
29 May 18:53:07 - [info] Loading palette nodes
29 May 18:53:07 - [info] Settings file  : /home/z/.node-red/settings.js
29 May 18:53:07 - [info] Context store  : 'default' [module=memory]
29 May 18:53:07 - [info] User directory : /home/z/.node-red
29 May 18:53:07 - [warn] Projects disabled : editorTheme.projects.enabled=false
29 May 18:53:07 - [info] Flows file     : /home/z/.node-red/flows.json
29 May 18:53:07 - [info] Creating new flow file
29 May 18:53:07 - [warn] 

---------------------------------------------------------------------
Your flow credentials file is encrypted using a system-generated key.

If the system-generated key is lost for any reason, your credentials
file will not be recoverable, you will have to delete it and re-enter
your credentials.

You should set your own key using the 'credentialSecret' option in
your settings file. Node-RED will then re-encrypt your credentials
file using your chosen key the next time you deploy a change.
---------------------------------------------------------------------

29 May 18:53:07 - [info] Server now running at http://127.0.0.1:1880/
29 May 18:53:07 - [info] Starting flows
29 May 18:53:07 - [info] Started flows

说明:

  • Node-Red 版本号 v2.2.2, Node.js 版本号 v14.19.3
  • Node-Red 的用户文件夹默认是一个隐藏文件夹 ~/.node-red
  • 配置文件为 ~/.node-red/settings.js
  • 流文件为 .node-red/flows.json
  • 默认的打开方式可以浏览器输入 系统ip:1880 端口访问

我虚拟机Ubuntu20的IP为 192.168.10.129, 那我可以在主机的浏览器输入 http://192.168.10.129:1880/ 进行访问, 如图

在这里插入图片描述

PM2 管理开机启动

PM2 - Home (keymetrics.io), ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS, 是一个守护进程管理器, 帮助管理和保持应用程序在线.

#!/bin/bash
sudo npm install -g pm2
pm2 start $(which node-red) -- -v
pm2 startup systemd
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u $USER --hp /home/$USER
sudo systemctl daemon-reload
sudo systemctl enable pm2-$USER
sudo systemctl start pm2-$USER
pm2 save

说明:

  • pm2-$USER 开机服务的位置 /etc/systemd/system/pm2-$USER.service, 找不到的话可以到 /lib/systemd/system/ 文件夹下找

重启系统 sudo reboot 检验状态

# active (running)
$ systemctl status pm2-$USER.service
● pm2-z.service - PM2 process manager
     Loaded: loaded (/etc/systemd/system/pm2-z.ser>
     Active: active (running) since Sun 2022-05-29>
       Docs: https://pm2.keymetrics.io/
 ...

# online
$ pm2 status
┌────┬────────────────────┬──────────┬──────┬───────────┬──────────┬──────────┐
│ id │ name               │ mode     │ ↺    │ status    │ cpu      │ memory   │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0  │ node-red           │ fork     │ 15   │ online    │ 0%       │ 71.1mb   │
└────┴────────────────────┴──────────┴──────┴───────────┴──────────┴──────────┘

如果node-red新安装了组件, 想重启应用程序:

pm2 restart node-red

参考:

Dashboard 安装

两种安装方式: 命令行 和 界面 安装二选一即可

命令行安装:

  • 需要切换到 ~/.node-red 文件夹再安装
  • 装完以后需要重启node-red:
cd ~/.node-red
npm install node-red-dashboard
pm2 restart node-red

界面安装:

  • 右上角三横杠 -> 节点管理
  • 控制板 -> 安装, 搜索 dashboard

在这里插入图片描述

装完后侧边栏可以看到dashboard的节点:

在这里插入图片描述

打开链接(IP:1880/ui)可以看到UI界面, 我这里是 http://192.168.10.129:1880/ui/, 由于是空的, 显示:

在这里插入图片描述
欢迎扫描二维码关注微信公众号, 及时获取最新文章:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值