update_device_for_dealer.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. # -*- coding: utf-8 -*-
  2. #!/usr/bin/env python
  3. import os, sys,datetime
  4. from os.path import abspath, join
  5. import simplejson as json
  6. import ConfigParser
  7. from apps.web.constant import Const, DeviceCmdCode
  8. from apps.web.core.networking import MessageSender
  9. try:
  10. configParser = ConfigParser.ConfigParser()
  11. configParser.read('./settings.ini')
  12. settingModuleName = configParser.get('CORE', 'setting')
  13. except Exception:
  14. settingModuleName = 'staging'
  15. settingModuleIdentifier = "configs.production"
  16. PROJECT_ROOT = abspath(os.path.split(os.path.realpath(__file__))[0] + "/..")
  17. sys.path.insert(0, PROJECT_ROOT)
  18. sys.path.insert(0, join(PROJECT_ROOT, "apps"))
  19. os.environ.update({"DJANGO_SETTINGS_MODULE": settingModuleIdentifier})
  20. from apps.web.device.models import Device,Group
  21. from apps.web.dealer.models import Dealer
  22. from django.core.cache import caches
  23. import time
  24. # dealers = [dealer['username'] for dealer in Dealer.all()]
  25. dealers = ['13656229736']
  26. for username in dealers:
  27. try:
  28. dealer = Dealer.objects.get(username = username)
  29. except Exception,e:
  30. continue
  31. groupIds = Group.get_group_ids_of_dealer(str(dealer.id))
  32. devs = Device.get_devices_by_group(groupIds)
  33. for devNo,devInfo in devs.items():
  34. if devInfo['softVer'] >= 'v1.7.6':
  35. continue
  36. if not devInfo.has_key('server'):
  37. continue
  38. if not '1883' in devInfo['server']:
  39. continue
  40. devStatus = caches['devmgr'].get(devNo)
  41. if devStatus is None:
  42. continue
  43. statusDict = json.loads(str(devStatus))
  44. if not statusDict['online']:
  45. continue
  46. if devInfo['softVer'] <= 'v1.5':
  47. cmdPara = {"IMEI":devNo,"ota_set":{"fw_url":"http://www.washpayer.com/uploaded/SMARTBOX_1.0.0_Luat_V0014_8955_SSL.bin"}}
  48. else:
  49. cmdPara = {"IMEI":devNo,"ota_set":{"fw_url":"http://www.washpayer.com/uploaded/SMARTBOX_1.0.0_Luat_V0016_8955_SSL.bin"}}
  50. result = MessageSender.send(device = devInfo, cmd = DeviceCmdCode.SET_DEVINFO, payload = cmdPara)
  51. if result['rst'] != 0:
  52. print 'send updating cmd error,imei=%s' % devNo
  53. else:
  54. print 'success for imei=%s,send the message' % devNo
  55. time.sleep(15)