一个RTU同时接了多个485传感器,已通过485透传数据到云端,如何在云端解析出每个传感器的数值?
建议先参考物联网平台的帮助文档,请参见:物模型数据解析使用示例:https://help.aliyun.com/document_detail/114621.htmlJavaScript脚本示例:https://help.aliyun.com/document_detail/147612.html假设你物模型中的“1号温度”的identify为:wendu1,其余的为wendu2,shidu1,shidu2。整体上的思路应该是参考《物模型数据解析使用示例》模拟出上报属性需要返回的JSON格式数据,类似{'method': 'thing.event.property.post', 'id': '2241348', 'params': {'wendu1': 10, 'wendu2': 11, 'shidu1': 12,'shidu2': 13,}, 'version': '1.0'}而你写的代码,需要向上述的JSON格式靠齐,目的是为了解析出这样格式的JSON数据以用于上报属性,具体可以参考《JavaScript脚本示例》:function rawDataToProtocol(bytes) {var uint8Array = new Uint8Array(bytes.length);//此处的数据解析按照自己的数据格式自行封装for (var i = 0; i uint8Array[i] = bytes[i] & 0xff;}var dataView = new DataView(uint8Array.buffer, 0);var jsonMap = new Object();var fHead = uint8Array[0]; // commandif (fHead == COMMAND_REPORT) {jsonMap['method'] = PROPERTY_REPORT_METHOD; //ALink JSON格式,属性上报topic。jsonMap['version'] = '1.0'; //ALink JSON格式,协议版本号固定字段。jsonMap['id'] = '' + dataView.getInt32(1); //ALink JSON格式,标示该次请求id值。var params = {};params['wendu1'] = uint8Array[0]; //对应产品属性中wendu1。params['wendu2'] = uint8Array[1]; //对应产品属性中wendu2。params['shidu1'] = uint8Array[2]; //对应产品属性中shidu1。params['shidu2'] = uint8Array[3]; //对应产品属性中shidu2。jsonMap['params'] = params; //ALink JSON格式,params标准字段。} else if(fHead == COMMAND_SET_REPLY) {jsonMap['version'] = '1.0'; //ALink JSON格式,协议版本号固定字段。jsonMap['id'] = '' + dataView.getInt32(1); //ALink JSON格式,标示该次请求id值。jsonMap['code'] = ''+ dataView.getUint8(5);jsonMap['data'] = {};}return jsonMap;}可在数据解析页面传入原始的数据进行调试,查看是否输出目标JSON数据。若无代码相关经验,建议可以直接拷贝用例,在此基础上修改即可。
赞0
踩0