You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
4.7 KiB
117 lines
4.7 KiB
from django.shortcuts import render
|
|
from django.http import HttpResponse,Http404,HttpResponseRedirect
|
|
from .envpost import *
|
|
from django.views.decorators.csrf import csrf_exempt
|
|
import time
|
|
from datetime import datetime
|
|
import json
|
|
|
|
@csrf_exempt
|
|
def ntp_time(request):
|
|
spot = request.GET.get('spot')
|
|
# servaddr = request.GET.get('servaddr')
|
|
timespan = request.GET.get('timespan')
|
|
afire = request.GET.get('afire')
|
|
atemp = request.GET.get('atemp')
|
|
ahum = request.GET.get('ahum')
|
|
try:
|
|
save_deviceinfo(spot, timespan, afire, atemp, ahum)
|
|
except:
|
|
pass
|
|
return HttpResponse(str(int(time.time())+28801))
|
|
|
|
@csrf_exempt
|
|
def epost(request):
|
|
if request.method != 'POST':
|
|
return HttpResponse('Request method error.')
|
|
token = request.POST.get('token')
|
|
if not check_token(token):
|
|
return HttpResponse('Bad Request.')
|
|
sn = request.POST.get('sn')
|
|
if not check_spot(sn):
|
|
return HttpResponse('POST too soon.')
|
|
errcode = request.POST.get('errno')
|
|
electricity = request.POST.get('electricity')
|
|
fire = request.POST.get('fire')
|
|
water = request.POST.get('water')
|
|
temperature = request.POST.get('temperature')
|
|
humidity = request.POST.get('humidity')
|
|
envdata = {'sn':sn,'errcode':errcode, 'electricity':electricity, 'fire':fire, 'water':water, 'temperature':temperature, 'humidity':humidity}
|
|
deal_post(envdata)
|
|
return HttpResponse('Data received.')
|
|
|
|
def index(request):
|
|
return HttpResponseRedirect('/admin/')
|
|
|
|
def chart_index(request):
|
|
if request.method == 'POST':
|
|
topic = request.POST.get('topicval') # 统计主题
|
|
tp = request.POST.get('tpval') # 统计分类
|
|
spot = request.POST.get('spotval') # 地点
|
|
statics_data = ''
|
|
if not request.POST.get('startdate'):
|
|
startdate = datetime.strftime(datetime.now() - timedelta(days=30), '%Y-%m-%d')
|
|
else:
|
|
startdate = request.POST.get('startdate')
|
|
if not request.POST.get('enddate'):
|
|
enddate = datetime.strftime(datetime.now(), '%Y-%m-%d')
|
|
else:
|
|
enddate = request.POST.get('enddate')
|
|
starttime = datetime.strptime(startdate + ' 00:00:00', '%Y-%m-%d %H:%M:%S')
|
|
endtime = datetime.strptime(enddate + ' 23:59:59', '%Y-%m-%d %H:%M:%S')
|
|
if not topic:
|
|
topic = ''
|
|
if not tp:
|
|
tp = ''
|
|
if not spot:
|
|
spot = ''
|
|
if topic == '报警统计':
|
|
statics_data = list(alarm_statics(spot, starttime, endtime))
|
|
if topic == '采集统计':
|
|
statics_data = list(env_statics(spot, tp, starttime, endtime))
|
|
for item in statics_data:
|
|
item['rectime'] = datetime.strftime(item['rectime'], '%Y/%m/%d %H:%M:%S')
|
|
if topic == '综合统计':
|
|
statics_data = compre_statics(starttime, endtime)
|
|
spots = parse_spots(get_spots())
|
|
return render(request, 'chartindex.html', {'startdate': startdate, 'enddate': enddate, 'topicname': topic,
|
|
'tpname': tp, 'statics_data': statics_data, 'spots': spots, 'spot': spot})
|
|
else:
|
|
startdate = datetime.strftime(datetime.now()-timedelta(days=30), '%Y-%m-%d')
|
|
enddate = datetime.strftime(datetime.now(), '%Y-%m-%d')
|
|
spots = get_spots()
|
|
return render(request, 'chartindex.html', {'startdate': startdate, 'enddate': enddate, 'spots': spots})
|
|
|
|
def sys_cmd(request):
|
|
if request.method == 'GET':
|
|
spots = get_spots()
|
|
cmdlist = get_cmdlist()
|
|
return render(request, 'sysmanager.html', {'spots': spots, 'sptname': '', 'cmdname': '', 'cmdlist':cmdlist})
|
|
else:
|
|
spots = get_spots()
|
|
spot = request.POST.get('spotval')
|
|
cmd = request.POST.get('cmdval')
|
|
sptname = request.POST.get('sptname')
|
|
cmdname = request.POST.get('cmdname')
|
|
param = request.POST.get('paramval')
|
|
if spot and cmd:
|
|
store_cmd(spot, cmd, param)
|
|
cmdlist = get_cmdlist()
|
|
return render(request, 'sysmanager.html', {'spot': spot, 'cmd': cmd, 'param': param, 'spots': spots,
|
|
'sptname':sptname, 'cmdname':cmdname, 'cmdlist':cmdlist})
|
|
|
|
def cmd_query(request):
|
|
# 设备取命令
|
|
cmdqueue = pop_cmd(request.GET.get('spot'))
|
|
return HttpResponse(cmdqueue)
|
|
|
|
def cmd_queue(request):
|
|
# 获取当前未执行命令列表
|
|
cmdlist = get_cmdlist()
|
|
return HttpResponse(json.dumps({'cmdlist':cmdlist}))
|
|
|
|
def query_deviceinfo(request):
|
|
# 管理端获取最新定设备参数
|
|
deviceinfo = get_deviceinfo(request.GET.get('spot'))
|
|
return HttpResponse(json.dumps(deviceinfo))
|
|
|
|
|