| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210 |
- # -*- coding:utf-8 -*-
- # @Time : 2020/5/22 2:22 下午
- # @Author : Creat by Han
- import json
- import ast
- import copy
- import datetime
- import time
- import logging
- from django.forms.models import model_to_dict
- from django.db.models import Q
- from django.conf import settings
- from kedong.decoration import kedong_deco, PortError
- from smartfarming.models.device import MongoDevice, MongoCBDData
- from smartfarming.models.weather import MongoQXZ_Base_Info, QXZdata_New, MongoQXZ_Conf, QXZstatus_New, MongoQXZ_Alarm
- from smartfarming.api.views.weather.all_dict import qxz_dict
- from smartfarming.models.weather import (
- MongoQXZ_Switch,
- MongoQXZ_Auto_Switch,
- MongoQXZ_Timing_Switch,
- QXZ_Switch_Status,
- QXZ_Default_Conf
- )
- config_dict = settings.CONFIG
- logger = logging.getLogger("myapp")
- @kedong_deco(login_required=True)
- def qxz_page(request):
- """
- 气象设备列表接口 :
- 参数:
- page 非必传(num) 页码,默认为1
- device_id 非必传(str) 设备号
- device_status 非必传(str) 在线状态 1在线 0离线
- device_name 非必传(str) 设备名称
- device_type 非必传(str) 5气象站 8墒情站
- 返回值:
- {
- "data": {
- "ids": [
- {
- "d_id":"", 设备数据库ID
- "equip_name":"", 设备名称
- "equip_id":12313456, 设备ID
- "is_online":1, 在线状态 1在线 0离线
- "rssi":10, 信号强度
- "volt":22, 电压
- "lng":113, 经度
- "lat":113, 纬度
- "off_time":"" 离线时间
- "address":"" 设备地址
- "device_expire_time": 1234444 设备到期时间
- "device_expire": # 设备状态 0未到期,1已到期,2即将到期
- "device_expire_days": 到期天数
- }
- ],
- "nums": 0 设备总数
- },
- "formError": {},
- "errorCode": 0,
-
- "message": "",
- "params": {}
- }
- """
- device_id = request.POST.get("device_id")
- device_status = request.POST.get("device_status")
- device_name = request.POST.get("device_name")
- page = request.POST.get("page","")
- page_size = request.POST.get("page_size","")
- device_type = request.POST.get("device_type","5")
- if not page and not page_size:
- page = 1
- page_size = 8
- else:
- if not page.isdigit() and not page_size.isdigit():
- raise PortError("","字段类型有误")
- else:
- page = int(page)
- page_size = int(page_size)
-
- if device_type not in ("5","8"):
- raise PortError("","参数超出范围")
- devices = MongoDevice.objects.filter(device_type_id=device_type).order_by('-device_status', '-uptime')
- #设备状态查询
- if device_status:
- devices = devices.filter(device_status=int(device_status))
- #设备号查询
- if device_id:
- devices = devices.filter(Q(device_id__icontains=device_id) | Q(device_name__icontains=device_id))
- #设备名称查询
- if device_name:
- devices = devices.filter(device_name__icontains=device_name)
- date = []
- nums = devices.count()
- result = devices[(page_size*(page-1)):(page*page_size)]
- result_device_id_list = [item.device_id for item in result]
- qxz_base_dict = {item.device_id: item for item in MongoQXZ_Base_Info.objects.filter(device_id__in=result_device_id_list)}
- for i in result:
- try:
- qxz_base = qxz_base_dict[i.device_id]
- rssi = qxz_base.rssi
- volt = qxz_base.volt
- except:
- rssi = ""
- volt = ""
-
- lng = i.lng
- lat = i.lat
- address = i.province+i.city+i.district
- is_online = i.device_status
- uptime = i.uptime
- date.append({
- "d_id":i.id,
- "equip_name":i.device_name,
- "equip_id":i.device_id,
- "volt":volt,
- "rssi":rssi,
- "lng":lng,
- "lat":lat,
- "address":address,
- "is_online":is_online,
- "uptime":uptime,
- })
-
- data = {'ids':date, 'nums': nums}
- return data
- @kedong_deco(login_required=True)
- def qxz_detail(request):
- """
- 气象历史数据接口 :
- 参数:
- device_id 必传(string)
- page 非必传(num) 页码,默认为1
- start_time 非必传(string 时间戳) 开始时间 (用于时间搜索)
- end_time 非必传(string 时间戳) 结束时间 (用于时间搜索)
- 返回值:
- {
- "data": {
- "conf": {
- "e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30
- },
- "nums": 0,
- "rainFall": 1 气象设备是否具有日雨量累计因子,有返回1,无返回0
- "data": [
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },...
- ]
- }
- "params": {},
- "formError": {},
- "errorCode": 0,
- "message": "",
-
- }
- """
- f_tbegin = request.POST.get('start_time')
- f_tend = request.POST.get('end_time')
- device_id = request.POST.get("device_id")
-
- try:
- device = MongoDevice.objects.get(device_id=device_id)
- device_expire = device.device_expire
- device_expire_time = device.device_expire_time
- except:
- raise PortError('device_id',"暂无此设备")
-
- qxz_list = QXZdata_New.objects.filter(device_id=device_id)
-
- myuser_type = request.user_type
- if not myuser_type == 1 and not myuser_type == 5:
- if f_tbegin and int(f_tend) > int(device_expire_time):
- f_tend = device_expire_time
- if f_tbegin and f_tend:
- qxz_list =qxz_list.filter(uptime__range=(int(f_tbegin),int(f_tend))).order_by('-id')
- page = int(request.POST.get('page',1))
- data = []
- nums = qxz_list.count()
- conf = {}
- if nums:
- for i in qxz_list[(10*(page-1)):(page*10)]:
- dat = {}
- for e in range(1, 31):
- k = f'e{e}'
- v = getattr(i, k)
- dat[k] = v or ""
- data.append({"dat": dat, "time": i.uptime})
- try:
- x = MongoQXZ_Conf.objects.get(device_id=device_id)
- conf = {}
- for e in range(1, 31):
- k = f'e{e}'
- v = getattr(x, k)
- conf[k] = v or ""
- except Exception as e:
- conf = {}
- rainFall = 0
- for factor in conf.values():
- if factor == "降雨量累计#mm":
- rainFall = 1
- break
- data1 = {"data":data,"nums":nums,"conf":conf,"rainFall":rainFall}
- return data1
- @kedong_deco(login_required=True)
- def qxz_status(request):
- """
- 气象详情接口 :
- 参数:
- device_id 必传(string)
- 返回值:
- {
- "data": {
- 'dat':{
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },
- 'conf':{
- "e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30
- },
- "led":0, 0 无led点阵屏功能 1 有led点阵屏功能
- "ledinfo":"点阵屏内容"
- },
- "errorCode": 0,
- "message": "",
- "formError": {}
- }
- """
- e_id = request.POST.get("device_id")
- if not e_id:
- raise PortError("","参数缺失")
- qxz_list = QXZdata_New.objects.filter(device_id=e_id).first()
- if not qxz_list:
- raise PortError("","未找到此设备")
- data = []
- dat = {"e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30, "uptime":qxz_list.uptime}
- try:
- x = MongoQXZ_Conf.objects.get(device_id=e_id)
- conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
- except:
- conf = {}
- try:
- led = MongoQXZ_Base_Info.objects.get(device_id=e_id).led
- except:
- led = "0"
- try:
- ledinfo = MongoQXZ_Base_Info.objects.get(device_id=e_id).ledinfo
- except:
- ledinfo = ""
- data = {'dat':dat,'conf':conf, "led":led,"ledinfo":ledinfo}
- return data
- @kedong_deco(login_required=True)
- def qxz_data_chart(request):
- """
- 气象折线图接口 :
- 参数:
- device_id 必传(string)
- begin 必传(string 时间戳) 开始时间 (用于时间搜索) 默认近一个月
- end 非必传(string 时间戳) 结束时间 (用于时间搜索)
- 返回值:
- {
- "data": {
- "conf": {
- "e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30
- },
- "nums": 0,
- "data": [
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },...
- ]
- }
- "params": {},
- "formError": {},
- "errorCode": 0,
- "message": "",
-
- }
- """
-
- device_id = request.POST.get("device_id")
- data = []
- f_tbegin = request.POST.get('begin')
- f_tend = request.POST.get('end')
- try:
- device = MongoDevice.objects.get(device_id=device_id)
- device_expire = device.device_expire
- device_expire_time = device.device_expire_time
- except:
- raise PortError('device_id',"暂无此设备")
-
- qxz_list = QXZdata_New.objects.filter(device_id=device_id)
-
- myuser_type = request.user_type
- if not myuser_type == 1 and not myuser_type == 5:
- if f_tbegin and int(f_tend) > int(device_expire_time):
- f_tend = device_expire_time
- if f_tbegin and f_tend:
- qxz_list =qxz_list.filter(uptime__range=(int(f_tbegin),int(f_tend))).order_by('-id')
- conf = {}
- for i in qxz_list:
- data.append({"dat":{"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
- "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
- "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
- "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
- "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
- "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
- "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30},
- "time":i.uptime})
- try:
- x = MongoQXZ_Conf.objects.get(device_id=device_id)
- conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
- except:
- conf = {}
- data1 = {"data":data,"conf":conf}
- return data1
- @kedong_deco(login_required=True)
- def qxz_early_warning(request):
- """
- 气象站查看短信预警信息接口\配置预警信息接口
- 参数:
- device_id 必传(str) 设备号
- status 必传(str) 当status等于see查看, 当status等于save保存
- alarm 非必传(json) 配置信息,例如:{"dat":{"e1":"1#12","e2":"0#","e3":"0#","e4":"0#","e5":"0#","e6":"0#","e7":"0#","e8":"0#","e9":"0#"},"tel":"18258845915","equip_id":"865553058440811"}
-
- 返回值:
- {
- "data" 0 0 保存成功 1失败
- }
- """
- status = request.POST.get("status")
- device_id = request.POST.get("device_id")
- if status == "see":
- try:
- qxz_alarm = MongoQXZ_Alarm.objects.get(device_id=device_id)
- alarm = ast.literal_eval(qxz_alarm.conf)
- phone = qxz_alarm.phone
- except Exception as e:
- print(e)
- alarm = ""
- phone = ""
- x = MongoQXZ_Conf.objects.get(device_id=device_id)
- conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
- for k in list(conf.keys()):
- if not conf[k]:
- del conf[k]
- data = {"conf":conf,"alarm":alarm,"phone":phone}
- elif status == "save":
- alarm = ast.literal_eval(request.POST.get('alarm'))
- conf = alarm["dat"]
- try:
- MongoQXZ_Alarm.objects.update_or_create(
- device_id=device_id,
- defaults={
- "conf": {"dat": conf},
- "upl_time": int(time.time())
- }
- )
- return {"code":0}
- except Exception as e:
- raise PortError("","更新失败")
- else:
- raise PortError("","参数超出范围")
- return data
- def qxz_configs(conf,e_data,es):
- """气象站要素配置"""
- e3s = conf.get(es,"")
- code = e_data.split('#')[1]
- if e3s:
- config = e3s.split("#")
- config.insert(0,code)
- else:
- config = qxz_dict_1[e_data.split('#')[1]]
- return config
- @kedong_deco(login_required=True)
- def qxz_day_data(request):
- """
- 气象24H数据接口 :
- 参数:
- device_id 必传(string)
- 返回值:
- {
- "data": {
- "conf": {
- "e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30
- },
- "nums": 0,
- "data": [
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },
- {
- "e1":qxz_list.e1,"e2":qxz_list.e2,"e3":qxz_list.e3,"e4":qxz_list.e4,"e5":qxz_list.e5,
- "e6":qxz_list.e6,"e7":qxz_list.e7,"e8":qxz_list.e8,"e9":qxz_list.e9,"e10":qxz_list.e10,
- "e11":qxz_list.e11,"e12":qxz_list.e12,"e13":qxz_list.e13,"e14":qxz_list.e14,
- "e15":qxz_list.e15,"e16":qxz_list.e16,"e17":qxz_list.e17,"e18":qxz_list.e18,
- "e19":qxz_list.e19,"e20":qxz_list.e20,"e21":qxz_list.e21,"e22":qxz_list.e22,
- "e23":qxz_list.e23,"e24":qxz_list.e24,"e25":qxz_list.e25,"e26":qxz_list.e26,
- "e27":qxz_list.e27,"e28":qxz_list.e28,"e29":qxz_list.e29,"e30":qxz_list.e30,
- "upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S')
- },...
- ]
- }
- "params": {},
- "formError": {},
- "errorCode": 0,
- "message": "",
-
- }
- """
- device_id = request.POST.get("device_id")
- qxz_dict_1 = copy.deepcopy(qxz_dict) # 如果不拷贝 后面折线图修改字典会导致字典内容变化 从而造成数据错误
-
- times = ""
- try:
- MongoDevice.objects.get(device_id=device_id)
- except:
- logger.error(f"{device_id} 暂无此设备")
- raise PortError('device_id',"暂无此设备")
- qxz_list = QXZstatus_New.objects.filter(device_id=device_id).order_by("-uptime").first()
- if qxz_list:
- times = qxz_list.uptime
- # 获取最新一条数据的时间然后进行时间格式转换,再获取前一天时间
- if times:
- otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(times))
- times_type = datetime.datetime.strptime(str(otherStyleTime), "%Y-%m-%d %H:%M:%S")
- now = times_type - datetime.timedelta(days=1)
- else:
- # 获取前一天的时间点从0点到24点时间
- now = datetime.datetime.now()- datetime.timedelta(days=1)
- zero_today = now - datetime.timedelta(hours=now.hour, minutes=now.minute, seconds=now.second,microseconds=now.microsecond)
- last_today = zero_today + datetime.timedelta(hours=23, minutes=59, seconds=59)
-
- start_time = int(time.mktime(time.strptime(str(zero_today), "%Y-%m-%d %H:%M:%S")))
- end_time = int(time.mktime(time.strptime(str(last_today), "%Y-%m-%d %H:%M:%S")))
-
-
- sta1 = QXZdata_New.objects.filter(device_id=device_id).filter(uptime__range=(start_time,end_time)).values()
- data = []
- e1 = []
- e1_time = []
- e2 = []
- e2_time = []
- e3 = []
- e3_time = []
- e4 = []
- e4_time = []
- e5 = []
- e5_time = []
- e6 = []
- e6_time = []
- e7 = []
- e7_time = []
- e8 = []
- e8_time = []
- e9 = []
- e9_time = []
- e10 = []
- e10_time = []
- e11 = []
- e11_time = []
- e12 = []
- e12_time = []
- e13 = []
- e13_time = []
- e14 = []
- e14_time = []
- e15 = []
- e15_time = []
- e16 = []
- e16_time = []
- e17 = []
- e17_time = []
- e18 = []
- e18_time = []
- e19 = []
- e19_time = []
- e20 = []
- e20_time = []
- e21 = []
- e21_time = []
- e22 = []
- e22_time = []
- e23 = []
- e23_time = []
- e24 = []
- e24_time = []
- e25 = []
- e25_time = []
- e26 = []
- e26_time = []
- e27 = []
- e27_time = []
- e28 = []
- e28_time = []
- e29 = []
- e29_time = []
- e30 = []
- e30_time = []
- for i in sta1[:200]:
- if i['e1']:
- e1.append(float(i['e1'].split('#')[0]))
- e1_time.append(i['uptime'])
- if i['e2']:
- e2.append(float(i['e2'].split('#')[0]))
- e2_time.append(i['uptime'])
- if i['e3']:
- e3.append(float(i['e3'].split('#')[0]))
- e3_time.append(i['uptime'])
- if i['e4']:
- e4.append(float(i['e4'].split('#')[0]))
- e4_time.append(i['uptime'])
- if i['e5']:
- e5.append(float(i['e5'].split('#')[0]))
- e5_time.append(i['uptime'])
- if i['e6']:
- e6.append(float(i['e6'].split('#')[0]))
- e6_time.append(i['uptime'])
- if i['e7']:
- e7.append(float(i['e7'].split('#')[0]))
- e7_time.append(i['uptime'])
- if i['e8']:
- e8.append(float(i['e8'].split('#')[0]))
- e8_time.append(i['uptime'])
- if i['e9']:
- e9.append(float(i['e9'].split('#')[0]))
- e9_time.append(i['uptime'])
- if i['e10']:
- e10.append(float(i['e10'].split('#')[0]))
- e10_time.append(i['uptime'])
- if i['e11']:
- e11.append(float(i['e11'].split('#')[0]))
- e11_time.append(i['uptime'])
- if i['e12']:
- e12.append(float(i['e12'].split('#')[0]))
- e12_time.append(i['uptime'])
- if i['e13']:
- e13.append(float(i['e13'].split('#')[0]))
- e13_time.append(i['uptime'])
- if i['e14']:
- e14.append(float(i['e14'].split('#')[0]))
- e14_time.append(i['uptime'])
- if i['e15']:
- e15.append(float(i['e15'].split('#')[0]))
- e15_time.append(i['uptime'])
- if i['e16']:
- e16.append(float(i['e16'].split('#')[0]))
- e16_time.append(i['uptime'])
- if i['e17']:
- e17.append(float(i['e17'].split('#')[0]))
- e17_time.append(i['uptime'])
- if i['e18']:
- e18.append(float(i['e18'].split('#')[0]))
- e18_time.append(i['uptime'])
- if i['e19']:
- e19.append(float(i['e19'].split('#')[0]))
- e19_time.append(i['uptime'])
- if i['e20']:
- e20.append(float(i['e20'].split('#')[0]))
- e20_time.append(i['uptime'])
- if i['e21']:
- e21.append(float(i['e21'].split('#')[0]))
- e21_time.append(i['uptime'])
- if i['e22']:
- e22.append(float(i['e22'].split('#')[0]))
- e22_time.append(i['uptime'])
- if i['e23']:
- e23.append(float(i['e23'].split('#')[0]))
- e23_time.append(i['uptime'])
- if i['e24']:
- e24.append(float(i['e24'].split('#')[0]))
- e24_time.append(i['uptime'])
- if i['e25']:
- e25.append(float(i['e25'].split('#')[0]))
- e25_time.append(i['uptime'])
- if i['e26']:
- e26.append(float(i['e26'].split('#')[0]))
- e26_time.append(i['uptime'])
- if i['e27']:
- e27.append(float(i['e27'].split('#')[0]))
- e27_time.append(i['uptime'])
- if i['e28']:
- e28.append(float(i['e28'].split('#')[0]))
- e28_time.append(i['uptime'])
- if i['e29']:
- e29.append(float(i['e29'].split('#')[0]))
- e29_time.append(i['uptime'])
- if i['e30']:
- e30.append(float(i['e30'].split('#')[0]))
- e30_time.append(i['uptime'])
-
-
- conf = {}
- x = MongoQXZ_Conf.objects.filter(device_id=device_id).first()
- if x:
- conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
- data = []
- try:
- if e1 != []:
- config = qxz_configs(conf,i['e1'],"e1")
- data.append({"max":max(e1),"maxtime":e1_time[e1.index(max(e1))],"min":min(e1),"mintime":e1_time[e1.index(min(e1))],"enum":config,"ekey":i['e1'].split('#')[2]})
- if e2 != []:
- config = qxz_configs(conf,i['e2'],"e2")
- data.append({"max":max(e2),"maxtime":e2_time[e2.index(max(e2))],"min":min(e2),"mintime":e2_time[e2.index(min(e2))],"enum":config,"ekey":i['e2'].split('#')[2]})
- if e3 != []:
- config = qxz_configs(conf,i['e3'],"e3")
- data.append({"max":max(e3),"maxtime":e3_time[e3.index(max(e3))],"min":min(e3),"mintime":e3_time[e3.index(min(e3))],"enum":config,"ekey":i['e3'].split('#')[2]})
- if e4 != []:
- config = qxz_configs(conf,i['e4'],"e4")
- data.append({"max":max(e4),"maxtime":e4_time[e4.index(max(e4))],"min":min(e4),"mintime":e4_time[e4.index(min(e4))],"enum":config,"ekey":i['e4'].split('#')[2]})
- if e5 != []:
- config = qxz_configs(conf,i['e5'],"e5")
- data.append({"max":max(e5),"maxtime":e5_time[e5.index(max(e5))],"min":min(e5),"mintime":e5_time[e5.index(min(e5))],"enum":config,"ekey":i['e5'].split('#')[2]})
- if e6 != []:
- config = qxz_configs(conf,i['e6'],"e6")
- data.append({"max":max(e6),"maxtime":e6_time[e6.index(max(e6))],"min":min(e6),"mintime":e6_time[e6.index(min(e6))],"enum":config,"ekey":i['e6'].split('#')[2]})
- if e7 != []:
- config = qxz_configs(conf,i['e7'],"e7")
- data.append({"max":max(e7),"maxtime":e7_time[e7.index(max(e7))],"min":min(e7),"mintime":e7_time[e7.index(min(e7))],"enum":config,"ekey":i['e7'].split('#')[2]})
- if e8 != []:
- config = qxz_configs(conf,i['e8'],"e8")
- data.append({"max":max(e8),"maxtime":e8_time[e8.index(max(e8))],"min":min(e8),"mintime":e8_time[e8.index(min(e8))],"enum":config,"ekey":i['e8'].split('#')[2]})
- if e9 != []:
- config = qxz_configs(conf,i['e9'],"e9")
- data.append({"max":max(e9),"maxtime":e9_time[e9.index(max(e9))],"min":min(e9),"mintime":e9_time[e9.index(min(e9))],"enum":config,"ekey":i['e9'].split('#')[2]})
- if e10 != []:
- config = qxz_configs(conf,i['e10'],"e10")
- data.append({"max":max(e10),"maxtime":e10_time[e10.index(max(e10))],"min":min(e10),"mintime":e10_time[e10.index(min(e10))],"enum":config,"ekey":i['e10'].split('#')[2]})
- if e11 != []:
- config = qxz_configs(conf,i['e11'],"e11")
- data.append({"max":max(e11),"maxtime":e11_time[e11.index(max(e11))],"min":min(e11),"mintime":e11_time[e11.index(min(e11))],"enum":config,"ekey":i['e11'].split('#')[2]})
- if e12 != []:
- config = qxz_configs(conf,i['e12'],"e12")
- data.append({"max":max(e12),"maxtime":e12_time[e12.index(max(e12))],"min":min(e12),"mintime":e12_time[e12.index(min(e12))],"enum":config,"ekey":i['e12'].split('#')[2]})
- if e13 != []:
- config = qxz_configs(conf,i['e13'],"e13")
- data.append({"max":max(e13),"maxtime":e13_time[e13.index(max(e13))],"min":min(e13),"mintime":e13_time[e13.index(min(e13))],"enum":config,"ekey":i['e13'].split('#')[2]})
- if e14 != []:
- config = qxz_configs(conf,i['e14'],"e14")
- data.append({"max":max(e14),"maxtime":e14_time[e14.index(max(e14))],"min":min(e14),"mintime":e14_time[e14.index(min(e14))],"enum":config,"ekey":i['e14'].split('#')[2]})
- if e15 != []:
- config = qxz_configs(conf,i['e15'],"e15")
- data.append({"max":max(e15),"maxtime":e15_time[e15.index(max(e15))],"min":min(e15),"mintime":e15_time[e15.index(min(e15))],"enum":config,"ekey":i['e15'].split('#')[2]})
- if e16 != []:
- config = qxz_configs(conf,i['e16'],"e16")
- data.append({"max":max(e16),"maxtime":e16_time[e16.index(max(e16))],"min":min(e16),"mintime":e16_time[e16.index(min(e16))],"enum":config,"ekey":i['e16'].split('#')[2]})
- if e17 != []:
- config = qxz_configs(conf,i['e17'],"e17")
- data.append({"max":max(e17),"maxtime":e17_time[e17.index(max(e17))],"min":min(e17),"mintime":e17_time[e17.index(min(e17))],"enum":config,"ekey":i['e17'].split('#')[2]})
- if e18 != []:
- config = qxz_configs(conf,i['e18'],"e18")
- data.append({"max":max(e18),"maxtime":e18_time[e18.index(max(e18))],"min":min(e18),"mintime":e18_time[e18.index(min(e18))],"enum":config,"ekey":i['e18'].split('#')[2]})
- if e19 != []:
- config = qxz_configs(conf,i['e19'],"e19")
- data.append({"max":max(e19),"maxtime":e19_time[e19.index(max(e19))],"min":min(e19),"mintime":e19_time[e19.index(min(e19))],"enum":config,"ekey":i['e19'].split('#')[2]})
- if e20 != []:
- config = qxz_configs(conf,i['e20'],"e20")
- data.append({"max":max(e20),"maxtime":e20_time[e20.index(max(e20))],"min":min(e20),"mintime":e20_time[e20.index(min(e20))],"enum":config,"ekey":i['e20'].split('#')[2]})
- if e21 != []:
- config = qxz_configs(conf,i['e21'],"e21")
- data.append({"max":max(e21),"maxtime":e21_time[e21.index(max(e21))],"min":min(e21),"mintime":e21_time[e21.index(min(e21))],"enum":config,"ekey":i['e21'].split('#')[2]})
- if e22 != []:
- config = qxz_configs(conf,i['e22'],"e22")
- data.append({"max":max(e22),"maxtime":e22_time[e22.index(max(e22))],"min":min(e22),"mintime":e22_time[e22.index(min(e22))],"enum":config,"ekey":i['e22'].split('#')[2]})
- if e23 != []:
- config = qxz_configs(conf,i['e23'],"e23")
- data.append({"max":max(e23),"maxtime":e23_time[e23.index(max(e23))],"min":min(e23),"mintime":e23_time[e23.index(min(e23))],"enum":config,"ekey":i['e23'].split('#')[2]})
- if e24 != []:
- config = qxz_configs(conf,i['e24'],"e24")
- data.append({"max":max(e24),"maxtime":e24_time[e24.index(max(e24))],"min":min(e24),"mintime":e24_time[e24.index(min(e24))],"enum":config,"ekey":i['e24'].split('#')[2]})
- if e25 != []:
- config = qxz_configs(conf,i['e25'],"e25")
- data.append({"max":max(e25),"maxtime":e25_time[e25.index(max(e25))],"min":min(e25),"mintime":e25_time[e25.index(min(e25))],"enum":config,"ekey":i['e25'].split('#')[2]})
- if e26 != []:
- config = qxz_configs(conf,i['e26'],"e26")
- data.append({"max":max(e26),"maxtime":e26_time[e26.index(max(e26))],"min":min(e26),"mintime":e26_time[e26.index(min(e26))],"enum":config,"ekey":i['e26'].split('#')[2]})
- if e27 != []:
- config = qxz_configs(conf,i['e27'],"e27")
- data.append({"max":max(e27),"maxtime":e27_time[e27.index(max(e27))],"min":min(e27),"mintime":e27_time[e27.index(min(e27))],"enum":config,"ekey":i['e27'].split('#')[2]})
- if e28 != []:
- config = qxz_configs(conf,i['e28'],"e28")
- data.append({"max":max(e28),"maxtime":e28_time[e28.index(max(e28))],"min":min(e28),"mintime":e28_time[e28.index(min(e28))],"enum":config,"ekey":i['e28'].split('#')[2]})
- if e29 != []:
- config = qxz_configs(conf,i['e29'],"e29")
- data.append({"max":max(e29),"maxtime":e29_time[e29.index(max(e29))],"min":min(e29),"mintime":e29_time[e29.index(min(e29))],"enum":config,"ekey":i['e29'].split('#')[2]})
- if e30 != []:
- config = qxz_configs(conf,i['e30'],"e30")
- data.append({"max":max(e30),"maxtime":e30_time[e30.index(max(e30))],"min":min(e30),"mintime":e30_time[e30.index(min(e30))],"enum":config,"ekey":i['e30'].split('#')[2]})
- except Exception as e:
- logger.error(f"气象站24h数据:{e}")
- raise PortError(" ", "计算数据失败,稍后重试")
- dat = {"data":data,"conf":conf}
- return dat
- @kedong_deco(login_required=False)
- def device_status_data(request):
- """
- 虫情测报灯/数据详情
- 设备实时状态接口
- 参数:
- device_id 必传 设备id
- 返回值:
- "data": {
- "upds": 1, 上仓门状态 1打开,0关闭
- "tpl": 5, 低温保护阈值温度
- "dver": "1.0.0", 设备固件版本
- "gs": 0, 通道状态 1落虫,0排水
- "hs": 0, 加热状态 1加热,0正常
- "dnds": 0, 下仓门状态 1打开,0关闭
- "is_online": 0, 在线状态
- "csq": 29, 信号强度
- "tph": 70, 高温保护阈值温度
- "ts": 0 定时模式 0光控,1时控
- "tps": 1 温控状态 1 温控,0 正常
- "lps": 0 光控状态 1 光控,0 正常
- "hrt": 22 加热仓实时温度
- "device_name":"这里是设备名称",
- "address": "这里是设备位置",
- "iccid": 1234444 SIM卡号
- }
- """
- post_info = request.POST
- _device_id = post_info.get("device_id")
- if not _device_id:
- raise PortError('device_id', "该设备不存在")
- try:
- device = MongoDevice.objects.get(device_id=_device_id)
- except:
- raise PortError('device_id','暂无此设备')
- d_id = device.id
- device_name = device.device_name
- province = device.province
- city = device.city
- district = device.district
- device_status = device.device_status # 在线状态
- myuser_type = request.user_type
- device_datas = MongoCBDData.objects.filter(device_id=d_id).order_by('-id')
- try:
- device_data = json.loads(device_datas[0].device_data)
- except json.JSONDecodeError as e:
- device_data = eval(device_datas[0].device_data)
- except:
- raise PortError("device_id","暂无数据")
-
- ds = device_data.get("ds",1 )
- ts = device_data.get("ts",1)
- up_st = {
- "is_online": device_status,
- "ts":ts,
- "hs":device_data["hs"],
- "upds":device_data["upds"],
- "dnds":device_data["dnds"],
- "csq":device_data["csq"],
- "dver":device_data["dver"],
- "tph":device_data["tph"],
- "tpl":device_data["tpl"],
- "tps":device_data["tps"],
- "lps":device_data["lps"],
- "hrt":device_data["hrt"],
- "iccid":device_data["iccid"],
- "rps":device_data["rps"],
- "ah":device_data["ah"],
- "at":device_data["at"],
- "ds":ds,
- "device_name":device_name,
- "address": province + city + district,
- }
- return up_st
- @kedong_deco(login_required=True)
- def qxz_switch_status(request):
- """
- 气象站开关、阈值状态接口
- 参数:
- device_id 必传(str) 设备号
-
- 返回值:
- {
- qxz_switch: "[{'status': 0, 'JK': 0}, {'status': 0, 'JK': 1}]" 开关状态
- switch_name: "[{'name': '开关0', 'JK': 0}, {'name': '', 'JK': 1}]" 开关名称
- timing_list: "[{'JK': 0, 'Duration': 4, 'StartTime': 3}, {'JK': 1, 'Duration': 8, 'StartTime': 7}]" 定时控制
- auto_list: [{'lower': 32767, 'JK': 0, 'method': 0, 'upper': 32767, 'eKey': 0}]" 阈值状态
- }
- """
- device_id = request.POST.get("device_id")
- data = []
- try:
- switch_obj = QXZ_Switch_Status.objects.get(device_id=device_id)
- qxz_switch = switch_obj.qxz_switch
- except:
- qxz_switch = ""
- try:
- switch_name_obj = MongoQXZ_Switch.objects.get(device_id=device_id)
- switch_name = switch_name_obj.qxz_switch_data
- except:
- switch_name = ""
- try:
- timing_list = MongoQXZ_Timing_Switch.objects.get(device_id=device_id).qxz_timing
- except:
- timing_list = ""
-
- try:
- auto_list = MongoQXZ_Auto_Switch.objects.get(device_id=device_id).qxz_auto
- except:
- auto_list = ""
- data = {'qxz_switch':qxz_switch, 'switch_name':switch_name, 'timing_list':timing_list,"auto_list":auto_list}
- return data
- @kedong_deco(login_required=False)
- def qxz_element_conf(request):
- """
- 气象站查看通道要素接口\保存通道要素接口:
- 参数:
- device_id 必传(str) 设备号
- status 必传(str) 当status等于see查看, 当status等于save保存
- ekey 非必传(str) 通道号 如e1
- conf 非必传(str) 通道标题,如大气温度#℃
-
- 说明:当status等于see查看,只需要传device_id,当status等于save保存 需传device_id、conf、ekey
- 返回值:
- 当status等于see时:
- "data": {
- "default": { 原来值
- "e1": "大气温度#℃",
- "e2": "大气湿度#%RH",
- "e3": "风速#m/s",
- "e4": "风向#°",
- "e5": "模拟气压#hpa",
- "e6": "简易总辐射#w/㎡"
- },
- "conf": { 修改值
- "e1": "大气温度#℃",
- "e2": "大气湿度#%RH",
- "e3": "风速#m/s",
- "e4": "风向#°",
- "e5": "模拟气压#hpa",
- "e6": "简易总辐射#w/㎡"
- }
- },
- 当status等于save时:
- {
- "data" 0 0 保存成功 1失败
- }
- """
- device_id = request.POST.get("device_id")
- status = request.POST.get("status")
- ekey = request.POST.get("ekey")
- conf = request.POST.get("conf")
- if status == "see":
- x = MongoQXZ_Conf.objects.get(device_id=device_id)
- i = QXZ_Default_Conf.objects.get(device_id=device_id)
- conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
- "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
- "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
- "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
- "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
- "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
- "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
- default = {"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
- "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
- "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
- "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
- "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
- "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
- "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30}
- for k in list(conf.keys()):
- if not conf[k]:
- del conf[k]
- for y in list(default.keys()):
- if not default[y]:
- del default[y]
- data = {"default":default,"conf":conf}
- elif status == "save":
- times = int(time.time())
- conf_obj = MongoQXZ_Conf.objects.get(device_id=device_id)
- if ekey == "e1":
- con = (conf_obj.e1).split("#")
- conf_obj.e1 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e2":
- con = (conf_obj.e2).split("#")
- conf = conf + "#"+ con[1]
- conf_obj.e2 = conf
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e3":
- con = (conf_obj.e3).split("#")
- conf_obj.e3 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e4":
- con = (conf_obj.e4).split("#")
- conf_obj.e4 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e5":
- con = (conf_obj.e5).split("#")
- conf_obj.e5 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e6":
- con = (conf_obj.e6).split("#")
- conf_obj.e6 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e7":
- con = (conf_obj.e7).split("#")
- conf_obj.e7 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e8":
- con = (conf_obj.e8).split("#")
- conf_obj.e8 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e9":
- con = (conf_obj.e9).split("#")
- conf_obj.e9 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e10":
- con = (conf_obj.e10).split("#")
- conf_obj.e10 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e11":
- con = (conf_obj.e11).split("#")
- conf_obj.e11 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e12":
- con = (conf_obj.e12).split("#")
- conf_obj.e12 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e13":
- con = (conf_obj.e13).split("#")
- conf_obj.e13 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e14":
- con = (conf_obj.e14).split("#")
- conf_obj.e14 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e15":
- con = (conf_obj.e15).split("#")
- conf_obj.e15 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e16":
- con = (conf_obj.e16).split("#")
- conf_obj.e16 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e17":
- con = (conf_obj.e17).split("#")
- conf_obj.e17 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e18":
- con = (conf_obj.e18).split("#")
- conf_obj.e18 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e19":
- con = (conf_obj.e19).split("#")
- conf_obj.e19 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e20":
- con = (conf_obj.e20).split("#")
- conf_obj.e20 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e21":
- con = (conf_obj.e21).split("#")
- conf_obj.e21 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e22":
- con = (conf_obj.e22).split("#")
- conf_obj.e22 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e23":
- con = (conf_obj.e23).split("#")
- conf_obj.e23 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e24":
- con = (conf_obj.e24).split("#")
- conf_obj.e24 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e25":
- con = (conf_obj.e25).split("#")
- conf_obj.e25 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e26":
- con = (conf_obj.e26).split("#")
- conf_obj.e26 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e27":
- con = (conf_obj.e27).split("#")
- conf_obj.e27 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e28":
- con = (conf_obj.e28).split("#")
- conf_obj.e28 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e29":
- con = (conf_obj.e29).split("#")
- conf_obj.e29 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- elif ekey == "e30":
- con = (conf_obj.e30).split("#")
- conf_obj.e30 = conf + "#"+ con[1]
- conf_obj.update = times
- conf_obj.save()
- data = {"code": 0}
- else:
- data = {"code": 1}
- else:
- raise PortError("","参数超出范围")
- return data
|