123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194 |
- # -*- coding: utf-8 -*-
- from apps.web.core.adapter.base import *
- from apps.web.device.models import Device
- class WasherCWBox(SmartBox):
- def __init__(self, device):
- super(WasherCWBox, self).__init__(device)
- def check_dev_status(self, attachParas=None):
- devInfo = MessageSender.send_for_chuangwei(device = self.device,
- cmd = DeviceCmdCode.GET_DEVINFO,
- payload = {'IMEI': self._device['devNo']})
- if devInfo.has_key('rst') and devInfo['rst'] != 0:
- if devInfo['rst'] == -1:
- raise ServiceException(
- {'result': 2, 'description': u'当前洗衣机正在玩命找网络,请您稍候再试'})
- elif devInfo['rst'] == 1:
- raise ServiceException(
- {'result': 2, 'description': u'当前洗衣机忙,无响应,请您稍候再试'})
- faultCode = devInfo['fault_status']
- if faultCode != 0:
- if faultCode == 1:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机进入超时故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 2:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机排水超时故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 3:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机排水脱水不平衡,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 4:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机排水门开关报警,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 5:
- raise ServiceException({'result': 2, 'description': u'当前水位传感器异常,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 6:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机预约开门故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 7:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机电机故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 8:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机童锁开门,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif faultCode == 9:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机存储器故障,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- status = devInfo['run_status']
- if status == 3:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机正在洗涤中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif status == 4:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机正在漂洗中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif status == 5:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机正在脱水中,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- elif status == 7:
- raise ServiceException({'result': 2, 'description': u'当前洗衣机出现异常,暂时不能用,建议您试试旁边其他设备,或者稍后再试哦'})
- def analyze_event_data(self, data):
- temp = data[2:4]
- washMode = ''
- if temp == '00':
- washMode = u''
- elif temp == '01':
- washMode = u'标准洗'
- elif temp == '02':
- washMode = u'快速洗'
- elif temp == '03':
- washMode = u'强力洗'
- elif temp == '04':
- washMode = u'单脱水'
- elif temp == '05':
- washMode = u'轻柔洗'
- elif temp == '06':
- washMode = u'漂洗并脱水'
- elif temp == '07':
- washMode = u'自洁'
- elif temp == '08':
- washMode = u'能效-全载'
- elif temp == '09':
- washMode = u'能效-半载'
- elif temp == '0a':
- washMode = u'整机自检'
- elif temp == '0b':
- washMode = u'电脑版自检'
- temp = data[4:6]
- status = Const.DEV_WORK_STATUS_WORKING
- if temp == '03':
- statusInfo = u'洗涤中'
- elif temp == '04':
- statusInfo = u'漂洗中'
- elif temp == '05':
- statusInfo = u'脱水中'
- elif temp == '06':
- status = Const.DEV_WORK_STATUS_IDLE
- statusInfo = u'洗衣结束'
- elif temp == '07':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'异常'
- else:
- status = Const.DEV_WORK_STATUS_IDLE
- statusInfo = u'空闲'
- leftTime = int(data[6:8],16)
- temp = data[8:10]
- if temp == '00':
- pass
- elif temp == '01':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'进水超时'
- elif temp == '02':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'排水超时'
- elif temp == '03':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'脱水不平衡'
- elif temp == '04':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'门开关报警'
- elif temp == '05':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'水位传感器异常'
- elif temp == '06':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'预约开门'
- elif temp == '07':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'电机故障告警'
- elif temp == '08':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'童锁开门'
- elif temp == '09':
- status = Const.DEV_WORK_STATUS_FAULT
- statusInfo = u'存储器故障'
- return {'washMode':washMode,'status':status,'statusInfo':statusInfo,'leftTime':leftTime}
- def start_device(self, package, openId, attachParas):
- washName = package['name']
- data,cmdMode = 'aa',''
- if washName == u'标准洗':
- cmdMode = '01'
- elif washName == u'快速洗':
- cmdMode = '02'
- elif washName == u'强力洗':
- cmdMode = '03'
- elif washName == u'单脱水':
- cmdMode = '04'
- elif washName == u'轻柔洗':
- cmdMode = '05'
- elif washName == u'漂洗并脱水':
- cmdMode = '06'
- elif washName == u'自洁':
- cmdMode = '07'
- elif washName == u'能效-全载':
- cmdMode = '08'
- elif washName == u'能效-半载':
- cmdMode = '09'
- elif washName == u'整机自检':
- cmdMode = '0a'
- elif washName == u'电脑版自检':
- cmdMode = '0b'
- else:
- raise ServiceException({'result': 2, 'description': u'套餐名称错误,请输入正确的套餐名称'})
- data += cmdMode
- data += '00' #当前洗衣的状态
- data += '01' #启动键
- if cmdMode == '07': #桶自洁的时候时间设置不一样
- data += '07'
- else:
- data += '05'
- data += '05'
- devInfo = MessageSender.send_for_chuangwei(device = self.device,
- cmd = DeviceCmdCode.OPERATE_DEV_SYNC,
- payload = {'IMEI': self._device['devNo'], "funCode": '',
- 'data': data}, timeout=120)
- if devInfo.has_key('rst') and devInfo['rst'] != 0:
- if devInfo['rst'] == -1:
- raise ServiceException({'result': 2, 'description': u'洗衣机正在玩命找网络,您的金币还在,重试不需要重新付款,建议您试试旁边其他设备,或者稍后再试哦'})
- elif devInfo['rst'] == 1:
- raise ServiceException({'result': 2, 'description': u'洗衣机繁忙,无响应,您的金币还在,重试不需要重新付款,请您稍后再试哦'})
- infoDict = self.analyze_event_data(devInfo['data'])
- if infoDict['status'] == Const.DEV_WORK_STATUS_WORKING:#表示成功
- pass
- else:
- raise ServiceException({'result': 2, 'description': u'启动失败,请重试看能否解决'})
- infoDict.update({'openId':openId,'vCardId':self._vcard_id})
- Device.update_dev_control_cache(self._device['devNo'], infoDict)
- return devInfo
|