|
|
@@ -0,0 +1,91 @@
|
|
|
+import pymongo
|
|
|
+from urllib import parse
|
|
|
+import datetime
|
|
|
+
|
|
|
+
|
|
|
+def get_table():
|
|
|
+ passwd = parse.quote_plus("yfkj@6020")
|
|
|
+ user = parse.quote_plus("root")
|
|
|
+ myclient = pymongo.MongoClient("mongodb://{0}:{1}@8.136.98.49:57017/".format(user,passwd))
|
|
|
+ db = myclient.smartfarming
|
|
|
+ return db
|
|
|
+
|
|
|
+
|
|
|
+def get_device_info(device_id):
|
|
|
+ # 获取设备的版本,经纬度
|
|
|
+ db = get_table()
|
|
|
+ sa_device = db.sa_device
|
|
|
+ query = {'device_id': device_id}
|
|
|
+ device = sa_device.find_one(query, {"dver_num": 1, "lng": 1, "lat": 1, "_id": 0})
|
|
|
+ return device
|
|
|
+
|
|
|
+
|
|
|
+def get_qxz_base_info(device_id, start, end):
|
|
|
+ start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ # sim卡信息
|
|
|
+ db = get_table()
|
|
|
+ qxz_base_info = db.sa_qxz_base_info
|
|
|
+ query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
|
|
|
+ base_info = qxz_base_info.find_one(query, {"_id": 0, "iccid": 1})
|
|
|
+ return base_info.get("iccid")
|
|
|
+
|
|
|
+
|
|
|
+def get_sa_qxz_info_record(device_id, start, end):
|
|
|
+ # 获取电压,信号强度 历史数据
|
|
|
+ start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ db = get_table()
|
|
|
+ qxz_info_record = db.sa_qxz_info_record
|
|
|
+ query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
|
|
|
+ info_record = qxz_info_record.find(query, {"_id": 0, 'volt': 1, "rssi": 1})
|
|
|
+ return info_record
|
|
|
+
|
|
|
+
|
|
|
+def get_sa_qxz_data(device_id, start, end, conf):
|
|
|
+ # 获取具体数据
|
|
|
+ start = int((datetime.datetime.strptime(start, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ end = int((datetime.datetime.strptime(end, "%Y-%m-%d %H:%M:%S")).timestamp())
|
|
|
+ db = get_table()
|
|
|
+ qxz_data = db.sa_qxz_data
|
|
|
+ query = {'device_id': device_id, 'uptime': {"$lte": end, "$gte": start}}
|
|
|
+ field = conf.keys()
|
|
|
+ fields = {i: 1 for i in field}
|
|
|
+ fields.update({"_id": 0})
|
|
|
+ data = qxz_data.find(query, fields)
|
|
|
+ return list(data)
|
|
|
+
|
|
|
+
|
|
|
+def get_qxz_conf(device_id):
|
|
|
+ # 获取配置文件
|
|
|
+ db = get_table()
|
|
|
+ qxz_conf = db.sa_qxz_conf
|
|
|
+ query = {'device_id': device_id}
|
|
|
+ conf = qxz_conf.find_one(query, {"_id": 0, "uptime": 0, "device_id": 0, "id": 0})
|
|
|
+ conf = {k: v for k, v in conf.items() if v is not None and v != ""}
|
|
|
+ return conf
|
|
|
+
|
|
|
+
|
|
|
+def get_conf_data(conf, data):
|
|
|
+ conf_keys = conf.keys()
|
|
|
+ results = {}
|
|
|
+ for i in conf_keys:
|
|
|
+ results[i] = {
|
|
|
+ "data": [k.get(i) for k in data],
|
|
|
+ "explan": conf.get(i)
|
|
|
+ }
|
|
|
+ return results
|
|
|
+
|
|
|
+
|
|
|
+if __name__ == "__main__":
|
|
|
+ device_id = '864865060471399'
|
|
|
+ get_device_info(device_id)
|
|
|
+ start = "2023-08-28 10:00:00"
|
|
|
+ end = "2023-08-31 20:00:00"
|
|
|
+ base_info = get_qxz_base_info(device_id, start, end)
|
|
|
+ conf = get_qxz_conf(device_id)
|
|
|
+ data = get_sa_qxz_data(device_id, start, end, conf)
|
|
|
+ result = get_conf_data(conf, data)
|
|
|
+ for k, v in result.items():
|
|
|
+ print(k, v)
|
|
|
+
|