chuangwei.py 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. # -*- coding: utf-8 -*-
  2. from apps.web.core.adapter.base import *
  3. from apps.web.device.models import Device
  4. class WasherCWBox(SmartBox):
  5. def __init__(self, device):
  6. super(WasherCWBox, self).__init__(device)
  7. def check_dev_status(self, attachParas=None):
  8. devInfo = MessageSender.send_for_chuangwei(device = self.device,
  9. cmd = DeviceCmdCode.GET_DEVINFO,
  10. payload = {'IMEI': self._device['devNo']})
  11. if devInfo.has_key('rst') and devInfo['rst'] != 0:
  12. if devInfo['rst'] == -1:
  13. raise ServiceException(
  14. {'result': 2, 'description': u'当前洗衣机正在玩命找网络,请您稍候再试'})
  15. elif devInfo['rst'] == 1:
  16. raise ServiceException(
  17. {'result': 2, 'description': u'当前洗衣机忙,无响应,请您稍候再试'})
  18. faultCode = devInfo['fault_status']
  19. if faultCode != 0:
  20. if faultCode == 1:
  21. raise ServiceException({'result': 2, 'description': u'当前洗衣机进入超时故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  22. elif faultCode == 2:
  23. raise ServiceException({'result': 2, 'description': u'当前洗衣机排水超时故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  24. elif faultCode == 3:
  25. raise ServiceException({'result': 2, 'description': u'当前洗衣机排水脱水不平衡,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  26. elif faultCode == 4:
  27. raise ServiceException({'result': 2, 'description': u'当前洗衣机排水门开关报警,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  28. elif faultCode == 5:
  29. raise ServiceException({'result': 2, 'description': u'当前水位传感器异常,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  30. elif faultCode == 6:
  31. raise ServiceException({'result': 2, 'description': u'当前洗衣机预约开门故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  32. elif faultCode == 7:
  33. raise ServiceException({'result': 2, 'description': u'当前洗衣机电机故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  34. elif faultCode == 8:
  35. raise ServiceException({'result': 2, 'description': u'当前洗衣机童锁开门,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  36. elif faultCode == 9:
  37. raise ServiceException({'result': 2, 'description': u'当前洗衣机存储器故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  38. status = devInfo['run_status']
  39. if status == 3:
  40. raise ServiceException({'result': 2, 'description': u'当前洗衣机正在洗涤中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  41. elif status == 4:
  42. raise ServiceException({'result': 2, 'description': u'当前洗衣机正在漂洗中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  43. elif status == 5:
  44. raise ServiceException({'result': 2, 'description': u'当前洗衣机正在脱水中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  45. elif status == 7:
  46. raise ServiceException({'result': 2, 'description': u'当前洗衣机出现异常,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
  47. def analyze_event_data(self, data):
  48. temp = data[2:4]
  49. washMode = ''
  50. if temp == '00':
  51. washMode = u''
  52. elif temp == '01':
  53. washMode = u'标准洗'
  54. elif temp == '02':
  55. washMode = u'快速洗'
  56. elif temp == '03':
  57. washMode = u'强力洗'
  58. elif temp == '04':
  59. washMode = u'单脱水'
  60. elif temp == '05':
  61. washMode = u'轻柔洗'
  62. elif temp == '06':
  63. washMode = u'漂洗并脱水'
  64. elif temp == '07':
  65. washMode = u'自洁'
  66. elif temp == '08':
  67. washMode = u'能效-全载'
  68. elif temp == '09':
  69. washMode = u'能效-半载'
  70. elif temp == '0a':
  71. washMode = u'整机自检'
  72. elif temp == '0b':
  73. washMode = u'电脑版自检'
  74. temp = data[4:6]
  75. status = Const.DEV_WORK_STATUS_WORKING
  76. if temp == '03':
  77. statusInfo = u'洗涤中'
  78. elif temp == '04':
  79. statusInfo = u'漂洗中'
  80. elif temp == '05':
  81. statusInfo = u'脱水中'
  82. elif temp == '06':
  83. status = Const.DEV_WORK_STATUS_IDLE
  84. statusInfo = u'洗衣结束'
  85. elif temp == '07':
  86. status = Const.DEV_WORK_STATUS_FAULT
  87. statusInfo = u'异常'
  88. else:
  89. status = Const.DEV_WORK_STATUS_IDLE
  90. statusInfo = u'空闲'
  91. leftTime = int(data[6:8],16)
  92. temp = data[8:10]
  93. if temp == '00':
  94. pass
  95. elif temp == '01':
  96. status = Const.DEV_WORK_STATUS_FAULT
  97. statusInfo = u'进水超时'
  98. elif temp == '02':
  99. status = Const.DEV_WORK_STATUS_FAULT
  100. statusInfo = u'排水超时'
  101. elif temp == '03':
  102. status = Const.DEV_WORK_STATUS_FAULT
  103. statusInfo = u'脱水不平衡'
  104. elif temp == '04':
  105. status = Const.DEV_WORK_STATUS_FAULT
  106. statusInfo = u'门开关报警'
  107. elif temp == '05':
  108. status = Const.DEV_WORK_STATUS_FAULT
  109. statusInfo = u'水位传感器异常'
  110. elif temp == '06':
  111. status = Const.DEV_WORK_STATUS_FAULT
  112. statusInfo = u'预约开门'
  113. elif temp == '07':
  114. status = Const.DEV_WORK_STATUS_FAULT
  115. statusInfo = u'电机故障告警'
  116. elif temp == '08':
  117. status = Const.DEV_WORK_STATUS_FAULT
  118. statusInfo = u'童锁开门'
  119. elif temp == '09':
  120. status = Const.DEV_WORK_STATUS_FAULT
  121. statusInfo = u'存储器故障'
  122. return {'washMode':washMode,'status':status,'statusInfo':statusInfo,'leftTime':leftTime}
  123. def start_device(self, package, openId, attachParas):
  124. washName = package['name']
  125. data,cmdMode = 'aa',''
  126. if washName == u'标准洗':
  127. cmdMode = '01'
  128. elif washName == u'快速洗':
  129. cmdMode = '02'
  130. elif washName == u'强力洗':
  131. cmdMode = '03'
  132. elif washName == u'单脱水':
  133. cmdMode = '04'
  134. elif washName == u'轻柔洗':
  135. cmdMode = '05'
  136. elif washName == u'漂洗并脱水':
  137. cmdMode = '06'
  138. elif washName == u'自洁':
  139. cmdMode = '07'
  140. elif washName == u'能效-全载':
  141. cmdMode = '08'
  142. elif washName == u'能效-半载':
  143. cmdMode = '09'
  144. elif washName == u'整机自检':
  145. cmdMode = '0a'
  146. elif washName == u'电脑版自检':
  147. cmdMode = '0b'
  148. else:
  149. raise ServiceException({'result': 2, 'description': u'套餐名称错误,请输入正确的套餐名称'})
  150. data += cmdMode
  151. data += '00' #当前洗衣的状态
  152. data += '01' #启动键
  153. if cmdMode == '07': #桶自洁的时候时间设置不一样
  154. data += '07'
  155. else:
  156. data += '05'
  157. data += '05'
  158. devInfo = MessageSender.send_for_chuangwei(device = self.device,
  159. cmd = DeviceCmdCode.OPERATE_DEV_SYNC,
  160. payload = {'IMEI': self._device['devNo'], "funCode": '',
  161. 'data': data}, timeout=120)
  162. if devInfo.has_key('rst') and devInfo['rst'] != 0:
  163. if devInfo['rst'] == -1:
  164. raise ServiceException({'result': 2, 'description': u'洗衣机正在玩命找网络,您的金币还在,重试不需要重新付款,建议您试试旁边其他设备,或者稍后再试哦'})
  165. elif devInfo['rst'] == 1:
  166. raise ServiceException({'result': 2, 'description': u'洗衣机繁忙,无响应,您的金币还在,重试不需要重新付款,请您稍后再试哦'})
  167. infoDict = self.analyze_event_data(devInfo['data'])
  168. if infoDict['status'] == Const.DEV_WORK_STATUS_WORKING:#表示成功
  169. pass
  170. else:
  171. raise ServiceException({'result': 2, 'description': u'启动失败,请重试看能否解决'})
  172. infoDict.update({'openId':openId,'vCardId':self._vcard_id})
  173. Device.update_dev_control_cache(self._device['devNo'], infoDict)
  174. return devInfo