JavaScript脚本示例[阿里云Iot]

问题描述

/*
示例数据:
设备上报属性数据:
传入参数:
 0x000000000100320100000000
输出结果:
 {“method”:”thing.event.property.post”,”id”:”1″,”params”:{“prop_float”:0,”prop_int16″:50,”prop_bool”:1},”version”:”1.0″}

属性设置的返回结果:
传入参数:
 0x0300223344c8
输出结果:
 {“code”:”200″,”data”:{},”id”:”2241348″,”version”:”1.0″}
*/
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();
    
var fHead = uint8Array[0]; // commandif (fHead == COMMAND_REPORT) {
        jsonMap[
‘method’] = ALINK_PROP_REPORT_METHOD; //ALink JSON格式,属性上报topic。
        jsonMap[
‘version’] = ‘1.0’//ALink JSON格式,协议版本号固定字段。
        jsonMap[
‘id’] =  + dataView.getInt32(1); //ALink JSON格式,标示该次请求id值。var params = {};
        params[
‘prop_int16’] = dataView.getInt16(5); //对应产品属性中prop_int16。
        params[
‘prop_bool’] = uint8Array[7]; //对应产品属性中prop_bool。
        params[
‘prop_float’] = dataView.getFloat32(8); //对应产品属性中prop_float。
        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;
}

期望结果

这个函数如果用c语言在设备解析上传云端该如何编写?占用资源多吗?

.

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 如果你不想采用透明传输,那么 上述二进制的  0x000000000100320100000000 字节数组,就需要通过阿里Alink JSON协议规定的格式,进行数据上传了,比如上述内容打包为JSON格式如下(这是我以前写的一个C#的例子,C语言类似):

     string topic = “/sys/” + ProductKey + “/” + deviceName + “/thing/event/property/post”;

    string json =

    “{” +

        “”id”:”” + (MessageID++).ToString() + “”,” +

        “”params”:” +

        “{” +

            “”prop_int16”:123,”+ 

            “”prop_bool”:true,”+

            “”prop_float”:12.3,”+

        “},” +

        “”method”:”thing.event.property.post”” +

    “}”;

    C语言阿里官方相关的参考可以看 这个连接的,上传属性部分:

    https://help.aliyun.com/document_detail/258239.html?spm=a2c4g.11186623.0.0.53ce2b5cjfvclE

    另外还可以参考 Alink属性上传相关内容的具体介绍,相关JSON包的格式讲解的很清楚

    https://help.aliyun.com/document_detail/89301.html?spm=a2c4g.11186623.0.0.75373e06yTOotd

  2. 数据解析请参考:https://help.aliyun.com/document_detail/68702.html

    设备端建议使用link sdk 来实现,参考文档:https://help.aliyun.com/product/93051.html