· Zen HuiFer · 操作文档  · 3 min read

MQTT解析脚本

在本文中,我们详细介绍了如何在Go IoT开发平台中编写MQTT客户端解析脚本。通过具体的案例程序,您将学习到如何处理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 数据字段 他们的含义分别如下:

  1. Time: 设备数据生产时间,秒级时间戳。
  2. DataRows: 核心信号数据点位。是数组结构其中键为Name和Value,Name表示信号名称,Value表示信号数据值。
  3. DeviceUid: MQTT客户端ID,请和当前行数据的唯一码对应。请一定要检查仔细

image-20240806134823594

  1. IdentificationCode: 设备标识码,如果你的订阅主题没有通配符,这个数据信息请和DeviceUid保持一致。若出现通配符请和DeviceUid做好差异化区分。

注意事项:

  1. DeviceUid这个是在返回值中写死的。不要做动态生成。
  2. IdentificationCode原则上需要强制和DeviceUid做差异化,即两个不能相同。

数据链路

Influxdb脚本执行器Go IoTMQTT服务器设备Influxdb脚本执行器Go IoTMQTT服务器设备上报数据监听主题执行JavaScript脚本写入数据

在写入Influxdb的时候按照如下数据组装规则进行组装。

  1. bucket:项目固定配置。

  2. Measurement:动态计算而得 ${协议}_${DeviceUid}_${IdentificationCode}

func genMeasurement(dt DataRowList, protocol string) string {
	return protocol + "_" + dt.DeviceUid + "_" + dt.IdentificationCode
}
Back to Blog

Related Posts

View All Posts »
操作文档

操作文档

本文详细介绍了项目操作的前提条件、MQTT客户端管理的新增和编辑操作步骤,提供了图文并茂的操作指南,帮助用户顺利完成相关操作。

操作文档

操作文档

本文详细介绍了项目操作的前提条件、MQTT客户端管理的新增和编辑操作步骤,提供了图文并茂的操作指南,帮助用户顺利完成相关操作。

多协议支持

多协议支持

本文介绍了在 Go IoT 开发平台中如何使用 WebSocket、MQTT、TCP/IP、COAP 协议进行数据传输,并提供了相关端口配置和 Nginx 配置示例,帮助开发者更好地实现多协议支持。

COAP方式接入设备

COAP方式接入设备

本文详细介绍了如何在Go IoT开发平台中使用COAP协议接入设备,包括接入流程、代码示例和注意事项,帮助开发者快速上手并实现设备的高效接入。