def add_room(request, user_id): """ 添加房间,先检查房间是否存在,存在返回失败 status: 1-成功;0-失败 :param request: :return: """ if request.POST: room_name = request.POST.get('room_name', None) if room_name is not None: db = get_db() result = db.ebc_room.find_one({'user_id': user_id, 'name': room_name}) if result: return HttpResponse(json.dumps({'status': 0, 'error': '房间名称已存在'})) else: room = { 'user_id': user_id, 'name': room_name, 'create_date': datetime.datetime.now() } room_id = db.ebc_room.insert(room) if room_id: return HttpResponse(json.dumps({'status': 1, 'room_id': str(room_id)})) else: return HttpResponse(json.dumps({'status': 0, 'error': '添加房间失败'})) else: return HttpResponse(json.dumps({'status': 0, 'error': '房间名称为空'})) return HttpResponse(json.dumps({'status': 0, 'error': '请求错误'}))
def device_list(request, user_id): # 接收参数type=2表示请求异常设备列表,其他表示所有设备列表 # a = request.GET['type'] # access_token = request.GET['token'] db = get_db() is_get = False typeid = request.REQUEST.get("type", "1") if typeid == "2": title = "异常设备" else: title = "设备" # 根据是不是GET请求来判断请求的 if request.method == 'GET': is_get = True room_id = request.GET.get('room_id', '0') if room_id == '0': room_name = '所有房间' dev_total = db.ebc_user_device.find({'user_id': user_id, 'device_id': {'$ne': None}}).count() else: room = db.ebc_room.find_one({'_id': ObjectId(room_id), 'user_id': user_id}) room_name = room.get('name', '所有房间') dev_total = db.ebc_user_device.find({'room_id': ObjectId(room_id), 'user_id': user_id}).count() all_total = db.ebc_user_device.find({"user_id": user_id, 'device_id': {'$ne': None}}).count() res = db.ebc_room.find({'user_id': user_id}).sort("create_date", pymongo.ASCENDING).limit(10) results = [] for r in res: result = dict() result['id'] = str(r['_id']) result['create_date'] = str(r['create_date']) result['name'] = r['name'] result['total'] = db.ebc_user_device.find({'room_id': r['_id'], 'user_id': user_id}).count() results.append(result) return render(request, "freezer/api/room.html", locals())
def get_mac_list(request, user_id): """ 根据openid和帐号类型获取mac地址列表的接口(用于app排除显示已添加的设备) 根据用户的ID获取mac地址列表 :param request: :return: """ ret = copy.copy(ret_obj) if user_id: try: db = get_db() results = db.ebc_user_device.find({ 'user_id': user_id, 'device_id': { '$ne': None } }) except Exception as e: ret['_status'] = 'error' ret['errormsg'] = '数据库查询出错' return HttpResponse(json.dumps(ret)) macs = [] for result in results: macs.append(result.get('mac', '')) ret['_status'] = 'ok' ret['data'] = macs else: ret['_status'] = 'error' ret['errormsg'] = '传入参数错误' return HttpResponse(json.dumps(ret))
def update_device_alias(request, user_id): """ 更新设备别名 :param request: :param user_id: :return: 更新成功返回1,失败返回0 """ if request.POST: dev_alias = request.POST.get('dev_alias', None) dev_id = request.POST.get('dev_id', None) if dev_alias: db = get_db() result = db.ebc_user_device.find_one({'user_id': user_id, 'device_id': dev_id}) if result: if result.get('alias') == dev_alias: return HttpResponse(json.dumps({'status': 0, 'msg': '设备别名已存在!'})) else: try: db.ebc_user_device.update({'_id': result.get('_id')}, {'$set': {'alias': dev_alias}}) return HttpResponse(json.dumps({'status': 1, 'msg': '设备编号更新成功!'})) except Exception as e: print(e) return HttpResponse(json.dumps({'status': 0, 'msg': '更新设备操作失败!'})) else: return HttpResponse(json.dumps({'status': 0, 'msg': '设备不存在!'})) else: return HttpResponse(json.dumps({'status': 0, 'msg': '设备别名不可为空!'})) return HttpResponse(json.dumps({'status': 0, 'msg': '请求类型错误!'}))
def test(request): if request.method == "POST": users = request.REQUEST.get("id", "") val = request.REQUEST.get("value", "") if users and val: from common.mqtt_helper import send user_arr = [] users_obj = json.loads(users) for i in users_obj: user_arr.append(str(i)) if len(user_arr) > 0: r = send(val, user_arr) else: r = -3 return HttpResponse(str(r)) db = get_db() users = db.ebc_user.find({}, {"_id": 1, "nickname": 1, "head_url": 1}).limit(100) device = db.ebc_device_token.find({}) items = [] for i in device: items.append(i) return render(request, "freezer/test.html", locals())
def submit_device_token(request, user_id): """ 根据用户ios设备的device_token 根据用户的ID获取用户ios设备device_token :param request: :return: """ if request.method == 'POST': device_token = request.POST.get('device_token', None) res = None error_message = '' if device_token is not None: doc = { '_id': user_id, 'token': device_token, 'create_date': datetime.datetime.utcnow() } try: db = get_db() db.ebc_device_token.save(doc) res = 'ok' except Exception as e: res = 'error' error_message = e return HttpResponse( json.dumps({ "_status": res, "error_msg": error_message })) return HttpResponse("请求方式错误")
def delete_dev(request, user_id): """ 删除房间 :param request: :return: """ if request.POST: dev_id = request.POST.get('dev_id', None) if dev_id is not None: db = get_db() try: # 根据device_id删除对应设备 res = db.ebc_user_device.remove({'device_id': dev_id, 'user_id': user_id}) # 删除成功返回1,失败返回0 if res: return HttpResponse(json.dumps({'r': '0'})) else: # 删除成功后将该房间中的设备的room_id设置为一个默认值,表示未分配房间 # db.ebc_device.update({'room_id': ObjectId(_id)}, # {'$set': {'room_id': ObjectId(DEFAULT_ROOM_ID)}}, multi=True) return HttpResponse(json.dumps({'r': '1'})) except Exception as e: print(e) return HttpResponse(json.dumps({'r': '0'})) return HttpResponse(json.dumps({'r': '0'}))
def choose_room(request, user_id): dev_id = request.GET.get("devid", None) if not dev_id: return HttpResponseRedirect(reverse("error")) db = get_db() device = db.ebc_user_device.find_one({"device_id": dev_id, 'user_id': user_id}) return render(request, "freezer/api/chooseroom.html", locals())
def submit_device_token(request, user_id): """ 根据用户ios设备的device_token 根据用户的ID获取用户ios设备device_token :param request: :return: """ if request.method == "POST": device_token = request.POST.get("device_token", None) res = None error_message = "" if device_token is not None: doc = {"_id": user_id, "token": device_token, "create_date": datetime.datetime.utcnow()} try: db = get_db() db.ebc_device_token.save(doc) res = "ok" except Exception as e: res = "error" error_message = e return HttpResponse(json.dumps({"_status": res, "error_msg": error_message})) return HttpResponse("请求方式错误")
def get_device_data(self, dev_id): """ 根据设备编号获取设备数据 :param dev_id: :return: """ db = get_db() dev_data = dict() temp = db.ebc_status.find({ 'device_id': dev_id, 'type': 1 }).sort([('create_date', -1)]).limit(1) if temp.count(): for t in temp: temp = t.get('value', None) if temp: dev_data['env_temp'] = temp.get('env_temperature', 0) dev_data['humidity'] = temp.get('humidity', 0) dev_data['temp'] = temp.get('temperature', 0) else: dev_data['env_temp'] = 0 dev_data['humidity'] = 0 dev_data['temp'] = 0 else: dev_data['env_temp'] = 0 dev_data['humidity'] = 0 dev_data['temp'] = 0 return dev_data
def get_device_data(self, dev_id): """ 根据设备编号获取设备数据 :param dev_id: :return: """ db = get_db() dev_data = dict() temp = db.ebc_status.find({'device_id': dev_id, 'type': 1}).sort([('create_date', -1)]).limit(1) if temp.count(): for t in temp: temp = t.get('value', None) if temp: dev_data['env_temp'] = temp.get('env_temperature', 0) dev_data['humidity'] = temp.get('humidity', 0) dev_data['temp'] = temp.get('temperature', 0) else: dev_data['env_temp'] = 0 dev_data['humidity'] = 0 dev_data['temp'] = 0 else: dev_data['env_temp'] = 0 dev_data['humidity'] = 0 dev_data['temp'] = 0 return dev_data
def read(): from util.mongodbutil import get_db db = get_db() ud = db.ebc_user_device.find_one({"user_id": "1_oYazTsp2lBjzD_dNoFX17eVGIIcI"})["device"] r = db[ud.collection].find_one({"_id": ud.id}) print(r)
def get_mac_list(request, user_id): """ 根据openid和帐号类型获取mac地址列表的接口(用于app排除显示已添加的设备) 根据用户的ID获取mac地址列表 :param request: :return: """ ret = copy.copy(ret_obj) if user_id: try: db = get_db() results = db.ebc_user_device.find({"user_id": user_id, "device_id": {"$ne": None}}) except Exception as e: ret["_status"] = "error" ret["errormsg"] = "数据库查询出错" return HttpResponse(json.dumps(ret)) macs = [] for result in results: macs.append(result.get("mac", "")) ret["_status"] = "ok" ret["data"] = macs else: ret["_status"] = "error" ret["errormsg"] = "传入参数错误" return HttpResponse(json.dumps(ret))
def update_room(request, user_id): """ 更新房间 :param request: :param user_id: :return: 更新成功返回1,失败返回0 """ if request.POST: room_name = request.POST.get('room_name', None) dev_id = request.POST.get('dev_id', None) if room_name is not None: db = get_db() result = db.ebc_user_device.find_one({'user_id': user_id, 'device_id': dev_id}) room_id = result.get('room_id', None) name = result.get('name') if name and name == room_name: return HttpResponse(json.dumps({'status': 1, 'msg': '房间名称已存在!'})) if room_id: try: db.ebc_room.update({'_id': room_id}, {'$set': {'name': room_name}}) return HttpResponse(json.dumps({'status': 1, 'msg': '更新成功!'})) except Exception as e: print(e) return HttpResponse(json.dumps({'status': 0, 'msg': '更新失败!'})) else: return HttpResponse(json.dumps({'status': 0, 'msg': '房间不存在!'})) else: return HttpResponse(json.dumps({'status': 0, 'msg': '房间名称为空!'})) return HttpResponse(json.dumps({'status': 0, 'msg': '请求类型错误!'}))
def read(): from util.mongodbutil import get_db db = get_db() ud = db.ebc_user_device.find_one( {"user_id": "1_oYazTsp2lBjzD_dNoFX17eVGIIcI"})["device"] r = db[ud.collection].find_one({"_id": ud.id}) print(r)
def get_device_by_room(self, user_id, room_id, room_skip, room_limit, status=0): """ 根据roon_id分页查找设备 :param room_id: :param room_skip: :param room_limit: :param status: :return: """ db = get_db() devices = [] my_skip = 0 # 查找正常设备 if status == 0: if room_id == '0': results = db.ebc_user_device.find({ 'user_id': user_id }).skip(room_skip).limit(room_limit) else: results = db.ebc_user_device.find({ 'room_id': ObjectId(room_id) }).skip(room_skip).limit(room_limit) return results # 查找异常设备 else: if room_id == '0': results = db.ebc_user_device.find({ 'user_id': user_id }).skip(room_skip).limit(room_limit) my_skip = int(results.count()) + int(room_skip) else: results = db.ebc_user_device.find({ 'room_id': ObjectId(room_id) }).skip(room_skip).limit(room_limit) for result in results: _id = result.get('device_id', None) if _id: device = db.ebc_device.find_one({ '_id': _id, 'is_abandon': False }) if device: is_online = device.get('is_online', False) err_status = device.get('err_status', 1) if is_online: if err_status != 0: devices.append(result) else: devices.append(result) return devices, my_skip
def choose_room(request, user_id): dev_id = request.GET.get("devid", None) if not dev_id: return HttpResponseRedirect(reverse("error")) db = get_db() device = db.ebc_user_device.find_one({ "device_id": dev_id, 'user_id': user_id }) return render(request, "freezer/api/chooseroom.html", locals())
def device_list(request, user_id): # 接收参数type=2表示请求异常设备列表,其他表示所有设备列表 # a = request.GET['type'] # access_token = request.GET['token'] db = get_db() is_get = False typeid = request.REQUEST.get("type", "1") if typeid == "2": title = "异常设备" else: title = "设备" # 根据是不是GET请求来判断请求的 if request.method == 'GET': is_get = True room_id = request.GET.get('room_id', '0') if room_id == '0': room_name = '所有房间' dev_total = db.ebc_user_device.find({ 'user_id': user_id, 'device_id': { '$ne': None } }).count() else: room = db.ebc_room.find_one({ '_id': ObjectId(room_id), 'user_id': user_id }) room_name = room.get('name', '所有房间') dev_total = db.ebc_user_device.find({ 'room_id': ObjectId(room_id), 'user_id': user_id }).count() all_total = db.ebc_user_device.find({ "user_id": user_id, 'device_id': { '$ne': None } }).count() res = db.ebc_room.find({ 'user_id': user_id }).sort("create_date", pymongo.ASCENDING).limit(10) results = [] for r in res: result = dict() result['id'] = str(r['_id']) result['create_date'] = str(r['create_date']) result['name'] = r['name'] result['total'] = db.ebc_user_device.find({ 'room_id': r['_id'], 'user_id': user_id }).count() results.append(result) return render(request, "freezer/api/room.html", locals())
def insert_into_db(self): db = get_db() """ db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':55,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) """ # time.sleep(2) # db.ebc_device.update({'_id': '10111111111111'},{'$set': {'alias':101}},False,True) temp4 = db.ebc_status.find({ 'device_id': '0000', 'type': 3 }).sort([('create_date', -1)]).limit(24) # db.ebc_device.remove({'type':0}) for i in temp4: print(i)
def get_all_room(request, user_id): skip = int(request.POST.get('skip', 0)) limit = int(request.POST.get('limit', 20)) db = get_db() temp = db.ebc_room.find({'user_id': user_id}).sort("create_date", pymongo.ASCENDING).skip(skip).limit(limit) room = [] for t in temp: obj = dict() obj["id"] = str(t["_id"]) obj["name"] = t["name"] room.append(obj) return HttpResponse(json.dumps({'res': room}))
def get_humidity_gui(self): db = get_db() try: humidity_gui = db.ebc_status.find({'type': 2}) humidity = [] for temp in humidity_gui: humidity.append(temp['value']) return humidity except Exception as e: print(e)
def get_room(self, room_id): """ 根据room_id获取房间信息 :param room_id: :return: """ db = get_db() if isinstance(room_id, ObjectId): result = db.ebc_room.find_one({'_id': room_id}) else: result = db.ebc_room.find_one({'_id': ObjectId(room_id)}) return result
def get_temperature_huan(self): db = get_db() try: temperature_huan = db.ebc_status.find({'type': 3}) temperature_h = [] for temp in temperature_huan: temperature_h.append(temp['value']) return temperature_h except Exception as e: print(e)
def submit_mac(request, user_id): """ 接收mac地址、openid、帐号类型的接口(用于设备与帐号关联) :param request: :return: """ openid = request.POST.get('openid', None) account_type = request.POST.get('account_type', 0) macs = request.POST.get('mac', None) ret = copy.copy(ret_obj) if openid and account_type and macs: mac_array = macs.split('|') for mac in mac_array: user_id = str(account_type) + '_' + openid mac = mac.replace(":", "") mac = mac.upper() _id = user_id + mac db = get_db() result = db.ebc_user_device.find_one({'_id': _id}) device = db.ebc_device.find_one({"mac": mac, "is_abandon": False}) device_id = None if device: device_id = device['_id'] try: if result: doc = {"device_id": device_id} db.ebc_user_device.update({"_id": _id}, {'$set': doc}, upsert=False) else: doc = { "_id": _id, "user_id": user_id, "mac": mac, "device_id": device_id, "room_id": ObjectId(DEFAULT_ROOM_ID), "alias": device_id, "create_date": datetime.datetime.utcnow() } db.ebc_user_device.insert(doc) except Exception as e: logging.getLogger("").error(mac) logging.getLogger("").error(str(e)) # ret['_status'] = 'error' # ret['errormsg'] += str(mac) + "|" ret['_status'] = 'ok' # if ret['_status'] == '': # ret['_status'] = 'ok' # else: # ret['errormsg'] += '错误' else: ret['_status'] = 'error' ret['errormsg'] = '参数传入出错' return HttpResponse(json.dumps(ret))
def insert_into_db(self): db = get_db() """ db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':35,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':55,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) db.ebc_status.save({'device_id':'0000','type':2,'value':65,'content':"当前环温",'create_date':datetime.utcnow()}) time.sleep(2) """ # time.sleep(2) # db.ebc_device.update({'_id': '10111111111111'},{'$set': {'alias':101}},False,True) temp4 = db.ebc_status.find({'device_id': '0000', 'type': 3}).sort([('create_date', -1)]).limit(24) # db.ebc_device.remove({'type':0}) for i in temp4: print(i)
def submit_mac(request, user_id): """ 接收mac地址、openid、帐号类型的接口(用于设备与帐号关联) :param request: :return: """ openid = request.POST.get("openid", None) account_type = request.POST.get("account_type", 0) macs = request.POST.get("mac", None) ret = copy.copy(ret_obj) if openid and account_type and macs: mac_array = macs.split("|") for mac in mac_array: user_id = str(account_type) + "_" + openid mac = mac.replace(":", "") mac = mac.upper() _id = user_id + mac db = get_db() result = db.ebc_user_device.find_one({"_id": _id}) device = db.ebc_device.find_one({"mac": mac, "is_abandon": False}) device_id = None if device: device_id = device["_id"] try: if result: doc = {"device_id": device_id} db.ebc_user_device.update({"_id": _id}, {"$set": doc}, upsert=False) else: doc = { "_id": _id, "user_id": user_id, "mac": mac, "device_id": device_id, "room_id": ObjectId(DEFAULT_ROOM_ID), "alias": device_id, "create_date": datetime.datetime.utcnow(), } db.ebc_user_device.insert(doc) except Exception as e: logging.getLogger("").error(mac) logging.getLogger("").error(str(e)) # ret['_status'] = 'error' # ret['errormsg'] += str(mac) + "|" ret["_status"] = "ok" # if ret['_status'] == '': # ret['_status'] = 'ok' # else: # ret['errormsg'] += '错误' else: ret["_status"] = "error" ret["errormsg"] = "参数传入出错" return HttpResponse(json.dumps(ret))
def get_all_room(request, user_id): skip = int(request.POST.get('skip', 0)) limit = int(request.POST.get('limit', 20)) db = get_db() temp = db.ebc_room.find({ 'user_id': user_id }).sort("create_date", pymongo.ASCENDING).skip(skip).limit(limit) room = [] for t in temp: obj = dict() obj["id"] = str(t["_id"]) obj["name"] = t["name"] room.append(obj) return HttpResponse(json.dumps({'res': room}))
def get_device_by_id(request): """ 根据房间id查找设备,用于判断房间是否存在设备 :param request: :return: 0-无设备,1-有设备,2-房间id不存在 """ room_id = request.POST.get('room_id', None) if room_id: db = get_db() result = db.ebc_user_device.find_one({'room_id': ObjectId(room_id)}) if result: return HttpResponse(json.dumps({'status': 1})) else: return HttpResponse(json.dumps({'status': 0})) else: return HttpResponse(json.dumps({'status': 2}))
def insert_data(): from util.mongodbutil import get_db db = get_db() from bson import ObjectId import datetime obj = { "_id": "2_oYazTsp2lBjzD_dNoFX17eVGIIcIACCF233C84E7", "user_id": "2_oYazTsp2lBjzD_dNoFX17eVGIIcI", "mac": "ACCF233C84E7", "device_id": "10279010865051", "room_id": ObjectId("5565a90a808df7fd642ec8f6"), "alias": "110", "create_date": datetime.datetime.utcnow() } db.ebc_user_device.insert(obj)
def update_room_id(request, user_id): """ 更新设备的room_id,也就是修改设备所在的房间 :param request: :param user_id: :return: """ n = request.POST.get('flag', None) device_id = request.POST.get('dev_id', None) if n and device_id: try: db = get_db() db.ebc_user_device.update({'user_id': user_id, 'device_id': device_id}, {'$set': {'room_id': ObjectId(n)}}) except Exception as e: print(e) return HttpResponse('error') return HttpResponse("ok")
def get_temperature_gui(self): db = get_db() """ #当前数据库 柜温,湿度,环温各插入楼5条模拟数据 db.ebc_status.save({'type':3,'device_id':'1','value':33,'content':'当前环温','create_date':datetime.utcnow()}) db.ebc_status.save({'type':3,'device_id':'2','value':32,'content':'当前环温','create_date':datetime.utcnow()}) db.ebc_status.save({'type':3,'device_id':'3','value':34,'content':'当前环温','create_date':datetime.utcnow()}) db.ebc_status.save({'type':3,'device_id':'4','value':36,'content':'当前环温','create_date':datetime.utcnow()}) db.ebc_status.save({'type':3,'device_id':'5','value':30,'content':'当前环温','create_date':datetime.utcnow()}) """ try: temperature_gui = db.ebc_status.find({'type': 1}) guiwen = [] for temp in temperature_gui: guiwen.append(temp['value']) return guiwen except Exception as e: print(e)
def get_device_by_room(self, user_id, room_id, room_skip, room_limit, status=0): """ 根据roon_id分页查找设备 :param room_id: :param room_skip: :param room_limit: :param status: :return: """ db = get_db() devices = [] my_skip = 0 # 查找正常设备 if status == 0: if room_id == '0': results = db.ebc_user_device.find({'user_id': user_id}).skip(room_skip).limit(room_limit) else: results = db.ebc_user_device.find({'room_id': ObjectId(room_id)}).skip(room_skip).limit(room_limit) return results # 查找异常设备 else: if room_id == '0': results = db.ebc_user_device.find({'user_id': user_id}).skip(room_skip).limit(room_limit) my_skip = int(results.count())+int(room_skip) else: results = db.ebc_user_device.find({'room_id': ObjectId(room_id)}).skip(room_skip).limit(room_limit) for result in results: _id = result.get('device_id', None) if _id: device = db.ebc_device.find_one({'_id': _id, 'is_abandon' :False}) if device: is_online = device.get('is_online', False) err_status = device.get('err_status', 1) if is_online: if err_status != 0: devices.append(result) else: devices.append(result) return devices,my_skip
def get_hum_and_tempe_byId(self, device_id): """ 获取设备状态信息 :param device_id: :return: """ db = get_db() back_dict = dict() device = db.ebc_device.find_one({'_id': device_id}) dev_product_model = "无设备编号" # 用dev_status的值来标志设备的状态:0-正常,1-异常,2-离线 dev_status = 1 if device: # 默认设备状态错误 err_status = device.get('err_status', 1) is_online = device.get('is_online', False) # 如果设备离线,就直接为离线状态,不需要知道是否异常 if not is_online: dev_status = 2 elif err_status != 0: dev_status = 1 else: dev_status = 0 tag = device.get('tag', None) if tag: dev_product_model = tag.get('product_model', '无设备编号') current_status = tag.get('current_status', None) dev_data = dict() if current_status: status_array = current_status.split('|') dev_data['env_temp'] = status_array[0] dev_data['humidity'] = status_array[2] dev_data['temp'] = status_array[1] else: dev_data['env_temp'] = 0 dev_data['humidity'] = 0 dev_data['temp'] = 0 back_dict['dev_data'] = dev_data back_dict['dev_id'] = device_id back_dict['dev_product_model'] = dev_product_model back_dict['dev_status'] = dev_status return back_dict
def device_detail(request, user_id): """ 设备详细页 :param request: :return: """ dev_id = request.GET.get('devid', None) if not dev_id: return HttpResponseRedirect(reverse("error")) try: db = get_db() device = db.ebc_device.find_one({"_id": dev_id}) status = json.loads(query("query_status", dev_id))["value"] status_arr = status.split("|") alert = "状态未知" alert_val = 1 if status == "-1|-1|-1|-1|-1|-1||-1": mode = "设备离线" elif status == "0|0|0|0|0|0||0": mode = "数据未上传" else: if status_arr[7] == "0": mode = "阴凉模式" elif status_arr[7] == "1": mode = "冷藏模式" if status_arr[5] == "1": alert = "继续报警" alert_val = 1 elif status_arr[5] == "0": alert = "取消报警" alert_val = 0 if status_arr[3] == "1": checked = "checked" else: checked = "" if status_arr[6] == "": alert = "工作正常" alert_val = 2 except Exception as e: print(str(e)) return render(request, "freezer/api/devlist.html", locals())
def get_extra_room(request, user_id): print(user_id) skip = int(request.POST.get('total', 0)) limit = int(request.POST.get('limit', 10)) db = get_db() results = db.ebc_room.find({'user_id': user_id}).sort("create_date", pymongo.ASCENDING).skip(skip).limit(limit) html = '' if results: if results.count() > skip: for r in results: num = db.ebc_user_device.find({'room_id': r['_id']}).count() html += '<li class="ui-add-room" style="background-color: red;">' \ '<div class="aroom list-group-item"' \ 'id="' + str(r['_id']) + '">' + r['name'] + '(' + str(num) + ')' + \ '</div><span class="ui-delete-room">删除</span></li>' return HttpResponse(html) else: return HttpResponse('<div class="ui-loading-wrap"><p>没有更多了...</p></i></div>') else: return HttpResponse('<div class="ui-loading-wrap"><p>加载失败...</p></i></div>')
def save(): import datetime from bson import ObjectId from util.mongodbutil import get_db db = get_db() device = db.ebc_device.find_one({"_id": "10279010865051"}) print(device) obj = { "_id": "2_oYazTsp2lBjzD_dNoFX17eVGIIcIACCF23576547", "user_id": "1_oYazTsp2lBjzD_dNoFX17eVGIIcI", "mac": "ACCF23576547", "device": None, "room_id": ObjectId("5565a90a808df7fd642ec8dc"), "alias": "23432432", "create_date": datetime.datetime.utcnow() } r = db.ebc_user_device.insert(obj) print(r)
def get_total_dev(self, user_id): """ 获取统计数量 :return: """ db = get_db() try: normal = 0 error = 0 devices = db.ebc_user_device.find({'user_id': user_id}) for device in devices: dev_id = device.get('device_id', None) if dev_id: result = db.ebc_device.find_one({'_id': dev_id}) # 如果设备的err_status是 0 并且is_online为 True,则为正常设备,其他均为异常设备 if not result.get('err_status', 1) and result.get('is_online', False): normal += 1 else: error += 1 return str(normal) + ',' + str(error) except Exception as e: print(e)
def warn(request): db = get_db() err_content = request.GET.get('content', None) flag = request.GET.get('flag', None) res = None try: user_id = flag[:-12] mac = flag[-12:] res = db.ebc_user_device.find_one({'user_id': user_id, 'mac': mac}) except Exception as e: print(e) if res: device_id = res.get('device_id') alias = res.get('alias') room_id = res.get('room_id') rack = db.ebc_room.find_one({'_id': ObjectId(room_id)}) if rack: room_name = rack.get('name') current_date = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') return render(request, "freezer/api/warn_detail.html", locals()) else: return render(request, "freezer/api/error.html", locals())
def get_extra_room(request, user_id): print(user_id) skip = int(request.POST.get('total', 0)) limit = int(request.POST.get('limit', 10)) db = get_db() results = db.ebc_room.find({ 'user_id': user_id }).sort("create_date", pymongo.ASCENDING).skip(skip).limit(limit) html = '' if results: if results.count() > skip: for r in results: num = db.ebc_user_device.find({'room_id': r['_id']}).count() html += '<li class="ui-add-room" style="background-color: red;">' \ '<div class="aroom list-group-item"' \ 'id="' + str(r['_id']) + '">' + r['name'] + '(' + str(num) + ')' + \ '</div><span class="ui-delete-room">删除</span></li>' return HttpResponse(html) else: return HttpResponse( '<div class="ui-loading-wrap"><p>没有更多了...</p></i></div>') else: return HttpResponse( '<div class="ui-loading-wrap"><p>加载失败...</p></i></div>')
def get_total_dev(self, user_id): """ 获取统计数量 :return: """ db = get_db() try: normal = 0 error = 0 devices = db.ebc_user_device.find({'user_id': user_id}) for device in devices: dev_id = device.get('device_id', None) if dev_id: result = db.ebc_device.find_one({'_id': dev_id}) # 如果设备的err_status是 0 并且is_online为 True,则为正常设备,其他均为异常设备 if not result.get('err_status', 1) and result.get( 'is_online', False): normal += 1 else: error += 1 return str(normal) + ',' + str(error) except Exception as e: print(e)
def update_room_id(request, user_id): """ 更新设备的room_id,也就是修改设备所在的房间 :param request: :param user_id: :return: """ n = request.POST.get('flag', None) device_id = request.POST.get('dev_id', None) if n and device_id: try: db = get_db() db.ebc_user_device.update( { 'user_id': user_id, 'device_id': device_id }, {'$set': { 'room_id': ObjectId(n) }}) except Exception as e: print(e) return HttpResponse('error') return HttpResponse("ok")
def get_device_data(self, dev_id, user_id): """ 获取设备数据 :param dev_id: :return: """ db = get_db() data = dict() device = db.ebc_user_device.find_one({ 'user_id': user_id, 'device_id': dev_id }) data['room_name'] = None data['alias'] = '无别名' if device: room_id = device.get('room_id', None) if room_id: room = self.get_room(room_id) if room: data['room_name'] = room.get('name', None) data['alias'] = device.get('alias', '无别名') temp_gui = [] temp_huan = [] humidity = [] try: s = datetime.timedelta(minutes=30) now = datetime.datetime.now() minute = now.minute if minute >= 30: minute = 30 else: minute = 0 today = date.today() hour = now.hour second = now.second newest = str(today) + ' ' + str(hour) + ':' + str( minute) + ':' + str(second) max_date = datetime.datetime.strptime(str(newest), '%Y-%m-%d %H:%M:%S') for i in range(49): trans = self.get_format_date(max_date.month, max_date.day, max_date.hour, max_date.minute) min_date = max_date - s # 因为数据库保存的时间是utc时间,所以时间需要减8 statuses = db.ebc_status.find({ 'device_id': dev_id, 'create_date': { '$lte': max_date - datetime.timedelta(hours=8), '$gt': min_date - datetime.timedelta(hours=8) } }).sort([('create_date', -1)]).limit(1) if statuses.count() > 0: for status in statuses: value = status.get('value', None) if value: temp_gui.append({ 'date': trans, 'value': value.get('temperature', 'null') }) temp_huan.append({ 'date': trans, 'value': value.get('env_temperature', 'null') }) humidity.append({ 'date': trans, 'value': value.get('humidity', 'null') }) else: temp_gui.append({'date': trans, 'value': 'null'}) temp_huan.append({'date': trans, 'value': 'null'}) humidity.append({'date': trans, 'value': 'null'}) else: temp_gui.append({'date': trans, 'value': 'null'}) temp_huan.append({'date': trans, 'value': 'null'}) humidity.append({'date': trans, 'value': 'null'}) max_date = min_date # 反转列表,将时间从小到大排序 data['gw'] = temp_gui[::-1] data['hm'] = humidity[::-1] data['hw'] = temp_huan[::-1] except Exception as e: print(e) return data
def get_device_data(self, dev_id, user_id): """ 获取设备数据 :param dev_id: :return: """ db = get_db() data = dict() device = db.ebc_user_device.find_one({'user_id': user_id, 'device_id': dev_id}) data['room_name'] = None data['alias'] = '无别名' if device: room_id = device.get('room_id', None) if room_id: room = self.get_room(room_id) if room: data['room_name'] = room.get('name', None) data['alias'] = device.get('alias', '无别名') temp_gui = [] temp_huan = [] humidity = [] try: s = datetime.timedelta(minutes=30) now = datetime.datetime.now() minute = now.minute if minute >= 30: minute = 30 else: minute = 0 today = date.today() hour = now.hour second = now.second newest = str(today) + ' ' + str(hour) + ':' + str(minute) + ':' + str(second) max_date = datetime.datetime.strptime(str(newest), '%Y-%m-%d %H:%M:%S') for i in range(49): trans = self.get_format_date(max_date.month, max_date.day, max_date.hour, max_date.minute) min_date = max_date - s # 因为数据库保存的时间是utc时间,所以时间需要减8 statuses = db.ebc_status.find( {'device_id': dev_id, 'create_date': {'$lte': max_date - datetime.timedelta(hours=8), '$gt': min_date - datetime.timedelta(hours=8)}}).sort( [('create_date', -1)]).limit(1) if statuses.count() > 0: for status in statuses: value = status.get('value', None) if value: temp_gui.append({'date': trans, 'value': value.get('temperature', 'null')}) temp_huan.append({'date': trans, 'value': value.get('env_temperature', 'null')}) humidity.append({'date': trans, 'value': value.get('humidity', 'null')}) else: temp_gui.append({'date': trans, 'value': 'null'}) temp_huan.append({'date': trans, 'value': 'null'}) humidity.append({'date': trans, 'value': 'null'}) else: temp_gui.append({'date': trans, 'value': 'null'}) temp_huan.append({'date': trans, 'value': 'null'}) humidity.append({'date': trans, 'value': 'null'}) max_date = min_date # 反转列表,将时间从小到大排序 data['gw'] = temp_gui[::-1] data['hm'] = humidity[::-1] data['hw'] = temp_huan[::-1] except Exception as e: print(e) return data
def third_login(request): """ 第三方帐号登录接口,接收openid、access_token、帐号类型(1:qq、2:微信、3:新浪微博)、头像、昵称(更新接口文档) :param request: :return: """ openid = request.REQUEST.get("openid", None) access_token = request.REQUEST.get("access_token", None) account_type = request.REQUEST.get("account_type", 0) head_url = request.REQUEST.get("head_url", None) nick_name = request.REQUEST.get("nickname", None) ret = copy.copy(ret_obj) account_type = int(account_type) if account_type <= 0 or account_type > 3: ret["_status"] = "error" ret["errormsg"] = "帐号类型错误" return HttpResponse(json.dumps(ret)) if openid and openid != "null": try: _id = str(account_type) + "_" + openid doc = { # '_id': _id, "account": _id, "access_token": access_token, "password": "", "type": int(account_type), "head_url": head_url, "nickname": nick_name, "create_date": datetime.datetime.utcnow(), } db = get_db() db.ebc_user.update({"_id": _id}, {"$set": doc}, upsert=True) guid = uuid.uuid1() token = TOKEN_PREFIX + str(guid) setval(token, _id) data = { "is_need_update": 0, "type": account_type, "token": token, "expire_in": TIMEOUT, "mosquitto_host": MOSQUITTO_HOST, "mosquitto_port": MOSQUITTO_PORT, "mosquitto_client_id": MOSQUITTO_PREFIX + str(guid), "mosquitto_sub_user": MOSQUITTO_SUB_USER, "mosquitto_sub_pwd": MOSQUITTO_SUB_PWD, "mosquitto_topic": MOSQUITTO_TOPIC_PREFIX + _id, } ret["_status"] = "ok" ret["data"] = data return HttpResponse(json.dumps(ret)) except Exception as e: print(e) ret["_status"] = "error" ret["errormsg"] = "Token创建失败" return HttpResponse(json.dumps(ret)) else: ret["_status"] = "error" ret["errormsg"] = "openid/uid为空" return HttpResponse(json.dumps(ret))
def third_login(request): """ 第三方帐号登录接口,接收openid、access_token、帐号类型(1:qq、2:微信、3:新浪微博)、头像、昵称(更新接口文档) :param request: :return: """ openid = request.REQUEST.get('openid', None) access_token = request.REQUEST.get('access_token', None) account_type = request.REQUEST.get('account_type', 0) head_url = request.REQUEST.get('head_url', None) nick_name = request.REQUEST.get('nickname', None) ret = copy.copy(ret_obj) account_type = int(account_type) if account_type <= 0 or account_type > 3: ret['_status'] = 'error' ret['errormsg'] = '帐号类型错误' return HttpResponse(json.dumps(ret)) if openid and openid != "null": try: _id = str(account_type) + '_' + openid doc = { # '_id': _id, 'account': _id, 'access_token': access_token, 'password': '', 'type': int(account_type), 'head_url': head_url, 'nickname': nick_name, 'create_date': datetime.datetime.utcnow() } db = get_db() db.ebc_user.update({'_id': _id}, {'$set': doc}, upsert=True) guid = uuid.uuid1() token = TOKEN_PREFIX + str(guid) setval(token, _id) data = { 'is_need_update': 0, 'type': account_type, "token": token, 'expire_in': TIMEOUT, 'mosquitto_host': MOSQUITTO_HOST, 'mosquitto_port': MOSQUITTO_PORT, 'mosquitto_client_id': MOSQUITTO_PREFIX + str(guid), 'mosquitto_sub_user': MOSQUITTO_SUB_USER, 'mosquitto_sub_pwd': MOSQUITTO_SUB_PWD, 'mosquitto_topic': MOSQUITTO_TOPIC_PREFIX + _id } ret['_status'] = 'ok' ret['data'] = data return HttpResponse(json.dumps(ret)) except Exception as e: print(e) ret['_status'] = 'error' ret['errormsg'] = 'Token创建失败' return HttpResponse(json.dumps(ret)) else: ret['_status'] = 'error' ret['errormsg'] = 'openid/uid为空' return HttpResponse(json.dumps(ret))