| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149 | # -*- coding: utf-8 -*-# !/usr/bin/env pythonimport os, sysimport uuidimport timeimport simplejson as jsonfrom django.conf import settingsPROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')sys.path.insert(0, PROJECT_ROOT)os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.testing"})import djangodjango.setup()from apps.web.core.networking import MessageSenderfrom apps.web.core.mqtt_client import MqttClientfrom apps.web.device.models import DeviceIMEI = '867435053812616'server = '211.159.224.10'port = 1884event_received = Falsemqttc = MqttClient(client_id = 'webapp_' + str(uuid.uuid1()))def on_connect(client, userdata, flags, rc):    # 订阅设备的120响应事件,用于检查    device_topic = 'server/{}/120'.format(IMEI)    client.subscribe(device_topic, qos = 0)    device_topic = 'server/{}/110'.format(IMEI)    client.subscribe(device_topic, qos = 0)    device_topic = 'server/{}/100'.format(IMEI)    client.subscribe(device_topic, qos = 0)    device_topic = 'server/{}/301'.format(IMEI)    client.subscribe(device_topic, qos = 0)    device_topic = 'server/{}/307'.format(IMEI)    client.subscribe(device_topic, qos = 0)def on_message(mqttc, obj, msg):    msgDict = json.loads(bytes.decode(msg.payload))    print('received event msg = {}'.format(msgDict))    event_received = True    mqttc.loop_stop()    mqttc.disconnect()    mqttc.close()try:    mqttc.on_message = on_message    mqttc.on_connect = on_connect    mqttc.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD)    mqttc.connect(server, port, 60)    mqttc.loop_start()finally:    passCHECK_ROUNDS = 6PWM_WID = 80PWM_INTER = 600PWM_IDLE = 0UART_TIMEOUT = 20CYCLE_SET = 120DEBUG = TrueENABLE_PG = Truecmd_list = [    {"cmd": 201},    {"cmd": 201, "fields": ['soft_ver']},    {"cmd": 201, "fields": ['signal']},    # {"cmd":202, "addr_set":{"ip1":"211.159.224.10","port1":1883}},    {"cmd": 202, "debug": DEBUG},    {"cmd": 202, "cycle_set": CYCLE_SET},    {"cmd": 202, "check_rounds": CHECK_ROUNDS},    # {"cmd": 202, "keepalive_time": 320},    {"cmd": 202, "coin_clear": True},    {"cmd": 202, "clear_bls": True},    # {"cmd": 202, "factory_set": True},    # {"cmd": 202, "debounce": 25},    # {"cmd": 202, "pg_inter": 62},    {"cmd": 202, "enable_pg": ENABLE_PG},    {"cmd": 202, "uart_timeout": UART_TIMEOUT},    {"cmd": 202,     "ntp_servers": ["ntp7.aliyun.com", "ntp6.aliyun.com", "ntp5.aliyun.com", "ntp4.aliyun.com", "ntp3.aliyun.com",                     "ntp2.aliyun.com", "ntp1.aliyun.com", "ntp.ntsc.ac.cn"]},    {"cmd": 202, "pulse_set": {"pwm_wid": PWM_WID, "pwm_inter": PWM_INTER, "pwm_idle": PWM_IDLE}},    {"cmd": 202, "max_coin": 255},    # {"cmd": 202, "ota_set": {"fw_url": "http://www.washpayer.com/uploaded/1SMART_BOX_3.2.4_Luat_V0020_8955_SSL.bin"}},    # {"cmd": 202, "driver_set": {"driver_url": "http://121.43.232.118/uploaded/version/drivers/task/100210_uart_charge_dianchuan_v1.5/default.driver"}},    {"cmd": 203, "app_pay": 8},    {"cmd": 203, "app_pay": 12},]for cmd in cmd_list:    payload = {'IMEI': IMEI}    payload.update(cmd)    dev = Device.get_dev(IMEI)    result = MessageSender.send(dev, payload['cmd'], payload)    if result['rst'] != 0:        print 'error. cmd = {}'.format(str(cmd))        exit(1)result = MessageSender.send(dev, 201, {'cmd': 201})if result['check_rounds'] != CHECK_ROUNDS:    print("check_rounds update failure.")if result['pwm_wid'] != PWM_WID:    print("pwm_wid update failure.")if result['cycle'] != CYCLE_SET:    print("cycle_set update failure.")if result['uart_timeout'] != UART_TIMEOUT:    print("uart_timeout update failure.")if result['pwm_inter'] != PWM_INTER:    print("pwm_inter update failure.")if result['debug'] != DEBUG:    print("debug update failure.")while True:    if event_received == False:        print('wait event to received.')        time.sleep(5)        continue    else:        exit(1)print 'finished'
 |