· Zen HuiFer · 操作文档 · 3 min read
MQTT解析脚本
在本文中,我们详细介绍了如何在Go IoT开发平台中编写MQTT客户端解析脚本。通过具体的案例程序,您将学习到如何处理MQTT客户端上报的数据,并确保返回值包含必要的数据字段。本文还提供了每个字段的详细解释,帮助您更好地理解和应用这些概念。
在 Go IoT 开发平台中允许用户编写针对不同MQTT客户端的解析脚本,这个解析脚本需要能够正常执行。 案例程序如下
function main(nc) {
var dataRows = [
{ "Name": "Temperature", "Value": "23" },
{ "Name": "Humidity", "Value": "30" },
{ "Name": "A", "Value": nc },
];
var result = {
"Time": Math.floor(Date.now() / 1000),
"DataRows": dataRows,
"DeviceUid": "5",
"IdentificationCode":"5",
"Nc": nc
};
return [result];
}
在上述程序中通过MQTT客户端上报的数据会使用字符串的方式传输到 main
函数中(nc是参数名称) 这个内容请不要调整。
关于返回值,必须包含 Time、DataRows、DeviceUid、IdentificationCode 数据字段 他们的含义分别如下:
- Time: 设备数据生产时间,秒级时间戳。
- DataRows: 核心信号数据点位。是数组结构其中键为Name和Value,Name表示信号名称,Value表示信号数据值。
- DeviceUid: MQTT客户端ID,请和当前行数据的唯一码对应。请一定要检查仔细
- IdentificationCode: 设备标识码,如果你的订阅主题没有通配符,这个数据信息请和DeviceUid保持一致。若出现通配符请和DeviceUid做好差异化区分。
注意事项:
- DeviceUid这个是在返回值中写死的。不要做动态生成。
- IdentificationCode原则上需要强制和DeviceUid做差异化,即两个不能相同。
数据链路
在写入Influxdb的时候按照如下数据组装规则进行组装。
bucket:项目固定配置。
Measurement:动态计算而得
${协议}_${DeviceUid}_${IdentificationCode}
func genMeasurement(dt DataRowList, protocol string) string {
return protocol + "_" + dt.DeviceUid + "_" + dt.IdentificationCode
}