# coding=utf-8 import os import time os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.production"}) from base import init_env init_env(False) from apps.web.device.models import Device, DeviceDict from apps.web.core.networking import MessageSender from apps.web.device.define import DeviceChannelType def is_online(devNo): return bool(Device.get_dev(devNo).online) def change_ip_and_record(devNo, debug): if debug: print devNo else: device = Device.get_dev(devNo) # type: DeviceDict if device.channelType == DeviceChannelType.Channel_BT: return if len(devNo) < 15: return url = "http://121.43.232.118/uploaded/version/2g/SmartBox_6.1.151_Luat_V0020_8955_SSL_v3_100000.bin" url = url.replace('Luat_V0020_8955_SSL', device.coreVer) MessageSender.send( device = device, cmd = 202, payload = { "IMEI": device.devNo, "ota_set": { "fw_url": url, } }, timeout = 15 ) with open("change_driver_device.txt", "a") as f: f.write("{}\n".format(devNo)) def run(debug, range_list, done_list): filter = { 'softVer': 'v6.1.150', 'hwVer': 'v3', 'driverVersion': 'v5.0.2' } if range_list: filter.update({ 'devNo': {'$in': range_list} }) devices = Device.objects(__raw__ = filter) for _dev in devices: # type: Device if _dev.devNo in done_list: continue if not is_online(_dev.devNo): continue if 'DUMMY' in _dev.devNo: continue if 'LuaRTOS' in _dev.coreVer: print('{} is lua os'.format(_dev.devNo)) continue try: change_ip_and_record(_dev.devNo, debug) except Exception as e: print "{}-{}".format(_dev.devNo, e) if __name__ == '__main__': __list = [] try: with open("change_version_device.txt", "r") as f: lines = f.readlines() for line in lines: line = line.strip() __list.append(line) except Exception as e: pass __done_list = [] try: with open("change_driver_device.txt", "r") as f: lines = f.readlines() for line in lines: line = line.strip() __done_list.append(line) except Exception as e: pass run(debug = False, range_list = __list, done_list = __done_list)