mongoclient.py 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. import pymongo
  2. from urllib import parse
  3. import datetime
  4. def get_table():
  5. passwd = parse.quote_plus("yfkj@6020")
  6. user = parse.quote_plus("root")
  7. myclient = pymongo.MongoClient("mongodb://{0}:{1}@8.136.98.49:57017/".format(user,passwd))
  8. db = myclient.smartfarming
  9. return db
  10. def get_device_info(device_id):
  11. # 获取设备的版本,经纬度
  12. db = get_table()
  13. sa_device = db.sa_device
  14. query = {'device_id': device_id}
  15. device = sa_device.find_one(query, {"dver_num": 1, "lng": 1, "lat": 1, "_id": 0})
  16. return device
  17. def get_qxz_base_info(device_id, start, end):
  18. start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
  19. end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
  20. # sim卡信息
  21. db = get_table()
  22. qxz_base_info = db.sa_qxz_base_info
  23. query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
  24. base_info = qxz_base_info.find_one(query, {"_id": 0, "iccid": 1})
  25. return base_info.get("iccid")
  26. def get_sa_qxz_info_record(device_id, start, end):
  27. # 获取电压,信号强度 历史数据
  28. start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
  29. end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
  30. db = get_table()
  31. qxz_info_record = db.sa_qxz_info_record
  32. query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
  33. info_record = qxz_info_record.find(query, {"_id": 0, 'volt': 1, "rssi": 1})
  34. return info_record
  35. def get_sa_qxz_data(device_id, start, end, conf):
  36. # 获取具体数据
  37. start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
  38. end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
  39. db = get_table()
  40. qxz_data = db.sa_qxz_data
  41. query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
  42. field = conf.keys()
  43. fields = {i: 1 for i in field}
  44. fields.update({"_id": 0})
  45. data = qxz_data.find(query, fields)
  46. return list(data)
  47. def get_qxz_conf(device_id):
  48. # 获取配置文件
  49. db = get_table()
  50. qxz_conf = db.sa_qxz_conf
  51. query = {'device_id': device_id}
  52. conf = qxz_conf.find_one(query, {"_id": 0, "uptime": 0, "device_id": 0, "id": 0})
  53. conf = {k: v for k, v in conf.items() if v is not None and v != ""}
  54. return conf
  55. def get_conf_data(conf, data):
  56. conf_keys = conf.keys()
  57. results = {}
  58. for i in conf_keys:
  59. results[i] = {
  60. "data": [k.get(i) for k in data],
  61. "explan": conf.get(i)
  62. }
  63. return results
  64. if __name__ == "__main__":
  65. device_id = '864865060471399'
  66. get_device_info(device_id)
  67. start = "2023-08-28 10:00:00"
  68. end = "2023-08-31 20:00:00"
  69. base_info = get_qxz_base_info(device_id, start, end)
  70. conf = get_qxz_conf(device_id)
  71. data = get_sa_qxz_data(device_id, start, end, conf)
  72. result = get_conf_data(conf, data)
  73. for k, v in result.items():
  74. print(k, v)