converter.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. var mid=1;
  2. function getMid(){
  3. mid++;
  4. if(mid>10000){
  5. mid=1;
  6. }
  7. return mid+"";
  8. }
  9. this.decode = function (msg) {
  10. //对msg进行解析,并返回物模型数据
  11. var content=msg.content;
  12. var type = content.type;
  13. if (type=="report") {
  14. //属性上报
  15. return {
  16. mid: msg.mid,
  17. productKey: msg.productKey,
  18. deviceName: msg.deviceName,
  19. type:"property",
  20. identifier: "report", //属性上报
  21. occur: new Date().getTime(), //时间戳,设备上的事件或数据产生的本地时间
  22. time: new Date().getTime(), //时间戳,消息上报时间
  23. data: content.params,
  24. };
  25. }
  26. return null;
  27. };
  28. this.encode = function (service,device) {
  29. var type=service.type;
  30. var identifier=service.identifier;
  31. var entityId=service.deviceName;
  32. var deviceMid=getMid();
  33. var params={};
  34. var target={};
  35. if("property"==type&&"set"==identifier){
  36. var domain=entityId.split(".")[0];
  37. var powerstate=service.params.powerstate==1?"turn_on":"turn_off";
  38. params.type="call_service";
  39. params.domain=domain;
  40. params.service=powerstate;
  41. target.entity_id=entityId;
  42. params.target=target;
  43. }
  44. return {
  45. productKey:service.productKey,
  46. deviceName:service.deviceName,
  47. mid:deviceMid,
  48. content:params
  49. }
  50. };