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))