# -*- 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