コード例 #1
0
ファイル: data.py プロジェクト: google238/dms
def getPower_detail(starttime, endtime, devid, start, length, draw):
    finddata = common.getPowerinfo(devid, starttime, endtime)
    count = len(finddata)
    starti = 0
    result = dict()
    resultlist = []
    for item in finddata:
        if starti != start:
            starti += 1
            continue
        del item["_id"]
        if "tablename" in item.keys():
            del item["tablename"]
        keys = item.keys()
        temp = []
        for key in keys:
            if key.lower().find("time") != -1:
                item[key] = common.strTimeToFormat(item[key])
            if isinstance(item[key], dict):
                item[key] = unparse.dictTostr(item[key])
            if key == "_id":
                item[key] = str(item[key])
            temp.append(item[key])
        resultlist.append(temp)
        if len(resultlist) == length:
            break
    result = {
        "draw": draw,
        "recordsTotal": count,
        "recordsFiltered": count,
        "aaData": resultlist
    }
    return result
コード例 #2
0
ファイル: aircondition.py プロジェクト: google238/dms
def getEfficiency(devid, time):
    starttime = time + '01000000'
    endtime = time + '31235959'

    finddata = common.getPowerinfo(devid, starttime, endtime)
    for item in finddata:
        del item['_id']
        del item['devid']
    return finddata
コード例 #3
0
ファイル: tool.py プロジェクト: google238/dms
    def POST(self):
        data = web.input()
        start = int(data["start"])
        length = int(data["length"])
        starttime = data['starttime'].replace('/', '').replace(
            ' ', '').replace(':', '') + '00'
        endtime = data["endtime"].replace('/', '').replace(' ', '').replace(
            ':', '') + '00'
        devid = data['devid']
        userid = data['userid']
        draw = int(data['draw'])
        ordernum = int(data['order[0][column]'])
        orderstyle = data['order[0][dir]']
        ids = devid.split(',')
        result = []
        count = 0

        for id in ids:
            #conditions = dict()
            #conditions['devid'] = id
            #conditions['time'] = {'$lte':endtime,'$gte':starttime}
            #maxitem = data_model('devpower_detail').find(conditions=conditions,sort=sort1,limit=1)
            #minitem = data_model('devpower_detail').find(conditions=conditions,sort=sort2,limit=1)
            finddata = common.getPowerinfo(id, starttime, endtime)
            if len(finddata) == 0:
                continue
            else:
                count += 1
                temp = []
                max = finddata[-1]
                min = finddata[0]
                maxW = float('%0.4f' % max['W'])
                minW = float('%0.4f' % min['W'])
                maxTime = max['time']
                minTime = min['time']
                power = maxW - minW
                power = float('%0.4f' % power)
                temp.append(id)
                temp.append(power)
                temp.append(minW)
                temp.append(common.strTimeToFormat(minTime))
                temp.append(maxW)
                temp.append(common.strTimeToFormat(maxTime))
                result.append(temp)

        data = {
            "draw": draw,
            "recordsTotal": count,
            "recordsFiltered": count,
            "aaData": result
        }
        data = json.dumps(data)
        return data
コード例 #4
0
ファイル: makereport.py プロジェクト: google238/dms
def getEfficiency(devid, time):
    year = int(time[:4])
    month = int(time[4:6])
    day = calendar.monthrange(year, month)[1]

    starttime = time + '01000000'
    endtime = time + str(day) + '235959'

    finddata = common.getPowerinfo(devid, starttime, endtime)
    for item in finddata:
        del item['_id']
        del item['devid']
    return finddata
