7.4 JS模板自定义JSON格式

GC支持用户自定义模板,用于生成不同格式的实时数据、控制主题、重启主题等订阅到的数据的解析。在此以实时数据主题的模板为例,介绍如何新建自定义模板。具体操作如下:

  1. Mqtt模板在配置工具安装目录下mqtt文件夹下,其中realtime文件夹为实时数据的模板目录;

  2. 在realtime文件夹下新建一个js,在其中进行模板的编写;

  3. 参照其他模板,如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"
       }
   }

模板最后返回主题需要上传的字符串;

  1. 模板编写完成之后,需要在配置工具中选择新建的模板;

  2. 可以先用配置工具“PC端运行工程”测试模板能否正确运行;

  3. 需要下载模板到网关:在“系统设置”中选择“开发者模式”,密码为“luomi”,选择“下载MQTT模板”,之后下载工程,网关就会根据新建的模板上传数据。

    下载MQTT模板

results matching ""

    No results matching ""