产品定价 立即试用
社区版
使用ThingsBoard IoT平台监测电能表
入门 文档 指南 安装 架构 API 常见问题
目录

使用ThingsBoard IoT平台监测电能表

image

Digicom设备旨在与ThingsBoardIoT平台互操作,提供必要设置与功能以便轻松集成,让您能够创建用于展示和监测数据与遥测的仪表板。本教程作为集成指南,侧重搭建专业监测应用,涵盖Digicom设备的基本要点及通过MQTT协议集成对应的ThingsBoard配置。image

所述场景包括:Digicom设备连接到MQTT broker,ThingsBoard通过MQTT集成订阅这些数据流,并通过特定数据转换器将有效载荷转换为ThingsBoard消息格式。开始前:要使本教程生效,需准备:

  • Digicom设备,如DRN500或DRN3000多功能路由器,固件1.10或更高
  • 云端或本地部署的ThingsBoard实例,且具有可公开访问的地址

ThingsBoard设置

首先激活ThingsBoard账户(云端或本地)。可在”更多参考资料与指南”章节找到安装与设置个人ThingsBoard实例的详细说明。登录并完成配置准备。

创建MQTT集成

我们先定义数据入口部分。MQTT集成用于连接外部MQTT broker、订阅其数据流,并将设备任意类型的有效载荷转换为ThingsBoard消息格式。典型用途是当设备已连接到外部MQTT broker或其它具备MQTT后端的IoT平台、连接提供商时使用。进入”集成中心” → “集成“页面,点击”+“按钮创建新集成。选择类型”MQTT“,点击”下一步“:

image


下一步为 上行数据转换器 命名,选择「TBEL」,清空Decoder函数的全部内容。

文档信息图标

说明: ThingsBoard Expression Language (TBEL) 是UDF原始编程语言JavaScript的优化且高效的替代方案。推荐使用TBEL,JavaScript仍将继续支持。

将以下TBEL代码粘贴到Decoder函数中,然后点击「下一步」。```js // ** Digicom数据Converter **

var variableNamesMap = {“Volts”:”voltage”,”Ampere”:”current”,”Frequency”:”hertz”,”kVA”:”power”};

var载荷 = decodeToJson(载荷); if (载荷.modbus == null) { return;}

var遥测 = []; var telemetries = 载荷.modbus.数据[0].samples; foreach(sample: telemetries) { var values = {}; var varName = variableNamesMap[sample.reg]; if (varName != null) { values[varName] = sample.值; 遥测.push({ ts: Long.parseLong(sample .timestamp) * 1000, values: values }); }}

var result = { deviceName: 载荷.serialnum, deviceType: 载荷.类型, 属性: { model: 载荷.model, integrationName: metadata[‘integrationName’], }, 遥测: 遥测};

/** Helper functions ‘decodeToString’ and ‘decodeToJson’ are already built-in **/

return result;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{:.copy-code.expandable-10}

![image](/images/samples/digicom/integ-MQTT-2.png)

<br>
在 [下行数据转换器](/docs/user-指南/integrations/#downlink-数据-converter){:target="_blank"} 选项卡中点击「**Skip**」。![image](/images/samples/digicom/integ-MQTT-3.png)

<br>
填写「**连接**」选项卡:

- 设置外部MQTT broker的「**主机**」地址和「**端口**」;
- **Credentials类型** 选择「**基本**」,填写「**用户名**」和「**密码**」(用于在外部MQTT broker上鉴权);
- 设置以下 **Topic**:

digicom/+/数据/modbus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{: .copy-code}

- 选择 **QoS 1**;若要预先测试,可点击「**Check连接**」。![image](/images/samples/digicom/integ-MQTT-4.png)

<br>
点击「**添加**」完成集成设置。![image](/images/samples/digicom/integ-MQTT-5.png)

<br>
若连接成功,MQTT集成状态将显示「**活跃**」。否则将保持「非活跃」,直到首次与外部broker建立连接。若连接失败,请随后仔细核对地址、端口与凭证。![image](/images/samples/digicom/integ-MQTT-6.png)

## 检查并测试数据转换器

[数据转换器](/docs/user-指南/integrations/#数据-converters){:target="_blank"} 负责将设备传入的数据结构转换为适合ThingsBoard的遥测与属性数据格式。在此处,我们可在收到设备真实数据之前模拟并测试转换过程。进入「**Integration center**」的「**数据转换器**」页面。点击「**Modbus数据**」转换器,进入编辑模式。![image](/images/samples/digicom/test-数据-converter-1.png)

<br>
进入编辑模式后,「**测试解码器函数**」按钮将可用。点击进入测试环境。![image](/images/samples/digicom/test-数据-converter-2.png)

<br>
将下表JSON报文代码复制到「**载荷content**」选项卡,点击「**Test**」按钮,查看「**Output**」选项卡。```json
{"timestamp":"1741688471","serialnum":"50012345","类型":"Router500","model":"8D5913","method":"event","msg_cnt":"1494","完成":"true","modbus": {"数据": [{"设备":"Energy_Meter","event":"read","samples": [{"timestamp":"1741869373","reg":"Volts","unit":"V","值":"228.800000","deferred":"false"}, {"timestamp":"1741869374","reg":"Ampere","unit":"A","值":"0.868000","deferred":"false"}, {"timestamp":"17418693735","reg":"Frequency","unit":"Hz","值":"50","deferred":"false"}, {"timestamp":"1741869376","reg":"kVA","unit":"kVA","值":"1.491000","deferred":"false"}]
 }]
 }
}

