var session = {};
var request = {};
var metadata = {};
var result = authorize(session,request,metadata);
console.log(result);
var Time = new Date().getTime().toString();
var Nonce = Date.parse(new Date());
console.log(Time);
function authorize(session, request, metadata) {
var result = {};
result.auth = true;
result.session = {
"Accesstoken": metadata["Accesstoken"],
"refreshToken": metadata["refreshToken"],
};
result.ack = {
"code":0
};
return result;
};
/*map[
data:[
map[resourceId:1.7.85
statusCode:0
subjectId:lumi.54ef44100035fd0d
time:1658234628838
triggerSource:map[time:1658234628 type:41]
value:3]
map[resourceId:1.9.85
statusCode:0
subjectId:lumi.54ef44100035fd0d
time:1658234628838
triggerSource:map[time:1658234628 type:41]
value:363]
]
msgId:AC12212A001E18B4AAC2612538199A101
msgType:resource_report
openId:376446126697996435569488674817
time:1658234629190
token:855ac4087a2a4a3c98fe4a22afcc0490
]*/
console.log("*****************decode******************");
var decode_request = {
"body":{
"data":[
{
"subjectId":"lumi.54ef44100035fd0d",
"resourceId":"1.7.85",
"value":"3"
},
{
"subjectId":"lumi.54ef44100035fd0d",
"resourceId":"1.9.85",
"value":"363"
}
],
"msgType":"resource_report"
}
}
var result_decode = decode({},decode_request,{},{});
console.log(result_decode);
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 resp = {
"result":{
"data":[
{
"did":"111",
"model":"aaa",
"deviceName":"a1",
"state":1
},
{
"did":"222",
"model":"bbb",
"deviceName":"b2",
"state":1
},
{
"did":"333",
"model":"ccc",
"deviceName":"c3",
"state":1
}
]
}
};
var metadata = {
"aaa":"aaaaaaaaa",
"bbb":"bbbbbbbbb",
"ccc":"ccccccccc"
};
var res = response({},{},resp,metadata);
console.log(res);
// deviceName:网关 M2 did:lumi1.54ef442b7a4d model:lumi.gateway.iragl5 state:1
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;
}
var metadata = {
"Appid": "sffdas",
"Accesstoken": "fasfd",
"AppKey": "fafdeefdf",
"Keyid": "ffsjlkfj",
}
function prerequest_getHeaders(session,info,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,
"body":body,
};
return result;
}
var info = {
"to" : "123",
"d": {
"SwitchStatus": "1",
"sn": "123",
"time": 123456789
}
}
console.log("*******************prerequest_getHeaders_body*********************")
var result_prerequest_getHeaders_body = prerequest_getHeaders_body({},info,metadata);
console.log(result_prerequest_getHeaders_body);
function prerequest_getHeaders_body(session,info,metadata) {
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"];
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 = info.to;
var resources = [];
for (const k in info.d) {
if(relations[k] != undefined) {
let r = {
"resourceId": relations[k],
"value": info.d[k]
};
resources.push(r);
}
}
var body = {
"intent": "write.resource.device",
"data": [
{
"subjectId": sn,
"resources": resources
}
]
};
result.session = {
"Time":time,
"Nonce":nonce,
"Sign":Sign,
"body":body,
};
return result;
}
console.log("*******************downLink_getHeaders_body*********************")
var result_prerequest_getHeaders_body = prerequest_getHeaders_body({},info,metadata);
console.log(result_prerequest_getHeaders_body);
function downLink_getHeaders_body(session,info,metadata) {
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"];
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 = info.to;
var resources = [];
for (const k in info.d) {
if(relations[k] != undefined) {
let r = {
"resourceId": relations[k],
"value": info.d[k]
};
resources.push(r);
}
}
var body = {
"intent": "write.resource.device",
"data": [
{
"subjectId": sn,
"resources": resources
}
]
};
result.session = {
"Time":time,
"Nonce":nonce,
"Sign":Sign,
"body":body,
};
return result;
}
function prerequest_getHeaders_body_refreshToken(session,info,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 Sign= (preSign.toLowerCase()).toString();
var result = {};
var body = {
"intent": "config.auth.refreshToken",
"data": {
"refreshToken": metadata["refreshToken"]
}
};
result.session = {
"Time":time,
"Nonce":nonce,
"Sign":Sign,
"body":body,
};
return result;
}
console.log("*************************")
var resp3 = {
"result:":[
{
"timeStamp": 1657868370064,
"resourceId": "1.7.85",
"value": "4",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "4.1.85",
"value": "0",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1654757654063,
"resourceId": "8.0.2030",
"value": "0",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "8.0.2007",
"value": "129",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "1.9.85",
"value": "370",
"subjectId": "lumi.54ef44100035fd0d"
}
]
};
function response22(session,request,response,metadata) {
var result = {};
var data = response["result"];
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;
}
var resp_M2Properties = {
"result": [
{
"timeStamp": 1658082213125,
"resourceId": "8.0.2024",
"value": "15",
"subjectId": "lumi1.54ef442b7a4d"
},
{
"timeStamp": 1654669804355,
"resourceId": "8.0.2025",
"value": "8",
"subjectId": "lumi1.54ef442b7a4d"
},
{
"timeStamp": 1657675814662,
"resourceId": "8.0.2026",
"value": "0",
"subjectId": "lumi1.54ef442b7a4d"
}
]
}
var result_M2Properties = response_getM2Properties({},{},resp_M2Properties,{});
console.log(result_M2Properties);
function response_getM2Properties(session,request,response,metadata) {
var result = {};
var relation = {
"8.0.2024":"ZigBeeChannel",
"8.0.2025":"WiFiChannel",
"8.0.2026":"WiFiRSSI",
};
var data = response["result"];
var shadow = {};
for (let i=0;i<data.length;i++) {
let d = data[i];
result.sn = d["subjectId"];
shadow[relation[d["resourceId"]]] = Number(d["value"]);
}
result.shadow = shadow;
return result;
}
var resp_LightProperties = {
"result": [
{
"timeStamp": 1657868370064,
"resourceId": "1.7.85",
"value": "4",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "4.1.85",
"value": "0",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1654757654063,
"resourceId": "8.0.2030",
"value": "0",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "8.0.2007",
"value": "129",
"subjectId": "lumi.54ef44100035fd0d"
},
{
"timeStamp": 1657868370064,
"resourceId": "1.9.85",
"value": "370",
"subjectId": "lumi.54ef44100035fd0d"
}
]
}
var result_LightProperties = response_getLightProperties({},{},resp_LightProperties,{});
console.log("****************result_LightProperties**************");
console.log(result_LightProperties);
function response_getLightProperties(session,request,response,metadata) {
var result = {};
var relation = {
"4.1.85":"SwitchStatus",
"1.7.85":"Brightness",
"1.9.85":"ColorTemperature",
"8.0.2007":"ZigbeeLQI",
"8.0.2030":"PowerRemember"
};
var data = response["result"];
var shadow = {};
for (let i=0;i<data.length;i++) {
let d = data[i];
result.sn = d["subjectId"];
let key = relation[d["resourceId"]];
if(key == "SwitchStatus") {
shadow[key] = d["value"];
} else {
shadow[key] = Number(d["value"]);
}
}
result.shadow = shadow;
return result;
}
var resp_SensorProperties = {
"result": [
{
"timeStamp": 1658112610224,
"resourceId": "0.4.85",
"value": "127",
"subjectId": "lumi.158d0007e4faf6"
},
{
"timeStamp": 1658082471018,
"resourceId": "8.0.2008",
"value": "3015",
"subjectId": "lumi.158d0007e4faf6"
},
{
"timeStamp": 1658113181708,
"resourceId": "3.1.85",
"value": "1",
"subjectId": "lumi.158d0007e4faf6"
},
{
"timeStamp": 1658041978872,
"resourceId": "8.0.2007",
"value": "111",
"subjectId": "lumi.158d0007e4faf6"
},
{
"timeStamp": 1658112610224,
"resourceId": "0.3.85",
"value": "127",
"subjectId": "lumi.158d0007e4faf6"
},
{
"timeStamp": 1654757316768,
"resourceId": "8.0.2041",
"value": "52",
"subjectId": "lumi.158d0007e4faf6"
}
]
}
var result_SensorProperties = response_getSensorProperties({},{},resp_SensorProperties,{});
console.log("**************result_SensorProperties*****************")
console.log(result_SensorProperties);
function response_getSensorProperties(session,request,response,metadata) {
var result = {};
var relation = {
"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"
};
var data = response["result"];
var shadow = {};
for (let i=0;i<data.length;i++) {
let d = data[i];
result.sn = d["subjectId"];
let key = relation[d["resourceId"]];
if(key == undefined) {
continue;
} else if(key == "LowBatteryPower") {
shadow[key] = d["value"];
} else {
shadow[key] = Number(d["value"]);
}
}
result.shadow = shadow;
return result;
}
function encode(session,command,metadata,deviceConfig) {
var result = {};
var body = {
"intent": "write.resource.device",
"data": [
{
"subjectId": "lumi.54ef44100035fd0d",
"resources": [
{
"resourceId": "4.1.85",
"value": "0"
}
]
}
]
};
return result;
}
console