jh_dev_test.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. import os, sys
  4. import uuid
  5. import time
  6. import simplejson as json
  7. from django.conf import settings
  8. PROJECT_ROOT = os.path.join(os.path.abspath(os.path.split(os.path.realpath(__file__))[0] + "/.."), '..')
  9. sys.path.insert(0, PROJECT_ROOT)
  10. os.environ.update({"DJANGO_SETTINGS_MODULE": "configs.testing"})
  11. import django
  12. django.setup()
  13. from apps.web.core.networking import MessageSender
  14. from apps.web.core.mqtt_client import MqttClient
  15. from apps.web.device.models import Device
  16. # IMEI = '863488058983381'
  17. IMEI = '863488058609218'
  18. server = '211.159.224.10'
  19. port = 1883
  20. event_received = 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 event_received
  38. event_received = 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": "0D", "data": "0100"},
  52. # {"funCode": "0D", "data": "0700"},
  53. {"funCode": "01", "data": "00"},
  54. # {"funCode": "02", "data": "00"},
  55. {"funCode": "14", "data": "010001000A0064"},
  56. {"funCode": "0D", "data": "0100"},
  57. {"funCode": "14", "data": "020002000A0064"},
  58. {"funCode": "0D", "data": "0200"},
  59. {"funCode": "14", "data": "030003000A0064"},
  60. {"funCode": "0D", "data": "0300"},
  61. {"funCode": "14", "data": "040004000A0064"},
  62. {"funCode": "0D", "data": "0400"},
  63. {"funCode": "14", "data": "050005000A0064"},
  64. {"funCode": "0D", "data": "0500"},
  65. {"funCode": "14", "data": "060006000A0064"},
  66. {"funCode": "0D", "data": "0600"},
  67. {"funCode": "14", "data": "070007000A0064"},
  68. {"funCode": "0D", "data": "0700"},
  69. {"funCode": "14", "data": "080008000A0064"},
  70. {"funCode": "0D", "data": "0800"},
  71. {"funCode": "14", "data": "090009000A0064"},
  72. {"funCode": "0D", "data": "0900"},
  73. {"funCode": "14", "data": "0A000A000A0064"},
  74. {"funCode": "0D", "data": "0A00"},
  75. # {"funCode": "14", "data": "02000A000A0064"},
  76. # {"funCode": "14", "data": "03000A000A0064"},
  77. # {"funCode": "14", "data": "06000A04380064"},
  78. # {"funCode": "14", "data": "07000A04380064"},
  79. # {"funCode": "0D", "data": "0600"},
  80. # {"funCode": "14", "data": "02006404380064"},
  81. {"funCode": "15", "data": "01"},
  82. {"funCode": "0F", "data": "00"},
  83. # {"funCode": "05", "data": "03"},
  84. # {"funCode": "07", "data": "00"},
  85. # {"funCode": "09", "data": "0100"},
  86. # {"funCode": "0C", "data": "0400"},
  87. # {"funCode": "0C", "data": "0401"},
  88. # {"funCode": "0F", "data": "00"},
  89. {"funCode": "1E", "data": "00"},
  90. # {"funCode": "15", "data": "04"}
  91. ]
  92. count = 0
  93. errCount = 0
  94. dev = Device.get_dev(IMEI)
  95. if not dev:
  96. Device.bind(IMEI, IMEI)
  97. dev = Device.get_dev(IMEI)
  98. dev['server'] = '{}:{}'.format(server, port)
  99. print dev.server
  100. try:
  101. while True:
  102. count = count + 1
  103. if count > 2000:
  104. break
  105. for cmd in cmd_list:
  106. payload = {'cmd': 210, 'IMEI': IMEI}
  107. payload.update(cmd)
  108. # dev = Device.get_dev(IMEI)
  109. result = MessageSender.send(dev, 210, payload)
  110. if result['rst'] == 1:
  111. print 'error. cmd = {}'.format(str(cmd))
  112. errCount = errCount + 1
  113. # sys.exit(1)
  114. print('total = {}; err = {}'.format(count, errCount))
  115. # time.sleep(1)
  116. finally:
  117. print 'total = {}; err is: {}'.format(count, errCount)
  118. # for cmd in cmd_list:
  119. # payload = {'cmd': 210, 'IMEI': IMEI}
  120. # payload.update(cmd)
  121. #
  122. # dev = Device.get_dev(IMEI)
  123. #
  124. # result = MessageSender.send(dev, 210, payload)
  125. # if result['rst'] != 0:
  126. # print 'error. cmd = {}'.format(str(cmd))
  127. # exit(1)
  128. # #
  129. # for cmd in cmd_list:
  130. # payload = {'cmd': 210, 'IMEI': IMEI}
  131. # payload.update(cmd)
  132. #
  133. # dev = Device.get_dev(IMEI)
  134. #
  135. # MessageSender.async_send(dev, 210, payload)
  136. #
  137. # while True:
  138. # if event_received == False:
  139. # print('wait event to received.')
  140. # time.sleep(5)
  141. # continue
  142. # else:
  143. # exit(0)
  144. print 'finished'