image


若此前配置正确,将看到转换结果:

1
2
3
4
5
6
{"deviceName":"50012345","deviceType":"Router500","属性": {"model":"8D5913","integrationName":"MQTT integration"},"遥测": [{"ts": 1741869373000,"values": {"voltage":"228.800000"}
 }, {"ts": 1741869374000,"values": {"current":"0.868000"}
 }, {"ts": 17418693735000,"values": {"hertz":"50"}
 }, {"ts": 1741869376000,"values": {"power":"1.491000"}
 }]
}

数据入口阶段已完成且正常工作。点击「取消」,再点击「X」图标退出编辑模式。接下来进行设备设置。## 设备设置

登录设备。输入 用户名密码,点击「Login」按钮。image


本指南将使用Modbus功能从电能表读取数据,并通过MQTT协议将数据发送到ThingsBoard。我们主要说明Modbus与MQTT配置,假定设备已正确配置互联网访问,且Modbus物理连接已正确完成。从下拉菜单选择「Modbus」–「COM配置」。image


将Modbus串口 已启用 设为启用,根据电能表运行参数设置 类型speed数据格式。点击「保存」按钮。image


从下拉菜单进入「Modbus」–>「Modbus Master」。点击「添加」按钮。image


将Modbus Master配置设为 已启用,设置 名称ID连接类型COM类型设置rates注册formats。将 数据目标 设为 MQTT,然后点击「保存」按钮。image


下面定义从电能表读取的4组示例数据(电压、电流、频率、kVA)并作为时序发送到ThingsBoard,用于后续展示与仪表板。点击「Requests」按钮。image


填写电压(Volts)所需参数,点击「保存」按钮。image


点击「添加」按钮,按相同方式配置电流(Ampere)、频率(Hertz)和功率(kVA)。最终效果如下。image


若配置正确, 列会按指定Scan rate显示并更新测量数据。点击「Test」可立即触发一次数据读取。
从下拉菜单选择 ModbusMQTT配置image


填写外部Broker的MQTT目标参数,如 服务器地址端口用户名密码(本例使用 MQTT 基本认证)。设置设备发送数据的 Publishing topic。默认设备Modbus数据发布到以下topic结构:

1
digicom/<设备SN>/数据/modbus

点击「保存」按钮。image


需重启设备以使新配置生效。从下拉菜单选择 设备 –「Reboot」。image


点击「Reboot」并确认image

等待设备重新就绪后,返回ThingsBoard账户,在「设备」页面检查设备是否出现。## 检查设备

从左侧菜单栏进入「Entities」的「设备」页面。当设备首次向ThingsBoard连接的外部MQTT broker发布数据后,新的设备应会显示。image


检查遥测与属性数据。点击设备行(非复选框),进入「最新遥测」选项卡。此面板显示数据转换器从数据流中提取的最新测量值。进入「属性」选项卡。此面板显示数据转换器从数据流中提取的最新Client和Server属性。image


数据已在系统中,接下来可创建简单仪表板。## 创建仪表板

ThingsBoard提供强大功能——创建和自定义交互式可视化,即Dashboards。这些仪表板是高效监测与管理数据和设备的工具。通过左侧主菜单进入「Dashboards」页面。点击屏幕右上角「+」,从下拉菜单选择「创建新仪表板」。在弹出对话框中输入仪表板标题,描述可选。点击「添加」。image


创建后仪表板会自动打开,可立即添加部件。点击屏幕顶部的「添加widget」按钮,或点击屏幕中央较大的「添加新部件」图标(若为该仪表板上首个部件)。image


找到「Analogue gauges」部件包并点击。image


选择「Radial gauge」部件。image


出现「添加Widget」窗口。在「设备」字段指定设备「50012345」作为数据源。将遥测键「power」设为 数据键。向下滚动并按需设置其它项,如标题、单位、仪表量程最小最大值。若要进一步自定义,进入「高级」调整部件外观与样式。点击「添加」。image


已添加显示当前功率读数的部件。image


同样为另外三个遥测值(数据keys)添加部件,并在仪表板上合理排列。完成后点击「保存」保存仪表板。image

更多参考资料与指南

可在在线文档中查阅更多关于ThingsBoard使用、创建customersusersassets,以及让dashboards更强大的指南。## 下一步