コード例 #5
0
ファイル: griddata.py プロジェクト: google238/dms
def getPower(starttime, endtime, devid, type):
    result = []
    sort = [('time', 1)]
    data = common.getPowerinfo(devid, starttime, endtime)
    time1 = starttime
    power = 0
    for item in data:
        temp = {}
        time2 = item['time']
        temp['key'] = common.strTimeToFormat(item['time'])
        if type == 'power':
            temp['value'] = float('%0.4f' % (float(item['W'])))
            result.append(temp)
            time1 = time2
            power = float('%0.4f' % (float(item['W'])))
        elif type == 'efficiency':
            a = datetime.datetime.strptime(time2, '%Y%m%d%H%M%S')
            b = datetime.datetime.strptime(time1, '%Y%m%d%H%M%S')
            if (a - b).seconds > 600:  #两个时间差大于10分钟在这段时间内每隔5分钟填充个0
                while b < a:
                    temp1 = {}
                    temp1['key'] = common.strTimeToFormat(
                        b.strftime('%Y%m%d%H%M%S'))
                    temp1['value'] = 0
                    result.append(temp1)
                    b = b + datetime.timedelta(seconds=600)
            temp['value'] = int(item['P'])
            result.append(temp)
            time1 = time2
    a = datetime.datetime.strptime(endtime, '%Y%m%d%H%M%S')
    b = datetime.datetime.strptime(time1, '%Y%m%d%H%M%S')
    timeflag = time1[:8]
    if (a - b).seconds > 600:  #两个时间差大于10分钟在这段时间内每隔5分钟填充个0
        while b < a:
            temp1 = {}
            temp1['key'] = common.strTimeToFormat(b.strftime('%Y%m%d%H%M%S'))
            if type == 'efficiency':
                temp1['value'] = 0
            elif type == 'power':
                if b.strftime('%Y%m%d%H%M%S')[:8] == timeflag:
                    temp1['value'] = power
                else:
                    temp1['value'] = 0
            result.append(temp1)
            b = b + datetime.timedelta(seconds=600)
    return result
