component.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. var mid=1;
  2. function getMid(){
  3. mid++;
  4. if(mid>10000){
  5. mid=1;
  6. }
  7. return mid;
  8. };
  9. function getPkDn(deviceKey){
  10. var arr=deviceKey.split("_");
  11. return {
  12. pk:arr[1],
  13. dn:deviceKey
  14. };
  15. }
  16. function register(data){
  17. var device=getPkDn(data.data.deviceName)
  18. var subDevicesList=data.data.subDevices
  19. var subDevices=[]
  20. if(subDevicesList!=undefined&&subDevicesList.length>0){
  21. apiTool.log("device:"+subDevicesList);
  22. for (var i = 0; i < subDevicesList.length; i++) {
  23. var deviceKey=subDevicesList[i]
  24. var subDevice=getPkDn(deviceKey)
  25. subDevices.push({
  26. productKey:subDevice.pk,
  27. deviceName:subDevice.dn,
  28. model:''
  29. })
  30. }
  31. }
  32. var reply=
  33. {
  34. productKey:device.pk,
  35. deviceName:device.dn,
  36. mid:"0",
  37. content:{
  38. id:data.id,
  39. type:data.type,
  40. result:'success'
  41. }
  42. };
  43. var data={
  44. productKey:device.pk,
  45. deviceName:device.dn
  46. }
  47. if(subDevices.length>0){
  48. data['subDevices']=subDevices
  49. }
  50. apiTool.log("subDevices:"+JSON.stringify(data));
  51. return {
  52. type:"register",
  53. data:data,
  54. action:{
  55. type:"ack",
  56. content:JSON.stringify(reply)
  57. }
  58. };
  59. }
  60. function online(data){
  61. apiTool.log("data:"+JSON.stringify(data));
  62. var device=getPkDn(data.data.deviceName)
  63. return {
  64. type:"state",
  65. data:{
  66. productKey:device.pk,
  67. deviceName:device.dn,
  68. state:data.type
  69. }
  70. };
  71. }
  72. function offline(data){
  73. var device=getPkDn(data.deviceKey)
  74. return {
  75. type:"state",
  76. data:{
  77. productKey:device.pk,
  78. deviceName:device.dn,
  79. state:data.type
  80. }
  81. };
  82. }
  83. //必须提供onReceive方法
  84. this.onReceive=function(head,type,payload){
  85. var data=JSON.parse(payload)
  86. if(data.type=="register"){
  87. apiTool.log("data:"+payload);
  88. return register(data)
  89. }else if(data.type=="online"){
  90. return online(data);
  91. }else if(data.type=="offline"){
  92. return offline(data);
  93. }
  94. return {
  95. productKey:"",
  96. deviceName:"",
  97. mid:0,
  98. content:{
  99. }
  100. }
  101. };
  102. this.onRegistered=function (data,status) {
  103. apiTool.log("onRegistered调用");
  104. }