智慧空开_MQTT直连采集
1、准备工作
本次测试所需硬件为安科瑞智慧空开,安科瑞断路器两组以及各类线材:
安科瑞智慧空开,型号:ASCB1-MS-CE
购买地址:
RS485转USB工具,需自行购买
准备好设备后按照厂家相关说明书接线,智慧空开需要接入一组220VAC电源供电以及用RS485转USB工具连接上位机(PC)调试,智慧空开需要网线入网。
💡 补充
官方文档
官方配置工具
2、通过配置工具设置设备参数
2-1、配置工具连接设备
首先需要使用RS485转USB工具将智慧网关与上位机连接,然后打开厂家提供的配置工具:
💡 提示
打开设备管理器-端口(COM和LPT)查看当前设备连接COM口是哪一个,该设备默认波特率为38400。
2-2、修改网络设置
💡 提示
该设备支持上报时间最低值为60s,所以这里改为了60s,如果设置值低于60s则设备不会主动上报实时数据。
💡 注意
通过官方配置工具修改网络设置时,需要先读取一次再写入,写入后稍等2s,待设备保存配置后再读取一次查看是否修改成功。
💡 注意
测试中使用服务器地址以及端口需要根据实际情况填写。
体验账号
服务器地址:101.133.234.90
端口号:1883
❓ 我的设备不能上网怎么办?
答:如果是接入以太网,则在插上网线后按照动图中设置为DHCP模式,若是4G或者WIFI需确认设备是否支持这些功能以及SIM卡是否能上报、WIFI尽量连接2.4G通道。
3、Thingskit配置
3-1、创建产品
💡 提示
创建产品时需要按照设备的数据格式来选择设备的类型,本文档中选择的是MQTT直连设备,因为设备本身的topic不支持修改而平台只支持直连设备修改topic,所以这里需要选择MQTT直连设备。
💡 提示
设备的实时数据发布topic为data/up/设备SN,这里为了兼容多台设备接入,将topic修改为了data/up/+。
3-2、创建物模型
❓ 我如何确定物模型的标识符是什么?
物模型是标识符是根据设备上报数据中的json键值对的键名称来确定的(数据格式按照官方文档查询),本文档中为了区分不同断路器的数据,在键名称中加上了设备规范的断路器名称(如1_1、1_2),所以数据点的标识符是1_1Temp1、1_2Temp1。
💡 提示
创建新物模型后,需要点击发布上线才能生效。
3-3、创建设备
❓ 如何确定MQTT Basic要填写什么?
答:MQTT Basic是建立MQTT通信的认证信息,本文档中的认证信息是根据官方文档填写的:
客户端ID 设备SN
用户名 acrel
密码 acrel
❓ 如何快速获取设备SN?
答:可以通过设备配置软件获得。
💡 提示
由于之前的步骤以及将设备的网络配置指向了本文档的测试服务器,所以当设备创建并修改为正确的MQTT Basic后设备状态变为了“在线”。
3-4、创建规则链转换脚本
//遍历对象中所有键值对并在键值对前添加字符串
function addPrefixToKeys(obj, string) {
var a = {};
for (var key in obj) {
a[string + key] = obj[key];
}
return a;
}
//过滤产品名称,只让本文档中创建的产品下设备指向该脚本
if (metadata.deviceType == "安科瑞智慧空开") {
var reported = msg.reported;
//遍历json对象中所有的键名
var keys = Object.keys(reported);
//取第三个键名
var value = keys[2];
//判断是否符合测试的实时数据格式,判断条件可以根据实际场景修改,也可以去掉该判断
if (value == '1_1' || value == '1_2') {
//需要键名符合限制,但是直接用.不能取到对象,改用[],并且将所取数据点的键名加上所属断路器编号
var reReported = addPrefixToKeys(reported[value],
value);
}
}
msg = reReported;
//返回所需的值
return {
msg: msg,
metadata: metadata,
msgType: msgType
};
💡 提示
规则链转换脚本需要将状态改变为启用才能生效,同一时间只能启用一个规则链转换脚本。
💡 注意
该脚本是根据产品名称过滤哪些数据需要通过脚本处理的,所以在本脚本上进行扩展需要注意判断条件的更改。
4、数据验证
💡 提示
由于设备的实时数据数据点过多,这里只挑选了断路器1、2的温度做数据展示,如果需要对比更多数据点,在产品中添加对应标识符的物模型即可。