# -*- coding: utf-8 -*- # !/usr/bin/env python import logging import time from apps.web.constant import DeviceCmdCode from apps.web.core.adapter.hanzhen import FuncCode, Device from apps.web.eventer.base import WorkEvent from apps.web.eventer import EventBuilder from apps.web.user.models import ServiceProgress logger = logging.getLogger(__name__) class builder(EventBuilder): def __getEvent__(self, device_event): event_data = self.deviceAdapter.analyze_event_data(device_event['data']) if device_event['cmd'] == 100: return Hanzhen(self.deviceAdapter, event_data) class Hanzhen(WorkEvent): def do(self, **args): time.sleep(2) devCache = Device.get_dev_control_cache(self.device["devNo"]) if not devCache: logger.info("no dev cache!") return sendTime = devCache.get("sendTime") openId = devCache.get("openId") confirmTime = self.event_data.get("sendTime") confirmFunCode = self.event_data.get("funCode") if any([ sendTime != confirmTime, confirmFunCode != FuncCode.START_DEV ]): return self.deviceAdapter._send_data(funCode = FuncCode.START_DEV, data = "0000", cmd = DeviceCmdCode.OPERATE_DEV_NO_RESPONSE) logger.info("send ok") # 消费时间里面记录消费详情 如时间等等 待协议完善 consumeDict = { } ServiceProgress.update_progress_and_consume_rcd( self.device["ownerId"], {'open_id': openId, 'device_imei': self.device['devNo'], 'isFinished': False}, consumeDict ) Device.invalid_device_control_cache(self.device["devNo"])