# -*- coding: utf-8 -*- # !/usr/bin/env python import datetime import logging from apilib.utils_datetime import to_datetime from apps.web.constant import DeviceCmdCode, MQTT_TIMEOUT from apps.web.core.networking import MessageSender from apps.web.device.models import Device from apps.web.eventer.base import WorkEvent from apps.web.eventer import EventBuilder logger = logging.getLogger(__name__) class builder(EventBuilder): def __getEvent__(self, device_event): if device_event['cmd'] == 100: return ZhiyangjiEvent(self.deviceAdapter, device_event) class ZhiyangjiEvent(WorkEvent): def do(self, **args): devNo = self.device['devNo'] logger.info('zhiyangji event detected, devNo=%s,msg=%s' % (devNo, self.event_data)) if self.device.softVer.startswith('v5.3.'): pass else: # 老版本. 如果制氧机还没有过期,就直接把制氧机的剩余时间启动 ctrInfo = Device.get_dev_control_cache(devNo) if (not ctrInfo.has_key('startTime')): return needTime = int(ctrInfo['needTime']) startTime = to_datetime(ctrInfo['startTime']) passTime = (datetime.datetime.now() - startTime).total_seconds() if passTime > needTime: logger.info('time is over') return givenTime = needTime - passTime devInfo = MessageSender.send(device = self.device, cmd = DeviceCmdCode.PAY_MONEY, payload = { 'IMEI': self.device['devNo'], 'duration': givenTime }, timeout = MQTT_TIMEOUT.START_DEVICE) if devInfo.has_key('rst') and devInfo['rst'] != 0: if devInfo['rst'] == -1: logger.info('give left time error,devNo=%s,givenTime=%s' % (devNo, givenTime)) elif devInfo['rst'] == 1: logger.info('give left time error,devNo=%s,givenTime=%s' % (devNo, givenTime)) logger.info('add time for zhiyangji=%s seconds=%s' % (self.device['devNo'], givenTime))