dc_dev_test.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import os
  4. import sys
  5. import time
  6. import uuid
  7. import simplejson as json
  8. from django.conf import settings
  9. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  10. sys.path.insert(0, PROJECT_ROOT)
  11. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.testing"})
  12. import django
  13. django.setup()
  14. from apps.web.core.networking import MessageSender
  15. from apps.web.core.mqtt_client import MqttClient
  16. from apps.web.device.models import Device
  17. IMEI = '863488058983381'
  18. server = '211.159.224.10'
  19. port = 1883
  20. can_quit = False
  21. mqttc = MqttClient(client_id = 'webapp_' + str(uuid.uuid1()))
  22. def on_connect(client, userdata, flags, rc):
  23. # 订阅设备的120响应事件,用于检查
  24. device_topic = 'server/{}/120'.format(IMEI)
  25. client.subscribe(device_topic, qos = 0)
  26. device_topic = 'server/{}/110'.format(IMEI)
  27. client.subscribe(device_topic, qos = 0)
  28. device_topic = 'server/{}/100'.format(IMEI)
  29. client.subscribe(device_topic, qos = 0)
  30. device_topic = 'server/{}/301'.format(IMEI)
  31. client.subscribe(device_topic, qos = 0)
  32. device_topic = 'server/{}/307'.format(IMEI)
  33. client.subscribe(device_topic, qos = 0)
  34. def on_message(mqttc, obj, msg):
  35. msgDict = json.loads(bytes.decode(msg.payload))
  36. print('received event msg = {}'.format(msgDict))
  37. global can_quit
  38. can_quit = True
  39. mqttc.loop_stop()
  40. mqttc.disconnect()
  41. mqttc.close()
  42. try:
  43. mqttc.on_message = on_message
  44. mqttc.on_connect = on_connect
  45. mqttc.username_pw_set(settings.MQTT_USER, settings.MQTT_PSWD)
  46. mqttc.connect(server, port, 60)
  47. mqttc.loop_start()
  48. finally:
  49. pass
  50. cmd_list = [
  51. # {"funCode": "0B", "data": "01"},
  52. {"funCode": "01", "data": "00"},
  53. {"funCode": "0C", "data": "00"},
  54. {"funCode": "15", "data": "00"},
  55. {"funCode": "02", "data": "01000001E0"},
  56. {"funCode": "0B", "data": "01"},
  57. {"funCode": "02", "data": "02000001E0"},
  58. {"funCode": "0B", "data": "02"},
  59. {"funCode": "02", "data": "03000001E0"},
  60. {"funCode": "0B", "data": "03"},
  61. {"funCode": "02", "data": "04000001E0"},
  62. {"funCode": "0B", "data": "04"},
  63. {"funCode": "02", "data": "05000001E0"},
  64. {"funCode": "0B", "data": "05"},
  65. {"funCode": "02", "data": "06000001E0"},
  66. {"funCode": "0B", "data": "06"},
  67. {"funCode": "02", "data": "07000001E0"},
  68. {"funCode": "0B", "data": "07"},
  69. {"funCode": "02", "data": "08000001E0"},
  70. {"funCode": "0B", "data": "08"},
  71. {"funCode": "02", "data": "09000001E0"},
  72. {"funCode": "0B", "data": "09"},
  73. {"funCode": "02", "data": "0A000001E0"},
  74. {"funCode": "0B", "data": "0A"},
  75. # {"funCode": "06", "data": "03"},
  76. # {"funCode": "07", "data": "00"},
  77. # {"funCode": "08", "data": "01F40100F000F000F0"},
  78. # {"funCode": "09", "data": "0101"},
  79. # {"funCode": "0A", "data": "0101"},
  80. # {"funCode": "0B", "data": "01"},
  81. # {"funCode": "14", "data": "00C80101900701F405"}
  82. ]
  83. bind = False
  84. dev = Device.get_dev(IMEI)
  85. if not dev:
  86. Device.bind(IMEI, IMEI)
  87. dev = Device.get_dev(IMEI)
  88. bind = True
  89. dev['server'] = '211.159.224.10:1883'
  90. # for payload in cmd_list:
  91. # result = MessageSender.send(dev, 210, payload)
  92. # if result['rst'] != 0:
  93. # print 'error. cmd = {}'.format(str(cmd_list))
  94. # exit(1)
  95. i = 0
  96. while i < 1000:
  97. for payload in cmd_list:
  98. result = MessageSender.send(dev, 210, payload)
  99. if result['rst'] != 0:
  100. print 'error. cmd = {}'.format(str(cmd_list))
  101. exit(1)
  102. i = i + 1
  103. #
  104. # for payload in cmd_list:
  105. # MessageSender.async_send(dev, 210, payload)
  106. #
  107. # for payload in cmd_list:
  108. # MessageSender.send_no_wait(device = dev,
  109. # cmd = 220,
  110. # payload = payload)
  111. while True:
  112. if not can_quit:
  113. print('wait event to received.')
  114. time.sleep(5)
  115. continue
  116. else:
  117. break
  118. if bind:
  119. Device.unbind(dev)
  120. print 'finished'