海普发 4G 断路器接入 ThingsCloud
海普发 4G 断路器接入 ThingsCloud
本示例为您展示如何快速将海普发 4G 断路器接入 ThingsCloud 平台,以实现断路器的远程开合闸控制,以及电力能耗数据的采集。
海普发 4G 断路器具有以下的特点:
- 保护功能全面:支持传统的断路器保护功能,如过载保护、短路保护、漏电保护和手动操作把手。
- 多参数检测:支持对电压、电流、功率、电量、温度等多个电力参数的检测。
通过将断路器接入 ThingsCloud 平台,客户实现在整体项目中,对断路器的智能化管理和全方位监控,从而提升了整体的数字化管理水平,带来以下优势:
- 统一管理物联网设备:客户将断路器和其它物联网设备进行统一管理,无需跨越多个平台来处理不同设备的数据和控制。
- 远程和智能控制:通过 ThingsCloud,客户可以远程对断路器进行开合闸控制,或者根据预设的条件和其它设备的状态进行自动化控制,实现智能联动。
- 能耗数据采集与分析:通过采集和分析断路器的电力能耗数据,客户能够更好地了解设备运行状态,优化能源使用,降低运营成本。
- 可视化管理:借助 ThingsCloud 的可视化看板和 App 面板,客户可以直观地监控和管理断路器的状态与性能指标,实现更高效的运维。
- 多用户与告警系统:支持多用户体系,确保不同权限的用户能够有效管理与监控设备。同时,丰富的告警通知功能确保当断路器出现异常时,客户能够及时收到通知,进行快速响应。
- 开放 API 集成:ThingsCloud 提供的开放 API 使得断路器的数据和控制功能可以轻松集成到客户的其他系统中,实现更高层次的业务应用。
感谢海普发公司李工提供对接演示👍
快速创建设备类型
首先在 ThingsCloud 控制台中,为断路器创建设备类型,推荐您可以直接使用产品 ID 3762681424
来创建设备类型,已包含了基本的功能,您可以直接使用。
提示
学习如何通过产品 ID 快速创建设备类型,请浏览 发布设备类型。
如果想了解设备类型的配置过程和原理,可阅读末尾的 手动配置设备类型。
创建设备
接着,创建一个新的设备,关联到刚创建的设备类型下。
进入设备的 连接 页面中,获得以下 MQTT 参数,如下图:
将参数提供给海普发公司的技术支持人员,或在厂商的指导下自行完成断路器硬件端的配置。
这一步完成后,断路器设备会显示在线,如下图:
控制断路器开合闸
进入控制台的设备详情页,可以看到设备的基本属性,拨动开关控制,就可以向断路器下发开合闸指令,由于开合闸的动作需要一定的时间,当设备完成动作后,会上报开关状态。
您也可以直接在设备的调试页面中,手动下发开合闸指令,指令是 JSON
格式,如下图:
更多的指令说明,请您咨询设备厂商。
浏览电力能耗数据
断路器默认会按一定周期主动上报电力数据,在设备详情页可以看到最新的数据,如下图:
除此之外,您可以执行平台的任务,向设备下发读取数据的指令,要求设备立即上报数据。如下图:
您可以将任务设置为定时模式,例如每隔10分组读取一次数据,如下图:
在 App 上查看数据和控制开合闸
除了在控制台查看数据和下发控制,ThingsCloud 提供了多用户体系的 App,您可以自行编辑 App 的设备面板,如下图:
制作可视化看板
提示
此处略过,请浏览: 可视化看板示例。
配置告警通知
您可以自行根据实际需要,添加告警规则,如下图:
每个告警规则可以设置多种通知方式,可以发送给通知组,也可以发送给设备所属用户,如下图:
还可以设置告警规则的有效时间段,例如有些场景下在特定时间段不执行告警检查,如下图:
手动配置设备类型
如果您想学习配置的过程,以及实现更多自定义的功能,可以继续阅读以下内容。如果您仅限于常规使用,阅读以上内容即可。
添加属性定义
我们在设备类型中,可以自定义断路器的所有属性的名称,并设置属性的有效范围。
提示
理解什么是属性定义,请阅读 功能定义
消息规则解析电力数据
本例中,使用了自定义数据流,在设备类型中通过消息规则,从设备上报的原始数据中提取出我们需要的数据,进入设备的属性中。
消息规则中编写了一段简单的 JavaScript
函数,如下:
module.exports = function (identifier, data) {
/**
* 参数:
* identifier: 上报的自定义数据流标识符
* data: 上报的自定义数据,二进制 Buffer格式
* 返回值:
* attributes: 生成设备属性
*/
var attributes = {};
const json = Cloud.jsonParse(data.toString());
if ([202, 208].includes(json.bid) && json.Children && json.Children[0]) {
const data = json.Children[0];
const ClientID = data.ClientID;
const Voltage = data.Voltage;
const Current = data.Current;
const Power = data.Power;
const Energy = data.Energy;
const Temperature = data.Temperature;
attributes.ClientID = ClientID;
attributes.Va = Voltage[0]/1000;
attributes.Vb = Voltage[1]/1000;
attributes.Vc = Voltage[2]/1000;
attributes.Ca = Current[0];
attributes.Cb = Current[1];
attributes.Cc = Current[2];
attributes.Pa = Power[0];
attributes.Pb = Power[1];
attributes.Pc = Power[2];
attributes.Ea = Energy[0];
attributes.Eb = Energy[1];
attributes.Ec = Energy[2];
attributes.T1 = (Temperature[0] || 0)/100;
attributes.T2 = (Temperature[1] || 0)/100;
attributes.T3 = (Temperature[2] || 0)/100;
attributes.T4 = (Temperature[3] || 0)/100;
attributes.SwitchStatus = data.SwitchStatus == 1;
attributes.Mode = data.Mode;
}
return attributes;
}
提示
学习消息规则基础,请阅读 消息规则
消息规则生成开合闸控制指令
这里我们还用到一个属性下发消息规则,负责将对设备下发开关属性,转成设备可以识别的指令。通过设备调试日志,可以看到转换过程,如下图:
使用属性下发规则,生成自定义数据流下发,如下图:
这个消息规则中的云函数如下图:
module.exports = function (push_attributes) {
/**
* push_attributes: 下发的属性对象,作为函数参数传入。
* data: 构造下发的自定义数据对象,下发到硬件。
*/
var data = {};
if (push_attributes.SwitchControl === true) {
data = {
type: "json",
msg: {
bid: 202,
mid: "6F9619FF-8B86-D011-B42D-00C04FC964FF",
Children: [{ ClientID: "RP48100042", MoterOperation: 1 }],
},
};
} else if (push_attributes.SwitchControl === false) {
data = {
type: "json",
msg: {
bid: 202,
mid: "6F9619FF-8B86-D011-B42D-00C04FC964FF",
Children: [{ ClientID: "RP48100042", MoterOperation: 2 }],
},
};
}
return data;
};
通过任务随时读取数据
前边我们提到的,用于向设备下发读取数据的任务,也是在设备类型中创建的,如下图:
同样,您可以根据设备的指令手册,利用任务下发来执行更多的功能。
提示
学习任务,请阅读 任务