110 lines
1.9 KiB
JavaScript
110 lines
1.9 KiB
JavaScript
var mid=1;
|
|
|
|
function getMid(){
|
|
mid++;
|
|
if(mid>10000){
|
|
mid=1;
|
|
}
|
|
return mid;
|
|
};
|
|
function getPkDn(deviceKey){
|
|
var arr=deviceKey.split("_");
|
|
return {
|
|
pk:arr[1],
|
|
dn:deviceKey
|
|
};
|
|
}
|
|
function register(data){
|
|
var device=getPkDn(data.data.deviceName)
|
|
var subDevicesList=data.data.subDevices
|
|
var subDevices=[]
|
|
if(subDevicesList!=undefined&&subDevicesList.length>0){
|
|
apiTool.log("device:"+subDevicesList);
|
|
for (var i = 0; i < subDevicesList.length; i++) {
|
|
var deviceKey=subDevicesList[i]
|
|
var subDevice=getPkDn(deviceKey)
|
|
subDevices.push({
|
|
productKey:subDevice.pk,
|
|
deviceName:subDevice.dn,
|
|
model:''
|
|
})
|
|
}
|
|
}
|
|
|
|
var reply=
|
|
{
|
|
productKey:device.pk,
|
|
deviceName:device.dn,
|
|
mid:"0",
|
|
content:{
|
|
id:data.id,
|
|
type:data.type,
|
|
result:'success'
|
|
}
|
|
};
|
|
var data={
|
|
productKey:device.pk,
|
|
deviceName:device.dn
|
|
}
|
|
if(subDevices.length>0){
|
|
data['subDevices']=subDevices
|
|
}
|
|
apiTool.log("subDevices:"+JSON.stringify(data));
|
|
return {
|
|
type:"register",
|
|
data:data,
|
|
action:{
|
|
type:"ack",
|
|
content:JSON.stringify(reply)
|
|
}
|
|
};
|
|
}
|
|
|
|
function online(data){
|
|
apiTool.log("data:"+JSON.stringify(data));
|
|
var device=getPkDn(data.data.deviceName)
|
|
return {
|
|
type:"state",
|
|
data:{
|
|
productKey:device.pk,
|
|
deviceName:device.dn,
|
|
state:data.type
|
|
}
|
|
};
|
|
}
|
|
|
|
function offline(data){
|
|
var device=getPkDn(data.deviceKey)
|
|
return {
|
|
type:"state",
|
|
data:{
|
|
productKey:device.pk,
|
|
deviceName:device.dn,
|
|
state:data.type
|
|
}
|
|
};
|
|
}
|
|
|
|
//必须提供onReceive方法
|
|
this.onReceive=function(head,type,payload){
|
|
var data=JSON.parse(payload)
|
|
if(data.type=="register"){
|
|
apiTool.log("data:"+payload);
|
|
return register(data)
|
|
}else if(data.type=="online"){
|
|
return online(data);
|
|
}else if(data.type=="offline"){
|
|
return offline(data);
|
|
}
|
|
return {
|
|
productKey:"",
|
|
deviceName:"",
|
|
mid:0,
|
|
content:{
|
|
}
|
|
}
|
|
};
|
|
|
|
this.onRegistered=function (data,status) {
|
|
apiTool.log("onRegistered调用");
|
|
} |