component.js 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. var pidPkMap={
  2. "H5Z31yKBmy":"3ptfx2dRescPAwTn",
  3. "xOCy76jn6k":"jzC6eQGRse6hDZPB"
  4. }
  5. this.onReceive=function(method,path,header,params,body){
  6. var type=header["Content-Type"];
  7. if(type=="application/json"){
  8. var msg=JSON.parse(body.msg);
  9. var productId=msg.productId;
  10. var deviceName=msg.deviceName;
  11. var messageType=msg.messageType;
  12. var data=msg.data;
  13. var pk=pidPkMap[productId];
  14. if(!pk){
  15. return {
  16. url:"",
  17. header:{
  18. contentType:"application/json"
  19. },
  20. content:"error"
  21. }
  22. }
  23. if(messageType=="lifeCycle"){
  24. //登录、登出
  25. var online=data.status=="online";
  26. deviceBehaviour.deviceStateChange(pk,deviceName,online);
  27. }else if(messageType=="notify"){
  28. //设备消息
  29. //消息类型
  30. var notifyType=msg.notifyType;
  31. if(notifyType=="property"){
  32. //属性上报
  33. var propertyData={};
  34. for(var p in data.params){
  35. propertyData[p]=data.params[p].value;
  36. }
  37. deviceBehaviour.reportMessage(JSON.stringify({
  38. mid:data.id,
  39. productKey:pk,
  40. deviceName:deviceName,
  41. type:"property",
  42. identifier:"report",
  43. data:propertyData
  44. }));
  45. }else if(notifyType=="event"){
  46. //事件上报
  47. var identifier="";
  48. var paramData={};
  49. for(var p in data.params){
  50. identifier=p;
  51. paramData=data.params[p];
  52. }
  53. deviceBehaviour.reportMessage(JSON.stringify({
  54. mid:data.id,
  55. productKey:pk,
  56. deviceName:deviceName,
  57. type:"event",
  58. identifier:identifier,
  59. data:paramData.value
  60. }));
  61. }
  62. }
  63. }
  64. return {
  65. url:"",
  66. header:{
  67. contentType:"application/json"
  68. },
  69. content:JSON.stringify(params.msg)
  70. }
  71. };