我是一个初学者,不懂代码之类的,刚好手上有一个RTU设备,自带4路模拟量输入和一路485输入,485接口下接了两个温湿度传感器,自己在云端物模型配置如下: 云端RS485透传数据已经能接收到原始的Hex数据,但是这个数据不直观,于是我设置了四个物模型,分别用来展示传感器数值,但是试了很久都不能显示传感器数据。开始只用一个传感器,试着解析数据,但是始终每办法解析成功,数据解析的代码如下:
var PROPERTY_REPORT_METHOD = 'thing.event.property.post';
//上行数据,自定义格式转物模型JSON格式。 function rawDataToProtocol(bytes) {
var uint8Array = new Uint8Array(bytes.length);
for (var i = 0; i < bytes.length; i++) {
uint8Array[i] = bytes[i] & 0xff;
}
var dataView = new DataView(uint8Array.buffer, 0);
var jsonMap = new Object();
//属性上报method。
jsonMap['method'] = PROPERTY_REPORT_METHOD;
//协议版本号,固定字段,取值1.0。
jsonMap['version'] = '1.0';
//表示该次请求的ID。
jsonMap['id'] = new Date().getTime();
var params = {};
//14、15对应产品属性中temperature。
params['485wd'] = (dataView.getUint8(15)*256+dataView.getUint8(14))/10;
//16、17对应产品属性中humidity。
params['485sd'] = (dataView.getUint8(17)*256+dataView.getUint8(16));
jsonMap['params'] = params;
return jsonMap;
} //下行指令,物模型JSON格式转自定义格式。 function protocolToRawData(json) { var payloadArray = [1];//此设备只有上报数据功能,无法接收云端指令。 return payloadArray; }
//将设备自定义Topic数据转换为JSON格式数据。 function transformPayload(topic, rawData) { var jsonObj = {} return jsonObj; } 我对代码一窍不通,大神们帮我想想办法,这个问题不解决,我的Web可视化就每办法进行呢。这个问题困扰我两个月了!
首先需要明确一下,设备上报的自定义格式数据的解析规则,例如前2位表示属性A,中间4位表示属性B,等等。没有代码可以适用所有设备的,都需要根据自己的设备上报数据格式,来定制化数据解析脚本。
举个例子,参考目前的官方示例:https://help.aliyun.com/document_detail/147612.html
示例数据: 设备上报属性数据: 传入参数: 0x000000000100320100000000 输出结果: {"method":"thing.event.property.post","id":"1","params":{"prop_float":0,"prop_int16":50,"prop_bool":1},"version":"1.0"}
传入参数和输出结果是如何对应上的,看下面的解释:
jsonMap['id'] = '' + dataView.getInt32(1); 四个字节,8个字符,对应00000001。16进制转10进制后,等于1
params['prop_int16'] = dataView.getInt16(5); 两个字节,4个字符,0032。16进制转10进制后,等于50
params['prop_bool'] = uint8Array[7]; 一个字节,两个字符,01。16进制转10进制后,等于1
params['prop_float'] = dataView.getFloat32(8) 四个字节,八个字符,00000000。16进制转10进制后,等于0
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。