AbleCloud物联网云平台开发指导Android篇3

来源:网络

点击:1233

A+ A-

所属频道:新闻中心

关键词: AbleCloud,物联网,云平台

    设备控制

    下面以开关灯为例,通过二进制、json两种格式简要介绍与安卓设备通讯的例子。实际开发请只选择以下其中一种消息格式。

    注意:msgCode从[64,200)范围代表控制查询及响应,[200,255]范围代表消息主动上报,其他范围为AbleCloud内部使用,不允许重复定义。

    1 使用二进制消息格式进行通讯

    1.1 设备控制

    以开关灯为例,协议如下:

    //请求数据包

    { 68 :[

    //关灯(二进制流,由厂商自己解析)

    { 0 , 0 , 0 , 0 },

    //开灯(二进制流,由厂商自己解析)

    { 1 , 0 , 0 , 0 }

    ]}

    //响应数据包

    { 102 :[

    //失败(二进制流,由厂商自己解析)

    { 0 , 0 , 0 , 0 },

    //成功(二进制流,由厂商自己解析)

    { 1 , 0 , 0 , 0 }

    ]}

    -------------------------------------

    private static final int CODE_SWITCH_REQ = 68;

    private static final int CODE_SWITCH_RESP = 102;

    private static final int OFF = 0;

    private static final int ON = 1;

    AC.handleMsg(new ACMsgHandler() {

    @Override

    public void handleMsg(ACDeviceMsg req, ACDeviceMsg resp) {

    switch (reqMsg.getMsgCode()) {

    case CODE_SWITCH_REQ:

    //请求消息体

    byte[] payload = reqMsg.getPayload();

    if (payload[0] == ON) {

    if (Light.turnLightOn()) {

    respMsg.setPayload(new byte[]{1, 0, 0, 0}); //开灯成功

    } else

    respMsg.setPayload(new byte[]{0, 0, 0, 0}); //开灯失败

    } else {

    if (Light.turnLightOff()) {

    respMsg.setPayload(new byte[]{1, 0, 0, 0}); //关灯成功

    } else

    respMsg.setPayload(new byte[]{0, 0, 0, 0}); //关灯失败

    respMsg.setMsgCode(CODE_SWITCH_RESP);

    break;

    });

    2 使用JSON消息格式进行通讯

    2.1 设备控制

    以开关灯为例,协议如下:

    //请求数据包

    { 70 :[

    //关灯

    {"switch", 0}

    //开灯

    {"switch", 1}

    ]}

    //响应数据包--JSON格式的resp不需要设置msgCode

    //失败

    {"result", false},

    //成功

    {"result", true}

    ]}

    -----------------------------

    private static final int CODE_JSON = 70;

    private static final int OFF = 0;

    private static final int ON = 1;

    AC.handleMsg(new ACMsgHandler() {

    @Override

    public void handleMsg(ACDeviceMsg req, ACDeviceMsg resp) {

    //JSON格式的resp不需要设置msgCode

    switch (reqMsg.getMsgCode()) {

    case CODE_JSON:

    //请求消息体

    JSONObject req = new JSONObject(reqMsg.getJsonPayload());

    //请求操作类型,关灯或开灯

    int value = req.getInt("switch");

    //响应消息体

    JSONObject resp = new JSONObject();

    if (value == ON) {

    if (Light.turnLightOn()) {

    resp.put("result", true);

    respMsg.setJsonPayload(resp.toString()); //开灯成功

    } else {

    resp.put("result", false);

    respMsg.setJsonPayload(resp.toString()); //开灯失败

    } else if (value == OFF) {

    if (Light.turnLightOff()) {

    resp.put("result", true);

    respMsg.setJsonPayload(resp.toString()); //关灯成功

    } else {

    resp.put("result", false);

    respMsg.setJsonPayload(resp.toString()); //关灯失败

    break;

    });


    (审核编辑: 林静)

    声明:除特别说明之外,新闻内容及图片均来自网络及各大主流媒体。版权归原作者所有。如认为内容侵权,请联系我们删除。