function loginHandle(session,request,response,metadata) {
var result = {};
result.auth = true;
result.session = {
"Accesstoken": metadata["Accesstoken"],
"RefreshToken": metadata["RefreshToken"],
};
result.ack = {
"code":0
};
return result;
}
function decode(session,request,metadata,deviceConfig) {
var result = {};
result.ack = {
"code":0
};
var relations = {
"8.0.2008":"Voltage",
"8.0.2007":"ZigbeeLQI",
"8.0.2024":"ZigbeeChannel",
"8.0.2097":"SamplePeriod",
"0.3.85":"Lux",
"8.0.9001":"LowBatteryPower",
"3.1.85":"MonitorStatus",
"4.1.85":"SwitchStatus",
"1.7.85":"Brightness",
"1.9.85":"ColorTemperature",
"8.0.2030":"PowerRemember",
"8.0.2025":"WiFiChannel",
"8.0.2026":"WiFiRSSI",
};
var body = request.body;
var msgType = body.msgType;
if (msgType != "resource_report") {
return result;
}
var data = body.data;
result.shadow = {};
for (let i=0;i<data.length;i++) {
let d = data[i];
result.sn = d.subjectId;
let key = relations[d.resourceId];
if (key != undefined) {
if(key == "SwitchStatus") {
result.shadow[key] = d["value"];
} else {
result.shadow[key] = Number(d["value"]);
}
}
}
return result;
}
// ******************平台命令下发*****************
var session_2 = {
"Accesstoken":"39cadd1b74cd74d46f660a96bcf24e1e",
};
var metadata_2 = {
"Accesstoken":"39cadd1b74cd74d46f660a96bcf24e1e",
"AppKey":"kd0uroksvglsti4t1q4websj07mf4pic",
"Appid":"984408497394700288533b04",
"Keyid":"K.984408497541500928" ,
};
var command_2 = {
"command":"shadow",
"d":{
"SwitchStatus":1,
"sn":"lumi.54ef44100035fd0d"
},
"detached":1,
"from":"svc.devshadow#shadow",
"id":"2.0220816041e+10",
"method":"set",
"to":"lumi.54ef44100035fd0d"
};
var result_2 = encode(session_2,command_2,metadata_2,{});
console.log(result_2);
function encode(session, command, metadata, deviceConfig) {
var relations = {
"Voltage":"8.0.2008",
"ZigbeeLQI":"8.0.2007",
"ZigbeeChannel":"8.0.2024",
"SamplePeriod":"8.0.2097",
"Lux":"0.3.85",
"LowBatteryPower":"8.0.9001",
"MonitorStatus":"3.1.85",
"SwitchStatus":"4.1.85",
"Brightness":"1.7.85",
"ColorTemperature":"1.9.85",
"PowerRemember":"8.0.2030",
"WiFiChannel":"8.0.2025",
"WiFiRSSI":"8.0.2026",
};
var time = new Date().getTime().toString();
var nonce = new Date().getTime().toString();
var Appid = metadata["Appid"];
var Accesstoken = metadata["Accesstoken"];
var Keyid = metadata["Keyid"];
var AppKey = metadata["AppKey"];
console.log("appid--"+Appid);
var preSign = "";
if (Accesstoken != null && Accesstoken != "" && Accesstoken != undefined) {
preSign = "Accesstoken=" + Accesstoken + "&";
}
preSign = preSign + "Appid=" + Appid + "&" + "Keyid=" + Keyid + "&" + "Nonce=" + nonce + "&" + "Time=" + time + AppKey;
var Sign= CryptoJS.MD5(preSign.toLowerCase()).toString();
//var Sign= (preSign.toLowerCase()).toString();
var result = {};
var sn = command.to;
var resources = [];
for (const k in command.d) {
if(relations[k] != undefined) {
let r = {
"resourceId": relations[k],
"value": command.d[k]
};
resources.push(r);
}
}
var body = {
"intent": "write.resource.device",
"data": [
{
"subjectId": sn,
"resources": resources
}
]
};
var url="https://open-cn.aqara.com/v3.0/open/api";
var headers = {
"Accesstoken": Accesstoken,
"Appid": Appid,
"AppKey": AppKey,
"Keyid": Keyid,
"Time":time,
"Nonce":nonce,
"Sign":Sign
};
var str = JSON.stringify(body);
console.log("str--"+str);
var bb = JSON.parse(str);
console.log("bb"+bb);
console.log(bb);
var resp = HTTP.Post(url,headers,body);
console.log(resp);
return result;
}
function response(session, request, response, metadata) {
var result = {};
if (request.method == "set") {
return result;
}
var shadow = {};
// set shadow
result.shadow = shadow;
return result;
}
// ******************平台命令下发222222222*****************
var result_2 = encode(session_2,command_2,metadata_2,{});
console.log(result_2);
function encode(session, command, metadata, deviceConfig) {
var relations = {
"Voltage":"8.0.2008",
"ZigbeeLQI":"8.0.2007",
"ZigbeeChannel":"8.0.2024",
"SamplePeriod":"8.0.2097",
"Lux":"0.3.85",
"LowBatteryPower":"8.0.9001",
"MonitorStatus":"3.1.85",
"SwitchStatus":"4.1.85",
"Brightness":"1.7.85",
"ColorTemperature":"1.9.85",
"PowerRemember":"8.0.2030",
"WiFiChannel":"8.0.2025",
"WiFiRSSI":"8.0.2026",
};
var time = new Date().getTime().toString();
var nonce = new Date().getTime().toString();
var Appid = metadata["Appid"];
var Accesstoken = metadata["Accesstoken"];
var Keyid = metadata["Keyid"];
var AppKey = metadata["AppKey"];
console.log("appid--"+Appid);
var preSign = "";
if (Accesstoken != null && Accesstoken != "" && Accesstoken != undefined) {
preSign = "Accesstoken=" + Accesstoken + "&";
}
preSign = preSign + "Appid=" + Appid + "&" + "Keyid=" + Keyid + "&" + "Nonce=" + nonce + "&" + "Time=" + time + AppKey;
var Sign= CryptoJS.MD5(preSign.toLowerCase()).toString();
var result = {};
var sn = command.to;
var resources = [];
for (const k in command.d) {
if(relations[k] != undefined) {
let r = {
"resourceId": relations[k],
"value": command.d[k]
};
resources.push(r);
}
}
var body = {
"intent": "write.resource.device",
"data": [
{
"subjectId": sn,
"resources": resources
}
]
};
var url="https://open-cn.aqara.com/v3.0/open/api";
var headers = {
"Accesstoken": Accesstoken,
"Appid": Appid,
"AppKey": AppKey,
"Keyid": Keyid,
"Time":time,
"Nonce":nonce,
"Sign":Sign
};
var str = JSON.stringify(body);
console.log("str--"+str);
var bb = JSON.parse(str);
console.log("bb"+bb);
console.log(bb);
var apiConfig = {
"url": "https://open-cn.aqara.com/v3.0/open/api",
"method": "POST",
//"params": {},
"headers": headers,
"body":bb
};
result.session = {
"apiConfig":apiConfig,
"body":body,
};
result.apiConfig = apiConfig;
//var resp = HTTP.Post(url,headers,body);
//console.log(resp);
return result;
}
function response(session, request, response, metadata) {
var result = {};
if (request.method == "set") {
return result;
}
var shadow = {};
// set shadow
result.shadow = shadow;
return result;
}
// ******************自定义接口-获取设备***********************
function prerequest(session, command, metadata) {
var time = new Date().getTime().toString();
var nonce = new Date().getTime().toString();
var Appid = metadata["Appid"];
var Accesstoken = metadata["Accesstoken"];
var Keyid = metadata["Keyid"];
var AppKey = metadata["AppKey"];
var preSign = "";
if (Accesstoken != null && Accesstoken != "" && Accesstoken != undefined) {
preSign = "Accesstoken=" + Accesstoken + "&";
}
preSign = preSign + "Appid=" + Appid + "&" + "Keyid=" + Keyid + "&" + "Nonce=" + nonce + "&" + "Time=" + time + AppKey;
var Sign= CryptoJS.MD5(preSign.toLowerCase()).toString();
var result = {};
result.session = {
"Time":time,
"Nonce":nonce,
"Sign":Sign
};
return result;
}
// **************************
function response(session, request, response, metadata) {
var result = {};
var data = response["result"]["data"];
var devices = [];
for (let i=0;i<data.length;i++) {
let d = data[i];
let device = {
"sn":d["did"],
"category":metadata[d["model"]],
"deviceName":d["deviceName"],
"online":d["state"],
};
devices.push(device);
}
result.devices = devices;
return result;
}
console