# -*- coding: utf-8 -*- #!/usr/bin/env python import os, sys from os.path import abspath, join import ConfigParser from apps.web.constant import Const, DeviceCmdCode 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}) import simplejson as json from apps.web.device.models import Device,Group from apps.web.dealer.models import Dealer from django.core.cache import caches from apps.web.core.networking import MessageSender dealers = ['15775042578'] def motify_pulse(dev,width,interval,battery): result = MessageSender.send(dev, DeviceCmdCode.SET_DEVINFO, { 'IMEI': devNo, 'pulse_set': { 'pwm_inter': int(interval), 'pwm_wid': int(width), 'pwm_idle': battery } }) if result['rst'] != 0: return False try: Device.get_collection().update_one({'devNo': devNo}, { '$set': {'pulseInterval1': interval, 'pulseWidth1': width,'battery':battery}}) Device.invalid_device_cache(devNo) except Exception, e: print 'database error!' return True 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(): devStatus = caches['devmgr'].get(devNo) if devStatus is None: continue statusDict = json.loads(str(devStatus)) if statusDict['status'] != 0: print 'the dev=%s in offline' % devInfo['logicalCode'] continue if devInfo['pulseInterval1'] == 500 and devInfo['pulseWidth1'] == 200: print 'the dev=%s para is ok' % devInfo['logicalCode'] continue result = motify_pulse(devInfo, 200, 500,devInfo['battery']) if not result : print 'send updating cmd error,imei=%s' % devInfo['logicalCode'] print 'set para success dev = %s' % devInfo['logicalCode']