AbleCloud物聯(lián)網(wǎng)云平臺(tái)開發(fā)指導(dǎo)Android篇3
掃描二維碼
隨時(shí)隨地手機(jī)看文章
設(shè)備控制
下面以開關(guān)燈為例,通過二進(jìn)制、json兩種格式簡(jiǎn)要介紹與安卓設(shè)備通訊的例子。實(shí)際開發(fā)請(qǐng)只選擇以下其中一種消息格式。
注意:msgCode從[64,200)范圍代表控制查詢及響應(yīng),[200,255]范圍代表消息主動(dòng)上報(bào),其他范圍為AbleCloud內(nèi)部使用,不允許重復(fù)定義。
1 使用二進(jìn)制消息格式進(jìn)行通訊
1.1 設(shè)備控制
以開關(guān)燈為例,協(xié)議如下:
//請(qǐng)求數(shù)據(jù)包
{ 68 :[
//關(guān)燈(二進(jìn)制流,由廠商自己解析)
{ 0 , 0 , 0 , 0 },
//開燈(二進(jìn)制流,由廠商自己解析)
{ 1 , 0 , 0 , 0 }
]}
//響應(yīng)數(shù)據(jù)包
{ 102 :[
//失敗(二進(jìn)制流,由廠商自己解析)
{ 0 , 0 , 0 , 0 },
//成功(二進(jìn)制流,由廠商自己解析)
{ 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:
//請(qǐng)求消息體
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}); //關(guān)燈成功
} else
respMsg.setPayload(new byte[]{0, 0, 0, 0}); //關(guān)燈失敗
}
respMsg.setMsgCode(CODE_SWITCH_RESP);
break;
}
}
});
2 使用JSON消息格式進(jìn)行通訊
2.1 設(shè)備控制
以開關(guān)燈為例,協(xié)議如下:
//請(qǐng)求數(shù)據(jù)包
{ 70 :[
//關(guān)燈
{"switch", 0}
//開燈
{"switch", 1}
]}
//響應(yīng)數(shù)據(jù)包--JSON格式的resp不需要設(shè)置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不需要設(shè)置msgCode
switch (reqMsg.getMsgCode()) {
case CODE_JSON:
//請(qǐng)求消息體
JSONObject req = new JSONObject(reqMsg.getJsonPayload());
//請(qǐng)求操作類型,關(guān)燈或開燈
int value = req.getInt("switch");
//響應(yīng)消息體
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()); //關(guān)燈成功
} else {
resp.put("result", false);
respMsg.setJsonPayload(resp.toString()); //關(guān)燈失敗
}
}
break;
}
}
});