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