# -*- coding: utf-8 -*- #!/usr/bin/env python import os, sys,datetime from os.path import abspath, join import simplejson as json import ConfigParser from apps.web.constant import Const, DeviceCmdCode from apps.web.core.networking import MessageSender try: configParser = ConfigParser.ConfigParser() configParser.read('./settings.ini') settingModuleName = configParser.get('CORE', 'setting') except Exception: settingModuleName = 'staging' settingModuleIdentifier = "configs.production" PROJECT_ROOT = abspath(os.path.split(os.path.realpath(__file__))[0] + "/..") sys.path.insert(0, PROJECT_ROOT) sys.path.insert(0, join(PROJECT_ROOT, "apps")) os.environ.update({"DJANGO_SETTINGS_MODULE": settingModuleIdentifier}) from apps.web.device.models import Device,Group from apps.web.dealer.models import Dealer from django.core.cache import caches import time # dealers = [dealer['username'] for dealer in Dealer.all()] dealers = ['13656229736'] for username in dealers: try: dealer = Dealer.objects.get(username = username) except Exception,e: continue groupIds = Group.get_group_ids_of_dealer(str(dealer.id)) devs = Device.get_devices_by_group(groupIds) for devNo,devInfo in devs.items(): if devInfo['softVer'] >= 'v1.7.6': continue if not devInfo.has_key('server'): continue if not '1883' in devInfo['server']: continue devStatus = caches['devmgr'].get(devNo) if devStatus is None: continue statusDict = json.loads(str(devStatus)) if not statusDict['online']: continue if devInfo['softVer'] <= 'v1.5': cmdPara = {"IMEI":devNo,"ota_set":{"fw_url":"http://www.washpayer.com/uploaded/SMARTBOX_1.0.0_Luat_V0014_8955_SSL.bin"}} else: cmdPara = {"IMEI":devNo,"ota_set":{"fw_url":"http://www.washpayer.com/uploaded/SMARTBOX_1.0.0_Luat_V0016_8955_SSL.bin"}} result = MessageSender.send(device = devInfo, cmd = DeviceCmdCode.SET_DEVINFO, payload = cmdPara) if result['rst'] != 0: print 'send updating cmd error,imei=%s' % devNo else: print 'success for imei=%s,send the message' % devNo time.sleep(15)