物联网设备通常是一类功能简单,软硬件资源极度精简的设备,因此物联设备往往根据设备自身特点定制数据协议,数据格式高度编码,可读性较差
物联网场景应用开发时,需要获取到物联网设备采集到的业务数据,需要对设备高度编码的原始数据进行解析处理,或将设备的控制和配置命令编码为设备可识别的命令
LinkOS通过物模型功能定义统一约定物联网设备在平台上的数据表现,通过数据解析将设备原始数据转化为可读性强,开发友好的JSON格式,降低场景应用对接难度,减少场景应用重复解析工作,并且可以进一步使用规则引擎、告警规则等功能进行无代码业务功能开发

数据解析

数据上行解析

将设备上传的原始数据解析为产品开发时定义的属性,解析函数名要求是parsing

假设一款温湿度监测设备,定义了如下属性:

属性名标识符数据类型单位取值范围备注
温度temperatureint℃-30~+100温度值
湿度humidityint%RH0~100相对湿度值

设备数据格式定义如下:

字段字节数说明
帧类型1字节0x01表示数据采集,0x02表示数据下发
温度值1字节有符号整型,16进制表示
湿度值1字节无符号整型,16进制表示

则解析规则可参考如下编写:

function parsing(data, parameter) {
    var obj = {};
    if (data.substring(0,2) != "01") {
        return obj;
    }
    obj.temperature = parseInt(data.substring(2,4),16) - 256
    obj.humidity = parseInt(data.substring(4,6),16);
    return obj;
}

parsing函数的传参规则如下:

  • data:视设备接入渠道而定
  • parameter:如果定义有设备配置参数,则配置参数会作为成员放置于parameter字段内

数据下行编码

将场景应用发送的设备服务请求,编码为设备可识别的命令,要求将服务名作为编码函数名

假设一款温湿度监测设备,定义了如下服务:

服务名标识符数据类型参数结构备注
设置温度范围set_temp_limitstructupper_limit,lower_limitupper_limit是温度上限,
lower_limit是温度下限,均为整型

设备数据格式定义如下:

字段字节数说明
帧类型1字节0x01表示数据采集,0x02表示数据下发
温度上限1字节有符号整型,16进制表示
温度下限1字节有符号整型,16进制表示
function set_temp_limit(data, parameter) {
    var p = "";
    p = "0101"+data.upper_limit.toString(16) + data.lower_limit.toString(16);
    result = {
        "payload": p;
    };
    return result 
}

函数的传参规则如下:

  • data:设备服务定义的参数结构
  • parameter:如果定义有设备配置参数,则配置参数会作为成员放置于parameter字段内

其中,数据解析返回的参数 result,针对不同的产品,可能有如下参数可选:

payload : 要下行的数据 ; timeout为零时,tcp/udp等协议下行服务能立即下发;

或者如lorawan协议的设备,返回result有一些参数,如fport、confirmed等:

results matching ""

    No results matching ""