motify_device_para_for_dealer.py 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import os, sys
  4. from os.path import abspath, join
  5. import ConfigParser
  6. from apps.web.constant import Const, DeviceCmdCode
  7. try:
  8. configParser = ConfigParser.ConfigParser()
  9. configParser.read('./settings.ini')
  10. settingModuleName = configParser.get('CORE', 'setting')
  11. except Exception:
  12. settingModuleName = 'staging'
  13. settingModuleIdentifier = "configs.production"
  14. PROJECT_ROOT = abspath(os.path.split(os.path.realpath(__file__))[0] + "/..")
  15. sys.path.insert(0, PROJECT_ROOT)
  16. sys.path.insert(0, join(PROJECT_ROOT, "apps"))
  17. os.environ.update({"DJANGO_SETTINGS_MODULE": settingModuleIdentifier})
  18. import simplejson as json
  19. from apps.web.device.models import Device,Group
  20. from apps.web.dealer.models import Dealer
  21. from django.core.cache import caches
  22. from apps.web.core.networking import MessageSender
  23. dealers = ['15775042578']
  24. def motify_pulse(dev,width,interval,battery):
  25. result = MessageSender.send(dev, DeviceCmdCode.SET_DEVINFO, {
  26. 'IMEI': devNo,
  27. 'pulse_set': {
  28. 'pwm_inter': int(interval),
  29. 'pwm_wid': int(width),
  30. 'pwm_idle': battery
  31. }
  32. })
  33. if result['rst'] != 0:
  34. return False
  35. try:
  36. Device.get_collection().update_one({'devNo': devNo}, {
  37. '$set': {'pulseInterval1': interval, 'pulseWidth1': width,'battery':battery}})
  38. Device.invalid_device_cache(devNo)
  39. except Exception, e:
  40. print 'database error!'
  41. return True
  42. for username in dealers:
  43. try:
  44. dealer = Dealer.objects.get(username = username)
  45. except Exception,e:
  46. continue
  47. groupIds = Group.get_group_ids_of_dealer(str(dealer.id))
  48. devs = Device.get_devices_by_group(groupIds)
  49. for devNo,devInfo in devs.items():
  50. devStatus = caches['devmgr'].get(devNo)
  51. if devStatus is None:
  52. continue
  53. statusDict = json.loads(str(devStatus))
  54. if statusDict['status'] != 0:
  55. print 'the dev=%s in offline' % devInfo['logicalCode']
  56. continue
  57. if devInfo['pulseInterval1'] == 500 and devInfo['pulseWidth1'] == 200:
  58. print 'the dev=%s para is ok' % devInfo['logicalCode']
  59. continue
  60. result = motify_pulse(devInfo, 200, 500,devInfo['battery'])
  61. if not result :
  62. print 'send updating cmd error,imei=%s' % devInfo['logicalCode']
  63. print 'set para success dev = %s' % devInfo['logicalCode']