Node-RED是一个可视化物联网编排工具,可基于浏览器的流程编辑器连接设备、服务器和 API 应用。
本文介绍在Ubuntu18.04 上的安装和使用。
详细的官方文档可以查看https://nodered.org/docs/
1 安装
1.1安装nodejs
$sudo apt-get install nodejs
1.2 安装cnpm
Npm资源在国外,比较慢,所以安装cnpm并使用taobao镜像
$npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm安装完成后,默认会放在/local/npm/bin/cnpm -> ../lib/node_modules/cnpm/bin/cnpm
直接运行cnpm会报找不到命令,这时需要在/usr/bin/目录下创建一个软连接,运行:
$ sudo ln -s /local/npm/lib/node_modules/cnpm/bin/cnpm /usr/bin/cnpm
这时就可以运行cnpm了。
1.3安装node-red
$cnpm install -g node-red
安装完成后,默认也会放在/local/npm/bin/ 下,直接运行会报错。所以需要创建软连接:
$sudo ln -s /local/npm/lib/node_modules/node-red/red.js /usr/bin/node-red
$sudo ln -s /local/npm/lib/node_modules/node-red/bin/node-red-pi /usr/bin/node-red-pi
这样就可以启动node-red 了
运行: $node-red
默认会监听1880端口
在浏览器输入http://127.0.0.1:1880就可以使用了,界面如下图所示:
2 使用
2.1 例子1:创建一个Flow
使用Inject node,Debug node, Function node 创建一个简单的数据流,功能时将时间信息输出到debug里。
1 从左侧栏里拖动一个inject node到工作区
2 拖动一个debug node到工作区
3 拖动一个function node 到工作区
4 将三个node连接起来
5 双击function node
会弹出如下的编辑框,在代码栏里粘贴如下的代码,然后点击“Done”button。
// Create a Date object from the payload
var date = new Date(msg.payload);
// Change the payload to be a formatted Date string
msg.payload = date.toString();
// Return the message so it can be sent on
return msg;
6 deploy
首先点击”Deploy” 按钮,应用此flow。然后点“Debug”来显示debug 的信息。
最后点击Inject node的按钮,每点击一次,就会在右侧的debug栏输出一条信息。
2.2 导入/导出Flow
一个Flow创建好之后,可以将其导出,格式为json文件。这样,别人就可以使用了。
2.2.1导出Flow
1 首先点击功能栏,在弹出的列表中点击“Export”,如下图所示。
2 点击“export”后,会弹出如下窗口
点击“Download”按钮就可以将配置文件保存本地。
2.2.2 导入Flow
如果别人保存好的flow配置文件可以直接导入到node red中使用。
1首先点击功能栏,在弹出的列表中点击“Import”,如下图所示。
2 点击“Import”后会弹出对话框,如下图:
3 然后点击“select a file to import”选择想要导入的json文件,最后点击“import”就完成了导入操作
4 最后点击主页面的“Deploy”就可以使用了。
2.3 例子2: 从website获取CSV文件并解析
这个例子比较复杂一些:从一个网站获取CSV文件,进行解析,根据数据做一些处理。
需要用到Inject node, Http request node, csv node, switch node, change node 和debug node.
1 添加一个Inject node
双击node,repeat改为interval, 值改为2 minutes,如下图。
这样,每2分钟会触发一次操作。
2 添加一个http request node
双击node,将URL改为:
https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/significant_month.csv
然后点击“done”
3 添加CSV node
双击此node, 勾选 ‘First row contains column names’,其他选项保持不动。
4 添加debug node
添加完debug node之后,将上面四个node按照如下图所示的顺序连接起来。
5 添加switch node
双击此node,配置msg.payload.mag属性,设置条件为 “>=” ,选择类型为“number”, 值可以填任何值,这里填了6.7,意思是如果上一个node 来的值>=6.7的话,会满足此switch node条件,然后会被传到下一个node。
6 添加一个change node
双击此node,设置msg.payload的string内容为“TooHighValue”
7 再添加一个debug node
将switch node, change node和debug node 按如下图的顺序连接起来。
8 Deploy
Deploy之后,在debug输出中如果从URL取得的值大于6.7,则会输出TooHighValue字符串。