コード例 #6
0
def dealItem(item):
    if item['tablename'] == 'live.area.temp.history':
        insertitem = dict()
        province = item.get('province', '')
        city = item.get('city', '')
        area = item.get('area', '')
        insertitem['province'] = province
        insertitem['city'] = city
        insertitem['area'] = area
        insertitem['index'] = 1.0
        windstate = item.get('windState', '')
        statedetailed = item.get('stateDetailed', '')

        if city == '':  #无效天气数据不处理
            return
        '''#配置城市、天气指数
		itemfind = data_model('city_area').find_one(conditions={'province':province,'city':city,'area':area})
		if itemfind == None:
			data_model('city_area').insert(insertitem)
			
		itemfind = data_model('windstate').find_one(conditions={'_id':windstate})
		if itemfind == None:
			data_model('windstate').insert({'_id':windstate,'index':1.0})
		
		itemfind = data_model('stateDetailed').find_one(conditions={'_id':statedetailed})
		if itemfind == None:
			data_model('stateDetailed').insert({'_id':statedetailed,'index':1.0})	
        '''
        #用于统计月报中天气情况
        data_model('temperature_temp').insert({
            'province': province,
            'city': city,
            'area': area,
            'stateDetailed': statedetailed
        })

        temp1 = int(item['tem1'])
        temp2 = int(item['tem2'])
        if temp1 > temp2:
            high = temp1
            lower = temp2
        else:
            high = temp2
            lower = temp1
        time = item['time'][:8]
        data_model('temperature').update_set(condition={
            'city': city,
            'area': area,
            'time': time
        },
                                             values={
                                                 'high': high,
                                                 'lower': lower
                                             },
                                             upsert=True)
        data_model('live.area.temp.new').update_set(condition={
            'city': city,
            'area': area,
            'province': province
        },
                                                    values=item,
                                                    upsert=True)

    elif item['tablename'] == 'loger':
        if 'datetime' in item.keys():
            item['acceptTime'] = item['datetime']
            del item['datetime']
        if 'socketOut_P' in item['content'].keys(
        ) and 'socketOut_W' in item['content'].keys():
            item['content']['socketOut_P'] = int(
                item['content']['socketOut_P'])
            item['content']['socketOut_W'] = float(
                '%0.4f' % (float(item['content']['socketOut_W'])))
        system = item['system']
        content = item['content']
        #处理设备从开至关这段时间电量功率数据
        if 'devID' in content.keys() and 'CMD' in content.keys():
            devID = content['devID']
            data_model('devID').update_set(condition={'_id': devID},
                                           values={'system': system},
                                           upsert=True)
            cmd = content['CMD']
            time = item['acceptTime']
            todaytime = time[:8]
            userName = ''
            sender = ''
            if 'userName' in content.keys() and 'sender' in content.keys():
                userName = content['userName']
                sender = content['sender']
                data_model('user_dev').update_set(condition={'_id': devID},
                                                  values={
                                                      'username': userName,
                                                      'sender': sender
                                                  },
                                                  upsert=True)
            if devID == '':
                return
            if cmd == 'devTodo':
                if content['actionID'] == '2':  #插座开
                    finditem = data_model('action').find_one(conditions={
                        'devid': devID,
                        'actionid': '6'
                    })
                    if finditem is None:  #若找到actionid为6说明已经以空调类型操作过,现在是插拔
                        pass
                    else:
                        return
                    insertitem = dict()
                    insertitem['devid'] = devID
                    insertitem['time'] = time
                    insertitem['cmd'] = cmd
                    insertitem['inst'] = 'null'
                    insertitem['actionid'] = '2'
                    findpower = data_model('power_dataprocess').find(
                        conditions={
                            'devid': devID,
                            'time': re.compile(todaytime)
                        },
                        sort=[('time', -1)],
                        limit=1)
                    if len(findpower) == 0:
                        tablename = "devpower_detail_" + todaytime
                        findpower = data_model(tablename).find(
                            conditions={'devid': devID},
                            sort=[('time', -1)],
                            limit=1)
                    if len(findpower) == 0:
                        insertitem['W'] = 0
                    else:
                        insertitem['W'] = findpower[0]['W']
                    insertitem['P'] = 0
                    insertitem['temp'] = ''

                    #查找之前是否有开动作,有的话先删除再插入
                    finditem = data_model('action').find(conditions={
                        'devid': devID,
                        'actionid': '2'
                    },
                                                         sort=[('time', -1)],
                                                         limit=1)
                    if len(finditem) == 0:
                        pass
                    else:
                        data_model('action').remove(condition={'devid': devID})
                    data_model('action').insert(insertitem)
                    data_model('devcmd').insert(insertitem)
                    #记录设备类型,1代表普通插座,2代表空调,3代表空净
                    data_model('dev_type').update_set(condition={'_id': devID},
                                                      values={'type': 1},
                                                      upsert=True)
                elif content['actionID'] == '0':  #插座关
                    finditem = data_model('action').find(conditions={
                        'devid': devID,
                        'actionid': '2'
                    },
                                                         sort=[('time', -1)],
                                                         limit=1)
                    if len(finditem) == 0:  #没有找到开动作
                        data_model('action').remove(condition={'devid': devID})
                        return
                    insertitem = dict()
                    insertitem['devid'] = devID
                    insertitem['time'] = time
                    insertitem['cmd'] = 'devTodo'
                    insertitem['inst'] = 'null'
                    insertitem['actionid'] = '0'
                    findpower = data_model('power_dataprocess').find(
                        conditions={
                            'devid': devID,
                            'time': {
                                '$lte': time,
                                '$gt': todaytime
                            }
                        },
                        sort=[('time', -1)],
                        limit=1)
                    if len(findpower) == 0:
                        tablename = "devpower_detail_" + todaytime
                        findpower = data_model(tablename).find(conditions={
                            'devid': devID,
                            'time': {
                                '$lte': time
                            }
                        },
                                                               sort=[('time',
                                                                      -1)],
                                                               limit=1)
                    if len(findpower) == 0:
                        insertitem['W'] = 0
                    else:
                        insertitem['W'] = findpower[0]['W']
                    insertitem['P'] = 0
                    insertitem['temp'] = ''
                    data_model('action').insert(insertitem)
                    data_model('devcmd').insert(insertitem)
                    starttime = finditem[0]['time']
                    endtime = time
                    #查找时间段内的数据集
                    findset = common.getPowerinfo(devID, starttime, endtime)
                    if len(findset) == 0:  #这段时间内没有电量信息,忽略本次操作
                        data_model('action').remove(condition={'devid': devID})
                        return
                    findlist = []
                    del finditem[0]['_id']  #添加开动作
                    findlist.append(finditem[0])
                    for item in findset:
                        del item['_id']
                        item['cmd'] = '3001'
                        item['inst'] = ''
                        item['actionid'] = ''
                        item['temp'] = ''
                        findlist.append(item)
                    del insertitem['_id']
                    findlist.append(insertitem)  #添加关动作
                    offset, minw, maxw = common.getOffset(findlist)
                    p = 0
                    findset = sorted(findset,
                                     key=operator.itemgetter('P'),
                                     reverse=True)
                    p = findset[0]['P']
                    if p != 0:  # =0的话说明动作时间过短,还没有采集到用电量,本次操作无意义
                        cityname, area = getPosition(devID)
                        result = {
                            'devid': devID,
                            'type': 1,
                            'starttime': starttime,
                            'endtime': endtime,
                            'offset': offset,
                            'result': findlist,
                            'maxP': p,
                            'maxW': maxw,
                            'minW': minw,
                            'city': cityname,
                            'area': area
                        }
                        data_model('powershowgrid').insert(result)
                        sendToapp = dict()
                        sendToapp['devID'] = devID
                        sendToapp['CMD'] = 'M0A0'
                        sendToapp['userName'] = userName
                        sendToapp['sender'] = sender
                        sendToapp['type'] = 0
                        sendToapp['url'] = ''
                        powervalue = float(maxw) - float(minw)
                        powervalue = float('%0.4f' % powervalue)
                        runtime = common.timePoor(starttime, endtime)
                        runh, runm, runs = common.secTohms(runtime)
                        actioninfo = {
                            'devid': devID,
                            'starttime': starttime,
                            'endtime': endtime,
                            'runtime': runtime,
                            'power': powervalue,
                            'P': p
                        }
                        data_model('actioninfo').insert(actioninfo)
                        sy = starttime[:4]
                        sM = starttime[4:6]
                        sd = starttime[6:8]
                        sh = starttime[8:10]
                        sm = starttime[10:12]
                        ss = starttime[12:14]
                        ey = endtime[:4]
                        eM = endtime[4:6]
                        ed = endtime[6:8]
                        eh = endtime[8:10]
                        em = endtime[10:12]
                        es = endtime[12:14]
                        context = "您的设备%s从%d年%d月%d日%d时%d分%d秒至%d年%d月%d日%d时%d分%d秒共运行时长%d时%d分%d秒,共耗电%0.4f度" % (
                            devID[:15], int(sy), int(sM), int(sd), int(sh),
                            int(sm), int(ss), int(ey), int(eM), int(ed),
                            int(eh), int(em), int(es), runh, runm, runs,
                            powervalue)
                        sendToapp['content'] = context
                        sendToapp['pushTime'] = ''
                        sendToapp['time'] = time
                        #data_model('sendtoapp').insert(sendToapp)
                    data_model('action').remove(condition={'devid': devID})
                if 'actionID' in content.keys() and 'inst' in content.keys():
                    if content['actionID'] == '6':  #空调或者空净设备
                        if content['inst'].startswith('T'):  #空净,待处理
                            data_model('dev_type').update_set(
                                condition={'_id': devID},
                                values={'type': 3},
                                upsert=True)
                            return
                        data_model('dev_type').update_set(
                            condition={'_id': devID},
                            values={'type': 2},
                            upsert=True)
                        cityname, area = getPosition(devID)
                        if cityname == '' or area == '':  #没有地理信息
                            temp = ''
                        else:
                            if cityname == '北京市' or cityname == '天津市' or cityname == '上海市' or cityname == '重庆市':
                                area = area[:-1]
                            cityname = cityname[:-1]
                            findtemp = data_model('live.area.temp.new').find(
                                conditions={
                                    'city': cityname,
                                    'area': area,
                                    'time': {
                                        '$lte': time
                                    }
                                },
                                limit=1,
                                sort=[('time', -1)])
                            if len(findtemp) == 0:  #没有天气信息
                                temp = ''
                            else:
                                temp = findtemp[0]['temNow']
                        insertitem = dict()
                        insertitem['devid'] = devID
                        insertitem['time'] = time
                        insertitem['cmd'] = 'devTodo'
                        insertitem['inst'] = content['inst']
                        insertitem['actionid'] = '6'
                        findpower = data_model('power_dataprocess').find(
                            conditions={
                                'devid': devID,
                                'time': {
                                    '$lte': time,
                                    '$gt': todaytime
                                }
                            },
                            sort=[('time', -1)],
                            limit=1)
                        if len(findpower) == 0:
                            tablename = 'devpower_detail_' + todaytime
                            findpower = data_model(tablename).find(conditions={
                                'devid': devID,
                                'time': {
                                    '$lte': time
                                }
                            },
                                                                   sort=[
                                                                       ('time',
                                                                        -1)
                                                                   ],
                                                                   limit=1)
                            if len(findpower) == 0:
                                insertitem['W'] = 0
                            else:
                                insertitem['W'] = findpower[0]['W']
                        else:
                            insertitem['W'] = findpower[0]['W']
                        insertitem['P'] = 0
                        insertitem['temp'] = temp
                        data_model('devcmd').insert(insertitem)
                        data_model('action').insert(insertitem)
                        if content['inst'].startswith('0'):
                            #查找最早的一条开启状态的指令时间
                            conditions = dict()
                            conditions['devid'] = devID
                            conditions['actionid'] = '6'
                            findcmd = data_model("action").find(
                                conditions=conditions, sort=[('time', 1)])
                            if len(findcmd) <= 1:  #只有一条关动作
                                data_model('action').remove(
                                    condition={'devid': devID})
                                return
                            else:
                                starttime = findcmd[0]['time']
                            endtime = time
                            #查找时间段内的数据集
                            findset = common.getPowerinfo(
                                devID, starttime, endtime)
                            if len(findset) == 0:
                                data_model('action').remove(
                                    condition={'devid': devID})
                                return
                            findlist = []
                            for item in findcmd:  #将开动作、调整指令添加进列表
                                del item['_id']
                                findlist.append(item)
                            for item in findset:
                                del item['_id']
                                item['cmd'] = '3001'
                                item['inst'] = ''
                                item['actionid'] = ''
                                item['temp'] = ''
                                findlist.append(item)
                            findlist = sorted(findlist,
                                              key=operator.itemgetter('time'),
                                              reverse=False)
                            offset, minw, maxw = common.getOffset(findlist)
                            p = 0
                            findset = sorted(findset,
                                             key=operator.itemgetter('P'),
                                             reverse=True)
                            p = findset[0]['P']
                            if p != 0:  # =0 的话说明动作时间过短,还没有采集到用电量,本次操作无意义
                                result = {
                                    'devid': devID,
                                    'type': 2,
                                    'starttime': starttime,
                                    'endtime': endtime,
                                    'offset': offset,
                                    'result': findlist,
                                    'maxP': p,
                                    'maxW': maxw,
                                    'minW': minw,
                                    'city': cityname,
                                    'area': area
                                }
                                data_model('powershowgrid').insert(result)
                                data_model('powershowgrid_temp').insert(result)
                                sendToapp = dict()
                                sendToapp['devID'] = devID
                                sendToapp['CMD'] = 'M0A0'
                                sendToapp['userName'] = userName
                                sendToapp['sender'] = sender
                                sendToapp['type'] = 0
                                powervalue = float(maxw) - float(minw)
                                powervalue = float('%0.3f' % powervalue)
                                runtime = common.timePoor(starttime, endtime)
                                worktime = common.worktime(findlist)
                                if runtime < worktime:
                                    runtime, worktime = worktime, runtime

                                runh, runm, runs = common.secTohms(runtime)
                                workh, workm, works = common.secTohms(worktime)
                                worktimetab = 'worktime_' + time[:6]
                                #data_model('worktime').update_inc(condition={'_id':devID},values={'worktime':worktime,'runtime':runtime},upsert=True)

                                #计算单次使用的清洗指数
                                if 'cityname' == '' or 'area' == '':
                                    cityindex = 1
                                    weatherindex = 1
                                else:
                                    findcity = data_model(
                                        'city_area').find_one(conditions={
                                            'area': area,
                                            'city': cityname
                                        })
                                    if findcity is None:
                                        cityindex = 1
                                    else:
                                        cityindex = findcity['index']
                                findtemp = data_model(
                                    'live.area.temp.new').find(conditions={
                                        'city': cityname,
                                        'area': area
                                    })
                                if len(findtemp) == 0:
                                    weatherindex = 1
                                else:
                                    weather = findtemp[0]['stateDetailed']
                                    findweather = data_model(
                                        'stateDetailed').find_one(
                                            conditions={'_id': weather})
                                    if findweather is None:
                                        weatherindex = 1
                                    else:
                                        weatherindex = findweather['index']
                                index = runtime * cityindex * weatherindex
                                data_model('dev_index').update_inc(
                                    condition={'_id': devID},
                                    values={'index': index},
                                    upsert=True)
                                finditem = data_model('dev_index').find_one(
                                    conditions={'_id': devID})
                                index = finditem.get('index', 0)
                                index = int(index / 3600)
                                data_model(worktimetab).update_inc(
                                    condition={'_id': devID},
                                    values={
                                        'worktime': worktime,
                                        'runtime': runtime,
                                        'power': powervalue
                                    },
                                    upsert=True)
                                actioninfo = {
                                    'devid': devID,
                                    'starttime': starttime,
                                    'endtime': endtime,
                                    'runtime': runtime,
                                    'worktime': worktime,
                                    'power': powervalue,
                                    'P': p
                                }
                                data_model('actioninfo').insert(actioninfo)
                                context = "您的设备%s运行" % (devID[:15][-4:])
                                if runh > 0:
                                    s = '%d小时%d分钟,耗电%0.3f度' % (runh, runm,
                                                               powervalue)
                                else:
                                    if runm > 0:
                                        s = '%d分钟,耗电%0.3f度' % (runm,
                                                               powervalue)
                                    else:
                                        s = '%d秒,耗电%0.3f度' % (runs, powervalue)
                                context = context + s
                                sendToapp['content'] = context
                                sendToapp['pushTime'] = ''
                                sendToapp['time'] = time
                                sendToapp['system'] = system
                                sendToapp[
                                    'url'] = 'http://%s/report/single?devid=%s&starttime=%s&endtime=%s&runtime=%d&worktime=%d&power=%0.3f&P=%d&index=%d' % (
                                        server, devID, starttime, endtime,
                                        runtime, worktime, powervalue, p,
                                        index)
                                if powervalue > 0.001 and runh < 24 and p > 0:
                                    data_model('sendtoapp').insert(sendToapp)
                                    data_model('sendtoapp1').insert(sendToapp)
                            data_model('action').remove(
                                condition={'devid': devID})
            elif cmd == '3001':
                #更新电量详情表
                tablename = 'devpower_detail_' + todaytime
                gdt_tablename = 'devpower_detail_gdt_' + todaytime
                item = {'_id': devID}
                data_model('devID').update_set(condition=item,
                                               values=item,
                                               upsert=True)
                if 'socketOut_P' in content.keys(
                ) and content['socketOut_P'] > 0:
                    W = float('%0.4f' % content['socketOut_W'])
                    P = int(content['socketOut_P'])
                    insertdata = {'time': time, 'devid': devID, 'W': W, 'P': P}
                    data_model(tablename).insert(insertdata)
                    data_model("power_dataprocess").insert(insertdata)

                    #处理第三方系统的电量功率
                    dealPower_gdt(devID, gdt_tablename, insertdata)

                #处理功率为0
                elif 'socketOut_P' in content.keys(
                ) and content['socketOut_P'] == 0:
                    W = float('%0.4f' % content['socketOut_W'])
                    P = content['socketOut_P']
                    findone = data_model(tablename).find(
                        conditions={'devid': devID},
                        sort=[('time', -1)],
                        limit=1)
                    if len(findone) == 0 or findone[0]['P'] > 0:
                        insertdata = {
                            'time': time,
                            'devid': devID,
                            'W': W,
                            'P': P
                        }
                        data_model(tablename).insert(insertdata)
                    elif findone[0]['P'] == 0:
                        insertdata = {
                            'time': time,
                            'devid': devID,
                            'W': W,
                            'P': -1
                        }
                        data_model(tablename).insert(insertdata)
                    elif findone[0]['P'] < 0:
                        P1 = findone[0]['P']
                        time1 = findone[0]['time']
                        _id = findone[0]['_id']
                        P2 = P1 - 1
                        data_model(tablename).update_set(
                            condition={'_id': ObjectId(_id)},
                            values={
                                'time': time,
                                'P': P2
                            },
                            upsert=True)

            elif cmd == 'cleanliness':
                #用户清洗指数归0
                data_model('dev_index').update_set(condition={'_id': devID},
                                                   values={
                                                       'index': 0,
                                                       'update': todaytime
                                                   },
                                                   upsert=True)
            elif cmd == 'A6A0':
                city = content.get('city', '')
                area = content.get('area', '')
                sender = content.get('sender', '')
                username = content.get('userName', '')
                data_model('dev_position').update_set(condition={'_id': devID},
                                                      values={
                                                          'system': system,
                                                          'city': city,
                                                          'area': area,
                                                          'sender': sender,
                                                          'time': time,
                                                          'username': username
                                                      },
                                                      upsert=True)

                appid = content.get('appid', '')
                #if appid == 'guodiantong':
                #	data_model('whitelist_gdt').update_set(condition={'_id':devID},values={'system':system,'city':city,'area':area,'sender':sender,'time':time,'username':username},upsert=True)
                if appid != '':
                    data_model('appID').update_set(condition={'_id': appid},
                                                   values={'_id': appid},
                                                   upsert=True)
                    table = 'whitelist_' + appid
                    data_model(table).update_set(condition={'_id': devID},
                                                 values={
                                                     'system': system,
                                                     'city': city,
                                                     'area': area,
                                                     'sender': sender,
                                                     'time': time,
                                                     'username': username
                                                 },
                                                 upsert=True)