Node-RED 采集 OPC UA Server 的数据
整理自《node-red 采集 opcua server 的数据》原稿。
1、准备工作
- 使用 Prosys OPC UA Simulation Server 模拟 OPC UA Server
- 在 Node-RED 中创建 OPC UA Client,读取 Server 数据
2、安装 OPC UA 插件并配置
- 在 Node-RED 管理调色板中安装 OPC UA 相关节点(如
node-red-contrib-opcua)。

- 配置 OpcUa-Client 连接。


- 配置 OpcUa Item,填写点位的 NodeId。


例如读取湿度:

- 用 inject 做定时触发读取。

完整读流程示意:

3、注意点:OpcUa-Client 三个输出
OpcUa-Client 有三个输出端口,含义不同,调试时务必分清接哪一路。

本例中,接在某一输出上的 debug 打印的是读取结果值:

4、处理值并上报 ThingsBoard
Node-RED 里数据多在 msg.payload 中传递。用 function 整理成平台需要的 JSON,再接 mqtt out(输入同样走 payload)。


在 ThingsBoard 上确认遥测是否到达:

5、整体结构(上行)

6、订阅 TB 的 RPC 并写回 OPC UA
ThingsBoard RPC 示例格式:
json
{
"method": "write",
"params": {
"nodeId": "ns=3;i=1011",
"value": 123,
"dataType": "Double"
}
}说明:
method可统一为write- Node-RED 写 OPC UA 时认 NodeId,因此
params里需包含:nodeId、value、dataType
流程:
- mqtt in 订阅设备 RPC。

- function 把 RPC 转成写节点需要的字段:消息中需包含 payload、topic、datatype(分别取自 RPC 参数)。

- 经 OPC UA 写节点下发。

- 在 Prosys Simulation Server 中确认值已变化。

下行整体结构:

