概述
本指南将介绍如何使用ThingsBoard IoT Gateway将OPC-UA设备连接至ThingsBoard CE。
无论您是刚接触OPC-UA集成,还是希望优化现有配置,本指南都将帮助您快速上手。
介绍
ThingsBoard IoT Gateway是一款开源方案,在接入既有或第三方系统的物联网设备与ThingsBoard平台之间架起桥梁。它让无法直接与ThingsBoard通信的设备得以无缝集成,确保数据可实时采集、处理与展示。借助IoT Gateway,您可以连接多台设备、聚合遥测数据并集中管理配置。它支持灵活的部署场景,尤其适用于OPC-UA广泛使用的工业自动化、监控和智能能源系统。
什么是OPC-UA?
OPC统一架构(OPC-UA)是工业自动化中广泛采用的机器对机器通信协议。它提供与平台无关、安全可靠的框架,用于设备、服务器与应用之间的数据交换。与旧版OPC标准不同,OPC-UA支持现代技术、允许结构化数据建模,并为跨平台与跨网络的可扩展性设计。其稳定性与互操作性使其成为需要一致、实时、厂商中立通信的工业首选。
您将学到什么?
本指南将分步骤说明如何将OPC-UA设备集成至ThingsBoard CE。您将学会如何安装与配置ThingsBoard IoT Gateway、设置OPC-UA连接器并建立与OPC-UA服务器的连接。我们还将演示如何映射数据点、向ThingsBoard发送遥测。完成本指南后,您将建立起可在ThingsBoard CE中无缝监控与分析OPC-UA设备数据的运行环境。
前提条件
-在配置网关前,请确保ThingsBoard服务已运行。您可参考
安装指南手动安装ThingsBoard CE。
-继续前请确保本机已安装并正确配置Docker。若尚未安装,可从Docker官网下载并按您所用系统的安装指南完成安装。
OPC-UA服务器结构概览
本指南将使用Prosys OPC-UA仿真服务器作为示例OPC-UA设备。其访问地址为:
1
| opc.tcp://0.0.0.0:53530/OPCUA/SimulationServer
|
我们将在网关连接器配置中使用 host.docker.internal 代替 0.0.0.0,以允许Docker容器访问宿主机的网络。
该仿真服务器提供了一组预定义节点,可用于模拟真实的工业设备。
其结构如下所示:

在本示例中,我们将重点关注以下节点:
Root.Objects.OPC-UA_PLC -包含所有相关数据点的父设备节点:
- Root.Objects.OPC-UA_PLC.
Humidity -表示湿度值。我们将此节点映射至ThingsBoard CE作为时序数据。
- Root.Objects.OPC-UA_PLC.
Temperature -表示温度值。我们也将此值作为时序数据发送至ThingsBoard CE。
- Root.Objects.OPC-UA_PLC.
Pressure -表示压力测量值,将作为时序数据存储在ThingsBoard CE中。
- Root.Objects.OPC-UA_PLC.
FirmwareInformation -包含设备固件元数据的子节点:
- Root.Objects.OPC-UA_PLC.FirmwareInformation.
Version -固件版本号。我们将其映射至ThingsBoard CE作为设备属性。
- Root.Objects.OPC-UA_PLC.FirmwareInformation.
UpdatedDate -固件最后更新时间。此值也将作为设备属性发送至ThingsBoard CE。
通过使用这些节点,您将了解如何从OPC-UA设备中提取实时遥测数据(Humidity、Temperature、Pressure)和静态属性(固件信息),然后将它们转发至ThingsBoard CE进行监控和可视化。
步骤1.在ThingsBoard上创建新的网关设备
首先,按照以下步骤向您的ThingsBoard实例添加一个网关设备:
<a href="/images/gateway/dashboard/gateway-getting-started-1-ce.png title:进入"**实体**" > "**网关**"选项卡。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-1-ce-preview.png title:进入"**实体**" > "**网关**"选项卡。" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-2-ce.png title:点击"**+**"按钮,输入网关设备名称(例如"My Gateway"),并选择设备配置文件。点击"**创建**"按钮。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-2-ce-preview.png title:点击"**+**"按钮,输入网关设备名称(例如"My Gateway"),并选择设备配置文件。点击"**创建**"按钮。" itemprop="thumbnail" alt=''> </a>
要启动网关,请按照以下步骤操作:
<a href="/images/gateway/dashboard/gateway-getting-started-3-ce.png title:选择并点击新创建的网关,点击右上角的**"启动命令"**按钮。" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-3-ce-preview.png title:选择并点击新创建的网关,点击右上角的**"启动命令"**按钮。" itemprop="thumbnail" alt=''> </a>
运行网关Docker镜像后,您可以在终端中看到以下日志:

步骤2.添加新的OPC-UA连接器
接下来添加一个OPC-UA连接器,该连接器将从模拟OPC-UA设备读取前面描述的数据并发送到已创建的网关。要创建连接器,请按照以下步骤操作:
<a href="/images/gateway/dashboard/gateway-getting-started-7-ce.png title:点击右侧面板上的"**连接器配置**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-7-ce-preview.png title:点击右侧面板上的"**连接器配置**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-8-ce.png title:点击"**+ 添加连接器**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-8-ce-preview.png title:点击"**+ 添加连接器**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/dashboard/gateway-getting-started-opc-ua-9-ce.png title:从下拉菜单中选择"**OPCUA**"连接器类型,填写"**名称**"字段,将"**日志级别**"选择为"**INFO**",关闭"**使用默认值填充配置**"选项,然后点击"**添加**"按钮;" itemprop="contentUrl"> <img src="/images/gateway/dashboard/gateway-getting-started-opc-ua-9-ce-preview.png title:从下拉菜单中选择"**OPCUA**"连接器类型,填写"**名称**"字段,将"**日志级别**"选择为"**INFO**",关闭"**使用默认值填充配置**"选项,然后点击"**添加**"按钮;" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/opc-ua-connector/guides/connector-configuration.png title:选择"**高级**"配置模式,点击"**配置**"选项卡并粘贴连接器配置(_您可以在这些步骤下方找到配置内容_)。" itemprop="contentUrl"> <img src="/images/gateway/opc-ua-connector/guides/connector-configuration-preview.png title:选择"**高级**"配置模式,点击"**配置**"选项卡并粘贴连接器配置(_您可以在这些步骤下方找到配置内容_)。" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/opc-ua-connector/guides/connector-configuration-save.png title:点击"**保存**"按钮以应用更改。" itemprop="contentUrl"> <img src="/images/gateway/opc-ua-connector/guides/connector-configuration-save-preview.png title:点击"**保存**"按钮以应用更改。" itemprop="thumbnail" alt=''> </a>
OPC-UA配置:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
| {
"server": {
"url": "opc.tcp://host.docker.internal:53530/OPCUA/SimulationServer",
"timeoutInMillis": 5000,
"scanPeriodInMillis": 3600000,
"pollPeriodInMillis": 5000,
"enableSubscriptions": false,
"subCheckPeriodInMillis": 100,
"showMap": false,
"security": "Basic128Rsa15",
"identity": {
"type": "anonymous"
}
},
"mapping": [
{
"deviceNodeSource": "path",
"deviceNodePattern": "Root\\.Objects\\.OPC-UA_PLC",
"deviceInfo": {
"deviceNameExpression": "OPC-UA PLC",
"deviceNameExpressionSource": "constant",
"deviceProfileExpressionSource": "constant",
"deviceProfileExpression": "default"
},
"attributes": [
{
"key": "Firmware Version",
"type": "path",
"value": "${FirmwareInformation\\.Version}"
},
{
"key": "Updated",
"type": "path",
"value": "${FirmwareInformation\\.UpdatedDate}"
}
],
"timeseries": [
{
"key": "Humidity",
"type": "path",
"value": "${Humidity}"
},
{
"key": "Temperature",
"type": "path",
"value": "${Temperature}"
},
{
"key": "Pressure",
"type": "path",
"value": "${Pressure}"
}
],
"rpc_methods": [],
"attributes_updates": []
}
]
}
|
下面将连接器配置拆解为各个部分并逐一说明:
Server -定义网关如何连接和与OPC-UA服务器交互。其中对我们重要的参数如下:
url -指定服务器的TCP端点。此处指向本地Prosys仿真服务器opc.tcp://host.docker.internal:53530/OPCUA/SimulationServer。
pollPeriodInMillis -设置在未使用订阅时轮询节点值的间隔(本示例中为每5秒)。
security -设置OPC-UA安全策略。可选项包括Basic128Rsa15、Basic256和Basic256Sha256,取决于OPC-UA服务器的设置。
identity -定义网关向服务器的认证方式:此处为简化起见使用匿名认证。
Mapping -定义如何将OPC-UA服务器的节点数据映射至ThingsBoard设备:
deviceNodeSource和deviceNodePattern -源类型为path,模式匹配代表我们设备的根节点(Root.Objects.OPC-UA_PLC)。
deviceInfo -定义ThingsBoard设备名称和设备配置文件。本示例中使用常量值。
attributes -这些值将推送至ThingsBoard属性,通常为静态或不常变化的数据。我们使用相对路径配置属性数据映射。
timeseries -这些测量读数将显示在设备页面的”Latest Telemetry“选项卡下。我们同样使用相对路径配置时序数据映射。
步骤3.查看设备数据
要查看从网关上传的数据,请按照以下步骤操作:
<a href="/images/gateway/opc-ua-connector/guides/review-device-data-1.png title:导航至**实体** > **设备**页面,点击我们在"**deviceNameExpression**"字段中命名的已创建设备"**OPC-UA PLC**"。这将打开设备详情页面。然后切换到**"属性"**选项卡,查看在连接器中配置的属性。" itemprop="contentUrl"> <img src="/images/gateway/opc-ua-connector/guides/review-device-data-1-preview.png title:导航至**实体** > **设备**页面,点击我们在"**deviceNameExpression**"字段中命名的已创建设备"**OPC-UA PLC**"。这将打开设备详情页面。然后切换到**"属性"**选项卡,查看在连接器中配置的属性。" itemprop="thumbnail" alt=''> </a>
<a href="/images/gateway/opc-ua-connector/guides/review-device-data-2.png title:要查看设备的实时遥测数据,请导航至"**最新遥测**"选项卡。在这里,您将看到设备发送的遥测数据,包括"**humidity**"(湿度)、"**temperature**"(温度)和"**pressure**"(压力)等指标。此选项卡提供设备遥测数据的实时更新。" itemprop="contentUrl"> <img src="/images/gateway/opc-ua-connector/guides/review-device-data-2-preview.png title:要查看设备的实时遥测数据,请导航至"**最新遥测**"选项卡。在这里,您将看到设备发送的遥测数据,包括"**humidity**"(湿度)、"**temperature**"(温度)和"**pressure**"(压力)等指标。此选项卡提供设备遥测数据的实时更新。" itemprop="thumbnail" alt=''> </a>
总结
本指南演示了如何使用ThingsBoard IoT Gateway将OPC-UA设备连接至ThingsBoard CE。通过配置网关、设置OPC-UA连接器,并映射遥测数据(如湿度、温度和压力)和设备属性(如固件版本和更新日期),我们建立了从OPC-UA服务器到ThingsBoard的完整数据流。
借助此配置,您现在可以实时监控设备数据、在仪表板上进行可视化,并利用ThingsBoard的强大功能(如告警、规则链)来构建高级物联网方案。同样的方法可以扩展到真实的工业OPC-UA设备,实现系统与现代物联网平台的无缝集成。
使用Prosys仿真服务器的本示例只是一个开始。您现在可以根据自己的设备调整配置、扩展到多台服务器,并根据项目需求自定义数据映射。
下一步
探索与ThingsBoard主要功能相关的指南: