123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- # -*- coding: utf-8 -*-
- # !/usr/bin/env python
- import sys
- import uuid
- import os
- PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
- sys.path.insert(0, PROJECT_ROOT)
- import os
- os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'configs.{env}'.format(env = 'production'))
- from django.conf import settings
- from script.base import init_env
- import simplejson as json
- init_env(interactive = False)
- from apps.web.core.networking import MessageSender
- from apps.web.device.models import Device, DeviceDict
- from apps.web.constant import Const, DeviceOnlineStatus
- from apps.web.core.mqtt_client import MqttClient
- driver_code = '100230'
- driver_ver = '1.0.5'
- driver_path = 'http://121.43.232.118/uploaded/version/drivers/task/100230_uart_huandian_anqi/default.driver'
- max_count = -1
- mqttc1883 = None
- mqttc1884 = None
- try:
- def on_connect(client, userdata, flags, rc):
- pass
- def on_message(mqttc, obj, msg):
- # type: (MqttClient, obj, json)->None
- msgDict = json.loads(bytes.decode(msg.payload))
- imei = msgDict['IMEI']
- print 'msg dict is: {}'.format(msgDict)
- def on_disconnect(client, userdata, self):
- print('exit. client = %s' % str(client))
- mqttc1883 = MqttClient(client_id = 'webapp_' + str(uuid.uuid1()))
- try:
- mqttc1883.on_message = on_message
- mqttc1883.on_connect = on_connect
- mqttc1883.on_disconnect = on_disconnect
- mqttc1883.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD)
- mqttc1883.connect(settings.MQTT_HOSTNAME, 1883, 60)
- mqttc1883.loop_start()
- except Exception as e:
- print(e)
- mqttc1884 = MqttClient(client_id = 'webapp_' + str(uuid.uuid1()))
- try:
- mqttc1884.on_message = on_message
- mqttc1884.on_connect = on_connect
- mqttc1884.on_disconnect = on_disconnect
- mqttc1884.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD)
- mqttc1884.connect(settings.MQTT_HOSTNAME, 1884, 60)
- mqttc1884.loop_start()
- except Exception as e:
- print(e)
- count = 0
- objs = Device.get_collection().find({'driverCode':driver_code})
- for obj in objs:
- try:
- if max_count != -1 and count >= 1:
- print 'max count reach.'
- break
- devNo = obj['devNo']
- dev = Device.get_dev(devNo) # type: DeviceDict
- print(dev)
- if dev.online != DeviceOnlineStatus.DEV_STATUS_ONLINE:
- print '{} is offline.'.format(devNo)
- continue
- if dev['driverVersion'] == 'v{}'.format(driver_ver):
- continue
- cmdPara = {'IMEI': devNo, "driver_set": { "driver_url": driver_path}}
- print cmdPara
- result = MessageSender.send(device = dev, cmd = Const.CMD_CODE_SET_DEVINFO, payload = cmdPara, timeout = 15)
- if result['rst'] != 0:
- print 'IMEI({}) failure.'.format(devNo)
- continue
- else:
- count = count + 1
- except Exception, e:
- print 'some exception =%s' % e
- finally:
- if mqttc1883:
- mqttc1883.loop_stop()
- mqttc1883.disconnect()
- mqttc1883.close()
- if mqttc1884:
- mqttc1884.loop_stop()
- mqttc1884.disconnect()
- mqttc1884.close()
- print('finished')
|