金鸽BL110
插件图片
金鸽BL110
金鸽BL110
功能介绍

金鸽BL110网关设备解析脚本

按照金鸽BL110网关文档第84、85页说明

按照数据读写标志的分类将网关分成7个子设备

如果用户使用到某个标志分类就需要创建这个分类的子设备,子设备地址的填写必须在下例中

```

DO,DI,AI,REG64,REG2000,REG20128,REG20256

```

例如:设置了AI0,就需要有子设备地址是AI的子设备;如收到数据AI0=1,在平台数据管理中显示的数据标签也是AI0,值是1

上行脚本
function encodeInp(msg, topic) {
    // 将设备自定义msg(自定义形式)数据转换为json形式数据, 设备上报数据到物联网平台时调用
    // 入参:topic string 设备上报消息的 topic
    // 入参:msg byte[] 数组 不能为空
    // 出参:string
    // 处理完后将对象转回字符串形式
    // 例,byte[]转string:var msgString = String.fromCharCode.apply(null, msg);
    // 例,string转jsonObj:msgJson = JSON.parse(msgString);
    // 例,jsonObj转string:msgString = JSON.stringify(msgJson);
    var msgString = String.fromCharCode.apply(null, msg);
    var jsonObj = JSON.parse(msgString);
    var newMsg = {};
    var DO = {}
    var DI = {}
    var AI = {}
    var REG64 = {}
    var REG2000 ={}
    var REG20128 ={}
    var REG20256 ={}
    for (var key in jsonObj.sensorDatas) {
        var c_key = jsonObj.sensorDatas[key].flag;
        // delete jsonObj.sensorDatas[key]["flag"];
        // newMsg[c_key] = jsonObj.sensorDatas[key];
        if (c_key.slice(0,2) == "DO"){
            DO[c_key] = jsonObj.sensorDatas[key].switcher;
        }else if (c_key.slice(0,2) == "DI"){
            DI[c_key] = jsonObj.sensorDatas[key].switcher;
        }else if (c_key.slice(0,2) == "AI"){
            AI[c_key] = jsonObj.sensorDatas[key].value;
        }else if (c_key.slice(0,3) == "REG"){
            num = c_key.slice(3)
            if (Number(num) <=127){
                REG64[c_key] = jsonObj.sensorDatas[key].switcher;
            } else if (Number(num) <=20127){
                REG2000[c_key] = jsonObj.sensorDatas[key].value;
            } else if (Number(num) <=20254){
                REG20128[c_key] = jsonObj.sensorDatas[key].value;
            } else if (Number(num) <=20508){
                REG20256[c_key] = jsonObj.sensorDatas[key].value;
            }
        }
    }
    newMsg["DO"] = DO
    newMsg["DI"] = DI
    newMsg["AI"] = AI
    newMsg["REG64"] = REG64
    newMsg["REG2000"] = REG2000
    newMsg["REG20128"] = REG20128
    newMsg["REG20256"] = REG20256
    msg = JSON.stringify(newMsg);
    return msg;
}
下行脚本
function encodeInp(msg, topic) {
    //编写脚本处理从设备发来消息msg,转为平台可接收的消息规范
    //将msg转为json对象,如:var jsonObj = JSON.parse(msg);
    //处理完后将jsonObj转回字符串,如:msg = JSON.stringify(jsonObj);
    // 将设备自定义msg(自定义形式)数据转换为json形式数据, 设备上报数据到物联网平台时调用
    // 入参:topic string 设备上报消息的 topic
    // 入参:msg byte[] 数组 不能为空
    // 出参:string
    // 处理完后将对象转回字符串形式
    // 例,byte[]转string:var msgString = String.fromCharCode.apply(null, msg);
    // 例,string转jsonObj:msgJson = JSON.parse(msgString);
    // 例,jsonObj转string:msgString = JSON.stringify(msgJson);
    var msgString = String.fromCharCode.apply(null, msg);
    var jsonObj = JSON.parse(msgString);
    var newMsg = {};
    newMsg["sensorDatas"]=[]
    for (var key in jsonObj){
        for(var v_key in jsonObj[key]) {
            d = {}
            d["flag"] = v_key
            if (v_key.slice(0,2) == "DO"){
                d["switcher"] = jsonObj[key][v_key];
            }else if (v_key.slice(0,2) == "DI"){
                d["switcher"] = jsonObj[key][v_key];
            }else if (v_key.slice(0,2) == "AI"){
                d["value"] = jsonObj[key][v_key];
            }else if (v_key.slice(0,3) == "REG"){
                num = v_key.slice(3)
                if (Number(num) <=127){
                    d["switcher"] = jsonObj[key][v_key];
                } else {
                    d["value"] = jsonObj[key][v_key];
                }
            }
            newMsg["sensorDatas"].push(d)
        }
        
    }
    newMsg["down"] = "down"
    msg = JSON.stringify(newMsg);
    return msg;
}
插件信息
作者:
ThingsPanel
类别:
解析脚本
公司:
金鸽钡铼
产品名称:
BL110
协议类型:
MQTT
版本号:
v1.0
发布日期:
2023-07-28 14:59
下载量排行
Github
Gitee
微信交流群
QQ交流群
北京极益科技有限公司 版权所有 ICP:京ICP备15045763号-12