コード例 #1
0
ファイル: views.py プロジェクト: cherrishes/weilai
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': '请求错误'}))
コード例 #2
0
ファイル: views.py プロジェクト: allensummer/weilai
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())
コード例 #3
0
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))
コード例 #4
0
ファイル: views.py プロジェクト: cherrishes/weilai
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': '请求类型错误!'}))
コード例 #5
0
ファイル: views.py プロジェクト: cherrishes/weilai
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())
コード例 #6
0
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("请求方式错误")
コード例 #7
0
ファイル: views.py プロジェクト: cherrishes/weilai
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'}))
コード例 #8
0
ファイル: views.py プロジェクト: allensummer/weilai
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())
コード例 #9
0
ファイル: views.py プロジェクト: allensummer/weilai
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("请求方式错误")
コード例 #10
0
ファイル: handler.py プロジェクト: cherrishes/weilai
    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
コード例 #11
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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
コード例 #12
0
ファイル: dbtest.py プロジェクト: allensummer/weilai
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)
コード例 #13
0
ファイル: views.py プロジェクト: allensummer/weilai
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))
コード例 #14
0
ファイル: views.py プロジェクト: cherrishes/weilai
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': '请求类型错误!'}))
コード例 #15
0
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)
コード例 #16
0
ファイル: handler.py プロジェクト: cherrishes/weilai
    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
コード例 #17
0
ファイル: views.py プロジェクト: cherrishes/weilai
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())
コード例 #18
0
ファイル: views.py プロジェクト: cherrishes/weilai
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())
コード例 #19
0
ファイル: handler.py プロジェクト: cherrishes/weilai
    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)
コード例 #20
0
ファイル: views.py プロジェクト: allensummer/weilai
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}))
コード例 #21
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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)
コード例 #22
0
ファイル: handler.py プロジェクト: allensummer/weilai
 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
コード例 #23
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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)
コード例 #24
0
 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
コード例 #25
0
    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)
コード例 #26
0
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))
コード例 #27
0
    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)
コード例 #28
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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)
コード例 #29
0
ファイル: views.py プロジェクト: allensummer/weilai
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))
コード例 #30
0
ファイル: views.py プロジェクト: cherrishes/weilai
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}))
コード例 #31
0
ファイル: views.py プロジェクト: cherrishes/weilai
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}))
コード例 #32
0
ファイル: views.py プロジェクト: allensummer/weilai
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}))
コード例 #33
0
ファイル: dbtest.py プロジェクト: allensummer/weilai
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)
コード例 #34
0
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)
コード例 #35
0
ファイル: views.py プロジェクト: allensummer/weilai
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")
コード例 #36
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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)
コード例 #37
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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
コード例 #38
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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
コード例 #39
0
ファイル: handler.py プロジェクト: cherrishes/weilai
    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
コード例 #40
0
    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)
コード例 #41
0
ファイル: views.py プロジェクト: cherrishes/weilai
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())
コード例 #42
0
ファイル: views.py プロジェクト: allensummer/weilai
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())
コード例 #43
0
ファイル: views.py プロジェクト: allensummer/weilai
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>')
コード例 #44
0
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)
コード例 #45
0
ファイル: dbtest.py プロジェクト: allensummer/weilai
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)
コード例 #46
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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)
コード例 #47
0
ファイル: views.py プロジェクト: cherrishes/weilai
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())
コード例 #48
0
ファイル: views.py プロジェクト: cherrishes/weilai
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>')
コード例 #49
0
ファイル: handler.py プロジェクト: cherrishes/weilai
    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)
コード例 #50
0
ファイル: views.py プロジェクト: cherrishes/weilai
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")
コード例 #51
0
    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
コード例 #52
0
ファイル: handler.py プロジェクト: allensummer/weilai
    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
コード例 #53
0
ファイル: views.py プロジェクト: allensummer/weilai
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))
コード例 #54
0
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))