| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- 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)
|