thinsPanel中node-red的引用及提供的功能
1. 引用
在thingsPanel平台“规则引擎”模块-接入引擎-编辑规则跳转到node-red页面进行编辑。
2. node-red在thingsPanel中使用
Node-RED是一个构建物联网应用的编程工具,提供了一个基于浏览器的流程编辑器,通过拖拽连接节点的编程方式,将硬件设备、API和在线服务连接在一起,可以一键部署运行,创建好的流程还可以通过导出导入JSON文件轻松实现程序移植。
Node-RED所在层:
(1) node-red基本
左侧为节点栏,可拖不同节点到中间画布,通过双击节点修改配置。
基本节点:
inject-输入,debug-输出,function-函数,switch-判断,change-改变属性或者属性值
在thingsPanel中使用node-red目前需求上思路:
首先需要个触发器来定时触发采集行为,再借助OPC DA采集模块进行数据采集,然后将采集到的数据进行处理,处理完后进行入库和页面展示。
基于这个思路,我们从Node-RED节点组件库中可以快找触发器及其详细的介绍:
点击右上角栏目icon选择设置进入控制面板-安装搜索opcua选择node-red-contrib-opcua进行安装,安装成功后就会出现图中标记3:
(2) 配置节点
配置opcua节点(ThingsPanel平台对接opc-ua设备需先安装opc-ua客户端UaExpert)
UaExpert下载地址:uaexpert-bin-win32-x86-vs2008sp1-v1.6.3-448.zip
UaExpert使用方法:Uaexpert操作手册
其中Item中的数据和UaExpert的NodeId数据保持一致,数据类型Type和UaExpert的Datatype保持一致,name可以随意填写。
配置opcua-client节点:
配置debug节点:
(3) 运行opcua读取数据
部署完成后,单击注入后,调试窗口显示出数据。
3. node-red常用节点
(1) http in(设置请求方式、填写URL,最后组成的api为http://+node-red的ip+端口+URL)
例如:node-red在本地安装即本地ip地址,若本地ip为192.x.x.x,端口为1880
则图中请求的url为192.x.x.x:1880/test/api
(2) http resonse(设置状态码和响应头)
若需要接口返回相关内容,可以在两个节点之间添加function节点,通过msg.payload进行输出
(3) http request(前面定义了接口,可以通过http request进行验证接口的可行性)
4. node-red的API
Node-RED管理API使用settings.js文件中的adminAuth属性进行保护。
node-red管理api的方法:Node-RED : 管理API方法
Runtime API(运行API):可以在将Node-RED嵌入到另一个应用程序时使用(Node-RED可以使用标准的require模块加载器加载到另一个node.js应用程序中--在thingsPanle中引入 import RED from "@/core/services/res.module"
)。
常用api:(绿色为在thingsPanle中使用的api)
(1) .init(server,settings) --- node-red初始化
(2) .start() --- node-red开启
(3) .stop() --- node-red关闭
(4) .server --- http实例
(5) .setRedToken() --- 设置node-red的令牌(权限的认证)
(6) .getRedToken() --- 获取node-red的令牌(权限的认证)
(7).loadFlows() --- 加载数据流配置
(8).startFlows() --- 启动流配置
(9).stopFlows() ---停止流配置
(10).setFlows(flows,type) ---设置活动流配置
(11).getFlows() ---获取活动流配置
(12).addFlow(flow) ---添加新的流到配置中
(13).getFlow(id) ---获取活动配置中的流
(14).updateFlow(id,flow) ---更新配置中已有的流
(15).removeFlow(id) ---从激活配置中移除一个流
(16).getNodeInfo(id) ---- 获取节点集信息
(17).getNodeList() --- 获取所有可用节点的列表
(18).getModuleInfo(id) ---- 获取节点模块信息
(19).getNodeConfigs() --- 获取所有活动节点集的HTML配置
(20).getNodeConfig(id) --- 获取特定节点集的HTML配置
5. thingsPabel中配置node-red权限
node-red默认使用http请求:
(1) 创建node-red的axios实例
(2) 获取认证token--使用red_axios(即(1)中的axios实例,Alot项目中transpond.js文件中进行配置)
6. thingsPanle应用中node-red操作流程
(1) 创建设备
依次点击:设备管理-新增项目-保存--设备管理-创建设备-编辑参数--选择传输协议和认证方式
(2) 创建规则引擎
创建接入规则-编辑(跳转到node-red编辑器中),拖拽节点编辑相应规则
数据传输流程如下:
添加mqtt out节点:
编辑节点:
下拉框新建选项--服务端写上数据要传输的服务器地址和端口,
点击图二的编辑按钮:
在安全栏写上(1)中MQTT用户名
在主题处写上(1)中主题
点击右上角部署-点击注入,数据已传入所写服务器
(3) 数据管理菜单
点击数据管理,搜索上面所配置设备名称,查看传输数据。
1处是节点,2处是值.