hanzhen.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import logging
  4. import time
  5. from apps.web.constant import DeviceCmdCode
  6. from apps.web.core.adapter.hanzhen import FuncCode, Device
  7. from apps.web.eventer.base import WorkEvent
  8. from apps.web.eventer import EventBuilder
  9. from apps.web.user.models import ServiceProgress
  10. logger = logging.getLogger(__name__)
  11. class builder(EventBuilder):
  12. def __getEvent__(self, device_event):
  13. event_data = self.deviceAdapter.analyze_event_data(device_event['data'])
  14. if device_event['cmd'] == 100:
  15. return Hanzhen(self.deviceAdapter, event_data)
  16. class Hanzhen(WorkEvent):
  17. def do(self, **args):
  18. time.sleep(2)
  19. devCache = Device.get_dev_control_cache(self.device["devNo"])
  20. if not devCache:
  21. logger.info("no dev cache!")
  22. return
  23. sendTime = devCache.get("sendTime")
  24. openId = devCache.get("openId")
  25. confirmTime = self.event_data.get("sendTime")
  26. confirmFunCode = self.event_data.get("funCode")
  27. if any([
  28. sendTime != confirmTime,
  29. confirmFunCode != FuncCode.START_DEV
  30. ]):
  31. return
  32. self.deviceAdapter._send_data(funCode = FuncCode.START_DEV, data = "0000",
  33. cmd = DeviceCmdCode.OPERATE_DEV_NO_RESPONSE)
  34. logger.info("send ok")
  35. # 消费时间里面记录消费详情 如时间等等 待协议完善
  36. consumeDict = {
  37. }
  38. ServiceProgress.update_progress_and_consume_rcd(
  39. self.device["ownerId"],
  40. {'open_id': openId, 'device_imei': self.device['devNo'], 'isFinished': False},
  41. consumeDict
  42. )
  43. Device.invalid_device_control_cache(self.device["devNo"])