7.4 JS模板自定义JSON格式
GC支持用户自定义模板,用于生成不同格式的实时数据、控制主题、重启主题等订阅到的数据的解析。在此以实时数据主题的模板为例,介绍如何新建自定义模板。具体操作如下:
Mqtt模板在配置工具安装目录下mqtt文件夹下,其中realtime文件夹为实时数据的模板目录;
在realtime文件夹下新建一个js,在其中进行模板的编写;
参照其他模板,如default.js:
(function() { var timestamp = Math.round(new Date().getTime() / 1000) result = { "clientid": base["Clientid"], "time": timestamp.toString() }; data.forEach(function(tag) { if (!result[tagExt[tag.Id].deviceCode]) { result[tagExt[tag.Id].deviceCode] = {}; } result[tagExt[tag.Id].deviceCode][tagExt[tag.Id].tagCode] = parseFloat(tag["Val"]) }); return JSON.stringify(result); })();
其中 (function() {
......
})();
为主体,js需要写在其中;
data为经过过滤后的数据,格式为
[ { "Id":"Device1.tag0001", "Status":"Good", "Timestamp":1574926563, "Val":"1.000000" }, { "Id":"Device1.tag0002", "Status":"Good", "Timestamp":1574926563, "Val":"3.000000" } ]
base为mqtt配置填写的参数;
tagExt为tag点的额外属性,包括采集页面中的名称(description)、tag点所在的设备名称、读写类型、tagID,还可以包含“高级参数”中填写的数据(“高级参数”需要填写json格式的数据)
{
"Device1.tag0001":{
"description":"",
"deviceCode":"Device1",
"objectType":"AV",
"tagCode":"tag0001"
},
"Device1.tag0002":{
"description":"",
"deviceCode":"Device1",
"objectType":"AV",
"tagCode":"tag0002"
}
}
模板最后返回主题需要上传的字符串;
模板编写完成之后,需要在配置工具中选择新建的模板;
可以先用配置工具“PC端运行工程”测试模板能否正确运行;
需要下载模板到网关:在“系统设置”中选择“开发者模式”,密码为“luomi”,选择“下载MQTT模板”,之后下载工程,网关就会根据新建的模板上传数据。