trap_transpond.py 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. import os
  2. import django
  3. import sys
  4. BASE_DIR = os.path.dirname(os.path.abspath(__file__)) # 定位到你的django根目录
  5. sys.path.append(os.path.abspath(os.path.join(BASE_DIR, os.pardir)))
  6. os.environ.setdefault("DJANGO_SETTINGS_MODULE",
  7. "yfwlw_pro.settings") # project_name 项目名称
  8. django.setup()
  9. import json
  10. import time
  11. import requests
  12. import datetime
  13. import sys
  14. from apps.ReportManage.all_dict import trap_list
  15. from apps.AppInfoManage.models import Equip, Equip_type, Trapstatus, Trapdata
  16. print("--------trap_transpond start!-----------")
  17. url = 'http://telemo.org/pest/data/grid/userdataview.do'
  18. # dat= {'username': 'jkTest','password': '123456','sign':'cf6345abb2ed948a534467d278a79190'} #将携带的参数传给params
  19. # r = requests.get(url, params=dat)
  20. # rec = r.text
  21. # data = json.loads(rec)
  22. # print(data['resultData'][-1])
  23. while True:
  24. nowtime = datetime.datetime.now().strftime('%Y%m%d')
  25. origin = sys.stdout
  26. f = open('../logs/'+nowtime+'trap.txt','a+')
  27. sys.stdout = f
  28. for i in trap_list:
  29. print("============================")
  30. r = requests.get(url, params=i)
  31. rec = r.text
  32. data = json.loads(rec)
  33. # print("data:",data)
  34. try:
  35. trapstatus = data['resultData'][-1]
  36. except:
  37. print("-------------continue-------------")
  38. continue
  39. # print("设备位置为:",trapstatus)
  40. imei = trapstatus['modelSerail']
  41. detester = datetime.datetime.strptime(trapstatus['createDate'],"%Y-%m-%d %H:%M:%S")
  42. trap_exist = Equip.objects.filter(equip_id=imei)
  43. print("-----------imei:%s---------------------"%imei)
  44. print(datetime.datetime.now())
  45. # 设备存在:
  46. if trap_exist.exists():
  47. imei = Equip.objects.get(equip_id=imei)
  48. if Trapstatus.objects.filter(equip_id=imei).exists():
  49. print("<-----this equip's status is existed!----->")
  50. sta1 = Trapdata.objects.filter(equip_id=imei).order_by('-upl_time')[:1]
  51. if Trapdata.objects.filter(equip_id=imei).exists():
  52. if sta1[0].upl_time == detester:
  53. print("<-----data time exists!----->")
  54. else:
  55. # 设备数据表直接储存数据
  56. Trapdata.objects.create(equip_id=imei, addr=trapstatus['locationName'],
  57. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  58. pestnum = trapstatus['pestNum'],upl_time=detester)
  59. print("<-----data update success!----->")
  60. else:
  61. # 设备数据表直接储存数据
  62. Trapdata.objects.create(equip_id=imei, addr=trapstatus['locationName'],
  63. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  64. pestnum = trapstatus['pestNum'],upl_time=detester)
  65. print("<-----data update success!----->")
  66. try:
  67. sta = Trapstatus.objects.get(equip_id=imei)
  68. sta.addr = trapstatus['locationName']
  69. sta.tem = trapstatus['temperature']
  70. sta.hum = trapstatus['humidity']
  71. sta.pest = trapstatus['cnName']
  72. sta.pestnum = trapstatus['pestNum']
  73. sta.upl_time = detester
  74. sta.save()
  75. print("<-----status update success!----->")
  76. except:
  77. print("<-----status update failed!----->")
  78. else:
  79. # 设备状态表不存在、创建状态表:
  80. print("<-----this equip's status is not existed!----->")
  81. try:
  82. # 设备数据表直接储存数据
  83. Trapdata.objects.create(equip_id=e_id, addr=trapstatus['locationName'],
  84. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  85. pestnum = trapstatus['pestNum'],upl_time=detester)
  86. print("<-----data update success!----->")
  87. except:
  88. print("<-----data update failed!----->")
  89. try:
  90. e_id = Equip.objects.get(equip_id=imei)
  91. try:
  92. Trapstatus.objects.create(equip_id=e_id, addr=trapstatus['locationName'],
  93. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  94. pestnum = trapstatus['pestNum'],upl_time=detester)
  95. print("<-----this equip's status table re-create successed!----->")
  96. except:
  97. print("<-----this equip's status table re-create failed!----->")
  98. except:
  99. print("<-----this equip didn't exist!----->")
  100. else:
  101. # 设备不存在,在设备列表中创建:
  102. try:
  103. # 得到设备类型实例:
  104. equip_t = Equip_type.objects.get(type_id=8)
  105. try:
  106. e_id = Equip.objects.create(equip_id=imei, equip_type=equip_t)
  107. print("<-----this imei add successed!----->")
  108. try:
  109. # 设备数据表直接储存数据
  110. Trapdata.objects.create(equip_id=e_id, addr=trapstatus['locationName'],
  111. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  112. pestnum = trapstatus['pestNum'],upl_time=detester)
  113. print("<-----data update success!----->")
  114. except:
  115. print("<-----data update failed!----->")
  116. try:
  117. Trapstatus.objects.create(equip_id=e_id, addr=trapstatus['locationName'],
  118. tem=trapstatus['temperature'], hum=trapstatus['humidity'], pest=trapstatus['cnName'],
  119. pestnum = trapstatus['pestNum'],upl_time=detester)
  120. print("<-----this imei register successed!----->")
  121. except:
  122. print("<-----this imei register failed!----->")
  123. except:
  124. print("<-----this imei add failed!----->")
  125. except:
  126. print("<-----this imei register failed because this equip type is not exist,!----->")
  127. sys.stdout = origin
  128. f.close()
  129. time.sleep(3600)