# -*- coding: utf-8 -*- import array from django.shortcuts import render from itertools import chain import requests from requests.auth import HTTPBasicAuth from django.core.exceptions import ObjectDoesNotExist from django.http import JsonResponse, HttpResponse from django.views.generic import ListView from django.core import serializers import datetime from PIL import Image import time import json from io import BytesIO from apps.AppInfoManage.models import MyUser, User_Log, Equip, SCDdata, SCDstatus, CBDdata, CBDstatus, YBQdata, YBQstatus, JKdata, BZYstatus, BZYdata, SCDstatus_all, CBDstatus_all,\ QXZswitchstatus, QXZswitchdata, QXZAutoswitch, QXZstatus, QXZTimingswitch, JKphoto, QXZstatus_New, QXZdata_New, QXZ_Conf, QXZswitchstatus, QXZswitchdata, QXZTimingswitch,\ QXZAutoswitch,QXZ_Default_Conf, QXZ_Base_Info, YBQphoto, Group, QXZ_Alarm, JKtoken, QXZ_Info_Record,CBDphoto,Equip_type, TCCBstatus, TCCBdata, TCCBphoto, RTUdata, RTUstatus, CBDupdate # 引用查询流量接口 from apps.SimInfo.views import get_siminfo # 引用全局变量 from django.conf import settings from django.views.decorators.csrf import csrf_exempt from apps.ReportManage.all_dict import api_code, qxz_dict import re import os import copy import xlwt from yfwlw_pro.settings import ip def equip_validation(uid,imei): # 接收参数 equip_exist = Equip.objects.filter(equip_id=imei) if equip_exist.exists(): equip_obj = Equip.objects.get(equip_id=imei) if equip_obj.equip_user.username == uid: print("验证成功") data = "0" return data else: print("------",equip_obj.equip_user.username) print("用户名错误") data = "1" return data else: print("设备不存在") data = "1" return data # 判别身份是否为管理员的方法: # 是管理员返回admin,否返回当前用户名 def identity(request): # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) # 管理员和普通用户 current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser == True: print("identity---:超级管理员") return "superuser" elif current_user.is_superuser != True and current_user.is_staff == True: print("identity---:管理员") return "staff" elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("identity---:代理商") return "agency" elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("identity---:普通用户") # 注意返回的为对象实例: return current_user class CJSONEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj, datetime.datetime): return obj.strftime('%Y-%m-%d %H:%M:%S') elif isinstance(obj,data): return obj.strftime('%Y-%m-%d') else: return json.JSONEncoder.default(self, obj) # 杀虫灯设备管理类视图: class SCDManage_View(ListView): def get(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") role = "user" nums = SCDstatus.objects.filter( equip_id__equip_user=current_user).count() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") role = "user" nums = SCDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency).count() else: role = "superuser" print("---管理员") nums = SCDstatus.objects.all().count() cbdgroup = Group.objects.get(name='杀虫灯用户') # obj = Group.models.get(b_name='xxx') user_list = MyUser.objects.filter(groups=cbdgroup) User_Log.objects.create(log_user=current_user, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-杀虫灯') return render(request, 'equipmanage/equipmanage_scd.html', context={"nums": nums,"role": role, "user_list":user_list}) def post(self, request): if request.is_ajax(): print("ajax-post!") req = request.POST.get('req') print("req:", req) # 请求数据: if req == "reqdat": print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") sta1 = SCDstatus.objects.filter(equip_id__equip_user=current_user)[( 10*(page-1)):(page*10)] elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[( 10*(page-1)):(page*10)] else: print("---管理员") sta1 = SCDstatus.objects.all()[(10*(page-1)):(page*10)] sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time, "paramconf": x.paramconf, "serverconf": x.serverconf, "equip_name": x.equip_id.equip_name, "is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) elif req == "filter": ename = request.POST.get('ename') print("ename:", ename) f_id = request.POST.get('f_id') print("f_id:", f_id) page = int(request.POST.get('page')) print("page:", page) uname = request.POST.get('uname') print("uname:", uname) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") if ename == "" and f_id == "": sta1 = SCDstatus.objects.filter( equip_id__equip_user=current_user) elif ename == "" and f_id != "": sta1 = SCDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) elif ename != "" and f_id == "": sta1 = SCDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename) elif ename != "" and f_id != "": sta1 = SCDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") if ename == "" and f_id == "": sta1 = SCDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) elif ename == "" and f_id != "": sta1 = SCDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) elif ename != "" and f_id == "": sta1 = SCDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename) elif ename != "" and f_id != "": sta1 = SCDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) else: print("---管理员") # if ename == "" and f_id == "": # sta1 = SCDstatus.objects.all() # elif ename == "" and f_id != "": # sta1 = SCDstatus.objects.filter( # equip_id__equip_id__contains=f_id) # elif ename != "" and f_id == "": # sta1 = SCDstatus.objects.filter( # equip_id__equip_name__contains=ename) # elif ename != "" and f_id != "": # sta1 = SCDstatus.objects.filter( # equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) # 000 if ename == "" and f_id == '' and uname == '': sta1 = SCDstatus.objects.all() # 010 elif ename == "" and f_id != '' and uname == '': sta1 = SCDstatus.objects.filter( equip_id__equip_id__contains=f_id) # 100 elif ename != "" and f_id == '' and uname == '': sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename) # 110 elif ename != "" and f_id != '' and uname == '': sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename) # 011 elif ename == "" and f_id != '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = SCDstatus.objects.filter( equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = SCDstatus.objects.filter( equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname)) # 101 elif ename != "" and f_id == '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_user=MyUser.objects.get(username=uname)) # 001 elif ename == "" and f_id == '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = SCDstatus.objects.filter( equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = SCDstatus.objects.filter( equip_id__equip_user=MyUser.objects.get(username=uname)) # 111 elif ename != "" and f_id != '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = SCDstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname)) dver = request.POST.get('dver') print("dver",dver) is_online = request.POST.get('is_online') print("is_online",is_online) # ----------------------------------------------------------------------------------------- # 版本号筛选设备 if dver != "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"].split(".") if fir_v[0] == dver: sta3.append({"scd_status": i.scd_status, "upl_time": i.upl_time, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta3[(10*(page-1)):(page*10)], "nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 在线状态筛选设备 elif is_online != "" and dver == "": sta4 = [] for i in sta1: if is_online == i.is_online: sta4.append({"scd_status": i.scd_status, "upl_time": i.upl_time, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta4[(10*(page-1)):(page*10)], "nums": len(sta4)} print("-------------",len(sta4)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 版本号和在线状态同时筛选设备 elif is_online != "" and dver != "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"].split(".") if fir_v[0] == dver and i.is_online == is_online: sta3.append({"scd_status": i.scd_status, "upl_time": i.upl_time, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta3[(10*(page-1)):(page*10)], "nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time, "paramconf": x.paramconf, "serverconf": x.serverconf, "equip_name": x.equip_id.equip_name, "is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"dat": sta2[(10*(page-1)):(page*10)], "nums": sta1.count()} data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # 杀虫灯列表页导出 class SCDManage_explore(ListView): def get(self,request): uname = request.GET.get('uname') dver = request.GET.get('dver') is_online = request.GET.get('is_online') # filename = request.GET.get('filename') if uname: sta1 = SCDstatus.objects.filter(equip_id__equip_user=MyUser.objects.get(username=uname)) else: sta1 = SCDstatus.objects.all() # ----------------------------------------------------------------------------------------- # 版本号筛选设备 if dver == "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"] sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i.equip_id_id).equip_add_time}) # ----------------------------------------------------------------------------------------- # 版本号筛选设备 elif dver != "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"] if fir_v.split(".")[0] == dver: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- # 在线状态筛选设备 elif is_online != "" and dver == "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"] if is_online == i.is_online: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- # 版本号和在线状态同时筛选设备 elif is_online != "" and dver != "": sta3 = [] for i in sta1: fir_v = eval(i.scd_status)["dver"] if fir_v.split(".")[0] == dver and i.is_online == is_online: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- data1 = [] for x in sta3: if x["lat"]: res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(x["lat"],x["lng"])) try: print(eval(res.text)) print((eval(res.text))["result"]["addressComponent"]["province"]) # print((eval(res.text))["result"]["formatted_address"]) except: continue location = (eval(res.text))["result"]["addressComponent"]["province"] + (eval(res.text))["result"]["addressComponent"]["city"] + (eval(res.text))["result"]["addressComponent"]["district"] data1.append({"equip_id":x["equip_id"],"fir_v":x["fir_v"],"location":location,"is_online":x["is_online"],"off_time":x["off_time"],"creat_time":x["creat_time"]}) # print("=============>>",sta3) title = ["设备id","设备版本","设备位置","是否在线","离线时间","设备创建时间"] book = xlwt.Workbook() # 创建一个excel对象 sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页 for i in range(len(title)): # 遍历列 # sheet.write(0,i,title[i],style) # 将title数组中的字段写入到0行i列中 sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中 # print(sta2) for xx in range(len(data1)): # 遍历列表 if data1[xx]['is_online'] == "0": is_online = "离线" off_time = datetime.datetime.strftime(data1[xx]['off_time'],'%Y-%m-%d') else: is_online = "在线" off_time = "" creat_time = datetime.datetime.strftime(data1[xx]['creat_time'],'%Y-%m-%d') sheet.write(xx+1,0,data1[xx]['equip_id']) # 将equip_id写入到第x+1行,第0列中 sheet.write(xx+1,1,data1[xx]['fir_v']) sheet.write(xx+1,2,data1[xx]['location']) sheet.write(xx+1,3,is_online) sheet.write(xx+1,4,off_time) sheet.write(xx+1,5,creat_time) sheet.col(0).width = 256 * 18 sheet.col(1).width = 256 * 11 sheet.col(2).width = 256 * 24 sheet.col(3).width = 256 * 8 sheet.col(4).width = 256 * 11 sheet.col(5).width = 256 * 13 # 写出到IO output = BytesIO() book.save(output) # 重新定位到开始 output.seek(0) response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment;filename=111.xls' response.write(output.getvalue()) return response def post(self,request): pass # 杀虫灯历史状态 class SCDStatus_all(ListView): def get(self, request): e_id = request.GET.get('id') nums = SCDstatus_all.objects.filter(equip_id=e_id).count() def post(self, request): e_id = request.POST.get('id') page = int(request.POST.get('page')) sta1 = SCDstatus_all.objects.filter(equip_id=e_id) sta2 = [{"scd_status": x.scd_status, "ds": x.ds, "upl_time": x.upl_time, "paramconf": x.paramconf, "serverconf": x.serverconf, "is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"dat": sta2[(10*(page-1)):(page*10)], "nums": sta1.count()} data = json.dumps(data, cls=CJSONEncoder) print("data:",data) return HttpResponse(data) # 杀虫灯mqtt通信接口: class SCD_Mqtt(ListView): def get(self, request): pass def post(self, request): sw = request.POST.get('sw') # # 批量更改定时时长:针对光控定时模式 # if sw == "tt": # print("下发批量定时tt!!!") # topicid = request.POST.get('topicid') # hours = int(request.POST.get('hours')) # print(topicid) # id_list = json.loads(topicid) # for imei in id_list: # payload = {"cmd": "timer", "ext": {"tt": hours}} # print(type(imei)) # topic = "/yfkj/scd/sub/"+imei #[1:-1] # cmd = {"topic": topic, "payload": json.dumps( # payload), 'qos': 1} # print(json.dumps(payload, indent=1)) # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) # if res.status_code == 200: # data = "0" # return HttpResponse(data) # else: # data = "1" # return HttpResponse(data) if sw == "timer": print("下发批量定时timer!!!") topicid = request.POST.get('topicid') print(topicid) id_list = json.loads(topicid) ts = request.POST.get('ts') # print("----------------ts",ts) try: ds = int(request.POST.get('ds')) except Exception as e: print(e) ds = "" # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间 if ts == "0": # 光控 # for imei in id_list: # print("1321311",type(imei)) # topic = "/yfkj/scd/sub/"+imei #[1:-1] # 先关闭时控 # payload_1 = {"cmd": "timectr","ext": {"timctrl":0,"st":19,"et":1}} # cmd_1 = {"topic":topic, "payload":json.dumps( # payload_1), 'qos': 1} # res_1 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res_1.status_code)) hours = int(request.POST.get('hours')) payload = {"cmd":"timer", "ext":{"tt":hours}} # cmd = {"topic": topic, "payload": json.dumps( # payload), 'qos': 1} # print(json.dumps(payload, indent=1)) # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) elif ts == "1": # 时控 begin = int(request.POST.get('begin')) end = int(request.POST.get('end')) payload = {"cmd":"timectr","ext": {"timctrl":1,"st":begin,"et":end}} print("下发时控",payload) if ds != "": # 控制设备开关 print("下发开关!!!") payload = {"cmd": "power", "ext": {"ds": ds}} for imei in id_list: topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # elif sw == "ds": # print("下发开关!!!") # topicid = request.POST.get('topicid') # ds = int(request.POST.get('ds')) # print(topicid) # id_list = json.loads(topicid) # for imei in id_list: # payload = {"cmd": "power", "ext": {"ds": ds}} # print(imei) # topic = "/yfkj/scd/sub/"+imei # cmd = {"topic": topic, "payload": json.dumps( # payload), 'qos': 1} # print(json.dumps(payload, indent=1)) # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) # if res.status_code == 200: # data = "0" # return HttpResponse(data) # else: # data = "1" # return HttpResponse(data) elif sw == "read": print("下发查询!!!") topicid = request.POST.get('topicid') kind = request.POST.get('kind') print(topicid) id_list = json.loads(topicid) for imei in id_list: print (">>>>>",imei) payload = {"cmd": "read", "ext": kind} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "ctrl": print("下发升级或重启!!!") topicid = request.POST.get('topicid') kind = request.POST.get('kind') print(topicid) id_list = json.loads(topicid) for imei in id_list: payload = {"cmd": kind} print(type(imei)) topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "clean": print("下发自清虫定时") topicid = request.POST.get('topicid') tim = int(request.POST.get('time')) print(topicid) # tim = 8 id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: equip_list = SCDstatus.objects.filter(equip_id_id=imei).values() for i in equip_list: etype = eval(i['scd_status'])['dver'] if "ZQC" in etype: payload = {"cmd":"clear","ext":{"clt":tim}} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) else: data = "2" return HttpResponse(data) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "datt": print("下发上传时间间隔") topicid = request.POST.get('topicid') dattim = int(request.POST.get('dattim')) print(topicid) # tim = 8 id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: payload = {"cmd":"dattim","ext":{"dattim":dattim}} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "test": print("下发杀虫灯测试") topicid = request.POST.get('topicid') print(topicid) # tim = 8 id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: payload = {"cmd":"test"} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 杀虫灯账号下全部控制 class SCD_Mqtt_All(ListView): def get(self, request): pass def post(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) id_list = [] scdlist = SCDstatus.objects.filter(equip_id__equip_user=current_user) for i in scdlist: id_list.append(i.equip_id_id) # print("------------->>",id_list) sw = request.POST.get('sw') if sw == "timer": print("下发批量定时timer!!!") # topicid = request.POST.get('topicid') # print(topicid) # id_list = json.loads(topicid) ts = request.POST.get('ts') # print("----------------ts",ts) try: ds = int(request.POST.get('ds')) except Exception as e: print(e) ds = "" if ts == "0": # 光控 hours = int(request.POST.get('hours')) payload = {"cmd":"timer", "ext":{"tt":hours}} elif ts == "1": # 时控 begin = int(request.POST.get('begin')) end = int(request.POST.get('end')) payload = {"cmd":"timectr","ext": {"timctrl":1,"st":begin,"et":end}} print("下发时控",payload) if ds != "": # 控制设备开关 print("下发开关!!!") payload = {"cmd": "power", "ext": {"ds": ds}} for imei in id_list: topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "read": print("下发查询!!!") # topicid = request.POST.get('topicid') kind = request.POST.get('kind') # print(topicid) # id_list = json.loads(topicid) for imei in id_list: print (">>>>>",imei) payload = {"cmd": "read", "ext": kind} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "ctrl": print("下发升级或重启!!!") # topicid = request.POST.get('topicid') kind = request.POST.get('kind') # print(topicid) # id_list = json.loads(topicid) for imei in id_list: payload = {"cmd": kind} print(type(imei)) topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "clean": print("下发自清虫定时") # topicid = request.POST.get('topicid') tim = int(request.POST.get('time')) # print(topicid) # tim = 8 # id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: equip_list = SCDstatus.objects.filter(equip_id_id=imei).values() for i in equip_list: etype = eval(i['scd_status'])['dver'] if "ZQC" in etype: payload = {"cmd":"clear","ext":{"clt":tim}} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) else: data = "2" return HttpResponse(data) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "datt": print("下发上传时间间隔") # topicid = request.POST.get('topicid') dattim = int(request.POST.get('dattim')) # print(topicid) # tim = 8 # id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: payload = {"cmd":"dattim","ext":{"dattim":dattim}} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif sw == "test": print("下发杀虫灯测试") # topicid = request.POST.get('topicid') # print(topicid) # tim = 8 # id_list = json.loads(topicid) # imei = '862991419831505' for imei in id_list: print(imei) payload = {"cmd":"test"} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 诱捕器设备管理类视图: class Sex_Trap_View(ListView): def get(self, request): return render(request, 'equipmanage/sex_trap.html', context={}) def post(self, request): # 请求数据: print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) ename = request.POST.get('ename') print("ename:", ename) f_id = request.POST.get('f_id') print("f_id:", f_id) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") sta1 = YBQstatus.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = YBQstatus.objects.all() if f_id or ename: if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") # 000: if ename == "" and f_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user) # 010: elif ename == "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") # 000: if ename == "" and f_id == "": sta1 = YBQstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) # 010: elif ename == "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) else: print("---管理员") # 000: if ename == "" and f_id == "": sta1 = YBQstatus.objects.all() # 010: elif ename == "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = YBQstatus.objects.filter( equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = YBQstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) is_online = request.POST.get('is_online') print("is_online",is_online) etype = request.POST.get('etype') print("etype",etype) # ----------------------------------------------------------------------------------------- # 版本号筛选设备 if etype != "" and is_online == "": sta3 = [] for i in sta1: if i.sex_type == etype: sta3.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name, "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta3[(10*(page-1)):(page*10)],"nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 在线状态筛选设备 elif is_online != "" and etype == "": sta4 = [] for i in sta1: if is_online == i.is_online: sta4.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name, "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta4[(10*(page-1)):(page*10)],"nums": len(sta4)} print("-------------",len(sta4)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 版本号和在线状态同时筛选设备 elif is_online != "" and etype != "": sta3 = [] for i in sta1: if i.sex_type == etype and i.is_online == is_online: sta3.append({"sex_trap": i.ybq_status, "upl_time": i.upl_time,"pest_name":i.pest_name, "equip_name": i.equip_id.equip_name,"is_online": i.is_online, "off_time": i.off_time}) data = {"dat": sta3[(10*(page-1)):(page*10)],"nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- dat = [{"sex_trap": x.ybq_status, "upl_time": x.upl_time,"pest_name":x.pest_name, "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # 诱捕器详情页面: class Sex_Trap_Detail(ListView): def get(self,request): e_id = request.GET.get("id") user_name = request.user.username print('user_name=', user_name) current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" ybqtype = eval(YBQstatus.objects.get(equip_id_id=e_id).ybq_status)['proj'] if ybqtype == "SEX_TRAP_1": print("过滤") return render(request, 'equipmanage/sex_trap_detail1.html', context={"role":role}) elif ybqtype == "SEX_TRAP_2": print("过滤") return render(request, 'equipmanage/sex_trap_detail2.html', context={"role":role}) def post(self,request): e_id = request.POST.get("id") sta1 = YBQstatus.objects.get(equip_id_id=e_id) data = {"sex_trap": sta1.ybq_status, "upl_time": sta1.upl_time, "equip_name": sta1.equip_id.equip_name,"is_online": sta1.is_online, "off_time": sta1.off_time} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # 诱捕器mqtt通信接口: # 一型 class YBQ_Mqtt_V1(ListView): def get(self, request): pass def post(self, request): ext = request.POST.get('ext') imei = request.POST.get('e_id') # 刷新 if ext == "data": payload = {"cmd":"read","ext":"data"} # 查询服务器配置 elif ext == "serverconf": payload = {"cmd":"read","ext":"serverconf"} # 设置上传时间间隔 elif ext == "data_tim": dat_f = request.POST.get('dat_f') payload = {"cmd":"set","ext":{"type":"data_tim","dat_f":int(dat_f)}} # 清网 elif ext == "clearnet": payload = {"cmd":"ctrl","ext":"clearnet"} # 开启时控 elif ext == "work_tim1": st = request.POST.get('st') et = request.POST.get('et') payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":1,"st":int(st),"et":int(et)}} # 关闭时控 elif ext == "work_tim0": payload = {"cmd":"set","ext":{"type":"work_tim","timctrl":0,"st":20,"et":2}} # 关闭 elif ext == "ds0": payload = {"cmd":"ctrl","ext":{"type":"power","ds":0}} # 开启 elif ext == "ds1": payload = {"cmd":"ctrl","ext":{"type":"power","ds":1}} # 重启 elif ext == "reboot": payload = {"cmd":"reboot"} # 升级 elif ext == "update": payload = {"cmd":"update"} topic = "yfkj/xycb/s2c/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) class YBQ_Mqtt(ListView): def get(self, request): pass def post(self, request): print("------->>",ip) print("------->>",type(ip)) ext = request.POST.get('ext') imei = request.POST.get('e_id') # 刷新 if ext == "data": payload = {"cmd":"read","ext":"data"} # 查询mqtt网络配置 elif ext == "mqttconf": payload = {"cmd":"read","ext":"mqttconf"} # 拍照 elif ext == "takephoto": payload = {"cmd":"ctrl","ext":{"takephoto":"1"}} # 卷沾虫板: elif ext == "turn": payload = {"cmd":"ctrl","ext":{"turn":"1"}} # 测试性诱剂 elif ext == "move": payload = {"cmd":"ctrl","ext":{"move":"1"}} # 下发12V重新上电: elif ext == "repower": payload = {"cmd":"repower"} # 关闭: elif ext == "ds0": payload = {"cmd":"ctrl","ext":{"ds":"0"}} # 开启: elif ext == "ds1": payload = {"cmd":"ctrl","ext":{"ds":"1"}} # 重启 elif ext == "reboot": payload = {"cmd":"reboot"} # 升级 elif ext == "update": payload = {"cmd":"update"} # 下发设置循环工作模式-间隔时间: elif ext == "photoset": pic_t = request.POST.get('pic_t') pic_f = request.POST.get('pic_f') payload = {"cmd":"set","ext":{"type":"photo","pic_t":pic_t,"pic_f":pic_f}} # 设置定时卷沾虫板: elif ext == "turnset": turn_t = request.POST.get('turn_t') payload = {"cmd":"set","ext":{"type":"turn","turn_t":turn_t}} topic = "yfkj/xycb/s2c/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) class YBQ_Mqtt_Detail(ListView): def get(self, request): pass def post(self, request): imei = request.POST.get('e_id') sta1 = YBQstatus.objects.get(equip_id_id=imei).serverconf return HttpResponse(sta1) # 诱捕器历史数据 class YBQ_Data(ListView): def get(self, request): etype = request.GET.get("etype") if etype == "SEX_TRAP_1": print("过滤") return render(request, 'equipmanage/sex_trap_data1.html', context={}) else: print("过滤2") return render(request, 'equipmanage/sex_trap_data2.html', context={}) def post(self, request): e_id = request.POST.get("e_id") sta1 = YBQdata.objects.filter(equip_id_id=e_id) f_begin = request.POST.get('begin') f_end = request.POST.get('end') if f_begin: begindate = re.findall(r"\d+\.?\d*", f_begin) enddate = re.findall(r"\d+\.?\d*", f_end) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = YBQdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date)) nums = sta1.count() dat = [] # 获得当前页: page = int(request.POST.get('page')) print("page:", page) for i in sta1: dat.append({"sex_trap": i.ybq_data, "upl_time": i.upl_time}) data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) class YBQ_Pest_Set(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("e_id") pest = request.POST.get('pest') sta1 = YBQstatus.objects.filter(equip_id_id=e_id).update(pest_name=pest) return HttpResponse("0") # 诱捕器照片 class YBQ_Photo(ListView): def get(self, request): return render(request, 'equipmanage/sex_trap_photo2.html', context={}) def post(self, request): pass # 诱捕器照片 class YBQ_Photo_List(ListView): def get(self, request): print("-----image list view!-----") imei = request.GET.get('e_id') print("imei:", imei) user_name = request.user.username print('user_name=', user_name) current_user = MyUser.objects.get(username=user_name) f_begin = request.GET.get('begin') f_end = request.GET.get('end') if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" # 获得当前页: page = int(request.GET.get('page')) print("page:", page) # equip_name = Equip.objects.get(equip_id=imei).equip_name # 当前用户:返回用户,前端判断是否显示删除图片按钮 img = YBQphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)] # equip_name = Equip.objects.get(equip_id=imei).equip_name nums = YBQphoto.objects.filter(equip_id=imei).count() if f_begin: begindate = re.findall(r"\d+\.?\d*", f_begin) enddate = re.findall(r"\d+\.?\d*", f_end) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) img = YBQphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date)) nums = img.count() img = img[(8*(page-1)):(page*8)] return render(request, 'equipmanage/sex_trap_photo_list2.html', context={"img": img,'nums':nums,'role':role}) def post(self, request): pass # 删除图片接口: class Image_Delete(ListView): def get(self, request): pass def post(self, request): print("-----image delete!-----") imei = request.POST.get('imei') img_name = request.POST.get('addr') img_list = request.POST.get('addrlist') print("img_name:",img_name) if img_list: print("img_list:",type(eval(img_list))) print("img_list:",eval(img_list)) for i in eval(img_list): if os.path.exists(i) == True: # 删除图片文件 os.remove(i) # 删除数据库照片列表中,照片路径: try: CBDphoto.objects.filter(equip_id=imei, addr=i).delete() print("-----image delete ok!-----") except: print("-----image delete failed!-----") else: # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: CBDphoto.objects.filter(equip_id=imei, addr=i).delete() except Exception as e: print("========>>",e) print("-----image not exist!-----") data = "0" return HttpResponse(data) if os.path.exists(img_name) == True: # 删除图片文件 os.remove(img_name) # 删除数据库照片列表中,照片路径: try: CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete() print("-----image delete ok!-----") data = "1" return HttpResponse(data) except: print("-----image delete failed!-----") data = "0" return HttpResponse(data) else: # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: CBDphoto.objects.filter(equip_id=imei, addr=img_name).delete() except: pass print("-----image not exist!-----") data = "0" return HttpResponse(data) # 诱捕器温湿度 class YBQ_At_Ah(ListView): def get(self, request): pass def post(self, request): f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') print("f_tbegin:", f_tbegin) print("f_tend:", f_tend) equip_id = request.POST.get('e_id') print("equip_id:", equip_id) # 获取当前日期: now_time = datetime.datetime.now() print("当前日期为:",now_time) print("当前月为:",now_time.month) sta1 = YBQdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values() if f_tbegin: begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = YBQdata.objects.filter( equip_id=equip_id, upl_time__range=(start_date, end_date)).values() if YBQstatus.objects.get(equip_id_id=equip_id).sex_type == "2": sta2 = [{"at": eval(x['ybq_data'])['at'], "ah": eval(x['ybq_data'])['ah'], "cpu_tmp": eval(x['ybq_data'])['cpu_tmp'], "tim": x['upl_time']} for x in sta1] elif YBQstatus.objects.get(equip_id_id=equip_id).sex_type == "1": sta2 = [{"at": eval(x['ybq_data'])['at'], "ah": eval(x['ybq_data'])['ah'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) # print("data:", data) return HttpResponse(data) # 测报灯RTU设备管理类视图: class RTU_View(ListView): def get(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") role = "user" nums = RTUstatus.objects.filter( equip_id__equip_user=current_user).count() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") role = "user" nums = RTUstatus.objects.filter( equip_id__equip_agency=current_user.user_agency).count() else: role = "superuser" print("---管理员") nums = RTUstatus.objects.all().count() return render(request, 'equipmanage/rtu_status.html', context={"nums":nums,"role":role}) def post(self, request): # 请求数据: print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) ename = request.POST.get('ename') print("ename:", ename) f_id = request.POST.get('f_id') print("f_id:", f_id) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") sta1 = RTUstatus.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = RTUstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = RTUstatus.objects.all() if f_id or ename: if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") # 000: if ename == "" and f_id == "": sta1 = RTUstatus.objects.filter( equip_id__equip_user=current_user) # 010: elif ename == "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = RTUstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") # 000: if ename == "" and f_id == "": sta1 = RTUstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) # 010: elif ename == "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = RTUstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) else: print("---管理员") # 000: if ename == "" and f_id == "": sta1 = RTUstatus.objects.all() # 010: elif ename == "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = RTUstatus.objects.filter( equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = RTUstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) dat = [{"rtu_status": x.rtu_status, "upl_time": x.upl_time, "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]} data = json.dumps(data, cls=CJSONEncoder, indent=4) return HttpResponse(data) # 测报灯RTU历史数据 class RTU_Data(ListView): def get(self, request): equip_id = request.GET.get('id') print("请求数据,设备id:", equip_id) # 数据总条数: nums = RTUdata.objects.filter(equip_id=equip_id).count() print("nums:", nums) ename = Equip.objects.get(equip_id=equip_id).equip_name if ename == "": ename = "无" return render(request, 'equipmanage/rtu_data.html', context={"equip_id": equip_id, "nums": nums,"ename":ename}) def post(self, request): e_id = request.POST.get("id") sta1 = RTUdata.objects.filter(equip_id_id=e_id) f_begin = request.POST.get('begin') f_end = request.POST.get('end') if f_begin: begindate = re.findall(r"\d+\.?\d*", f_begin) enddate = re.findall(r"\d+\.?\d*", f_end) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = RTUdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date)) nums = sta1.count() dat = [] # 获得当前页: page = int(request.POST.get('page')) print("page:", page) for i in sta1: dat.append({"rtu_data": i.rtu_data, "upl_time": i.upl_time}) data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # RTU详情折线图: class RTU_Chart(ListView): def get(self, request): pass def post(self, request): f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') equip_id = request.POST.get('id') if f_tbegin: begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = RTUdata.objects.filter( equip_id=equip_id, upl_time__range=(start_date, end_date)).values() sta2 = [{"csq": eval(x['rtu_data'])['csq'], "cpu_tmp": eval(x['rtu_data'])['cpu_tmp'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) return HttpResponse(data) now_time = datetime.datetime.now() sta1 = RTUdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values() sta2 = [{"csq": eval(x['rtu_data'])['csq'], "cpu_tmp": eval(x['rtu_data'])['cpu_tmp'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) # print("data:", data) return HttpResponse(data) # RTU下发MQTT class RTU_Mqtt(ListView): def get(self, request): pass def post(self, request): ext = request.POST.get('ext') imei = request.POST.get('id') # 刷新 if ext == "data": payload = {"cmd":"read","ext":"data"} # 重启 elif ext == "reboot": payload = {"cmd":"reboot"} # 升级 elif ext == "update": payload = {"cmd":"update"} # 拍照 elif ext == "takephoto": payload = {"cmd":"ctrl","ext":{"takephoto":"1"}} topic = "yfkj/cbd_rtu/s2c/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 糖醋测报设备管理类视图: class Tccb_View(ListView): def get(self, request): return render(request, 'equipmanage/sugar_tccd.html', context={}) def post(self, request): # 请求数据: print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) ename = request.POST.get('ename') print("ename:", ename) f_id = request.POST.get('f_id') print("f_id:", f_id) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # __username print("---不是管理员") sta1 = TCCBstatus.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = TCCBstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) else: print("---管理员") sta1 = TCCBstatus.objects.all() if f_id or ename: if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") # 000: if ename == "" and f_id == "": sta1 = TCCBstatus.objects.filter( equip_id__equip_user=current_user) # 010: elif ename == "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = TCCBstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") # 000: if ename == "" and f_id == "": sta1 = TCCBstatus.objects.filter(equip_id__equip_agency=current_user.user_agency) # 010: elif ename == "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = TCCBstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) else: print("---管理员") # 000: if ename == "" and f_id == "": sta1 = TCCBstatus.objects.all() # 010: elif ename == "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_id__contains=f_id) # 100: elif ename != "" and f_id == "": sta1 = TCCBstatus.objects.filter( equip_id__equip_name__contains=ename) # 110: elif ename != "" and f_id != "": sta1 = TCCBstatus.objects.filter( equip_id__equip_name__contains=ename, equip_id__equip_id__contains=f_id) dat = [{"tccb_status": x.tccb_status, "upl_time": x.upl_time, "equip_name": x.equip_id.equip_name,"is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"nums":sta1.count(),"dat":dat[(10*(page-1)):(page*10)]} data = json.dumps(data, cls=CJSONEncoder, indent=4) return HttpResponse(data) # 糖醋测报详情页面: class Tccb_Detail(ListView): def get(self,request): e_id = request.GET.get("id") user_name = request.user.username print('user_name=', user_name) current_user = MyUser.objects.get(username=user_name) if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" return render(request, 'equipmanage/sugar_tccd_detail.html', context={"role":role}) def post(self,request): e_id = request.POST.get("id") sta1 = TCCBstatus.objects.get(equip_id_id=e_id) data = {"status": sta1.tccb_status, "upl_time": sta1.upl_time, "paramconf": sta1.paramconf, "equip_name": sta1.equip_id.equip_name,"is_online": sta1.is_online, "off_time": sta1.off_time} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # 糖醋测报历史数据 class Tccb_Data(ListView): def get(self, request): equip_id = request.GET.get('id') print("请求数据,设备id:", equip_id) # 数据总条数: nums = RTUdata.objects.filter(equip_id=equip_id).count() print("nums:", nums) ename = Equip.objects.get(equip_id=equip_id).equip_name if ename == "": ename = "无" return render(request, 'equipmanage/sugar_tccd_data.html', context={"equip_id": equip_id, "nums": nums,"ename":ename}) def post(self, request): e_id = request.POST.get("e_id") sta1 = TCCBdata.objects.filter(equip_id_id=e_id) f_begin = request.POST.get('begin') f_end = request.POST.get('end') if f_begin: begindate = re.findall(r"\d+\.?\d*", f_begin) enddate = re.findall(r"\d+\.?\d*", f_end) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = TCCBdata.objects.filter(equip_id_id=e_id, upl_time__range=(start_date, end_date)) nums = sta1.count() dat = [] # 获得当前页: page = int(request.POST.get('page')) print("page:", page) for i in sta1: dat.append({"tccb_data": i.tccb_data, "upl_time": i.upl_time}) data = {"dat":dat[(10*(page-1)):(page*10)],"nums":nums} data = json.dumps(data, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) # 糖醋测报下发MQTT class Tccb_Mqtt(ListView): def get(self, request): pass def post(self, request): ext = request.POST.get('ext') imei = request.POST.get('e_id') # 刷新 if ext == "status": payload = {"cmd": "read", "ext": {"type": "status"}} elif ext == "param": payload = {"cmd": "read", "ext": {"type": "paramconf"}} # 重启 elif ext == "reboot": payload = {"cmd":"reboot"} # 升级 elif ext == "update": payload = {"cmd":"update"} # 拍照 elif ext == "takephoto": payload = {"cmd":"ctrl","ext":{"type": "takephoto"}} # 下发设置 elif ext == "paramconf": st = request.POST.get('st') et = request.POST.get('et') collt = request.POST.get('collt') htim = request.POST.get('htim') datt = request.POST.get('datt') pump_sec = request.POST.get('pump_sec') shake_sec = request.POST.get('shake_sec') payload = {"cmd": "paramconf","ext": {"st": int(st),"et": int(et),"collt": int(collt),"htim": int(htim),"datt": int(datt),"pump_sec": int(pump_sec),"shake_sec": int(shake_sec),"boot": 0}} # 禁用设备 elif ext == "boot": payload = {"cmd": "paramconf","ext": {"st": 20,"et": 5,"collt": 10,"htim": 0,"datt": 20,"pump_sec": 20,"shake_sec": 20,"boot": 1}} topic = "/yfkj/tccbd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 糖醋测报详情折线图: class TCCB_Chart(ListView): def get(self, request): pass def post(self, request): f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') equip_id = request.POST.get('e_id') print("-------",equip_id) if f_tbegin: begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) sta1 = TCCBdata.objects.filter( equip_id=equip_id, upl_time__range=(start_date, end_date)).values() sta2 = [{"at": eval(x['tccb_data'])['at'], "ah": eval(x['tccb_data'])['ah'], "vbat": eval(x['tccb_data'])['vbat'], "csq": eval(x['tccb_data'])['csq'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) return HttpResponse(data) now_time = datetime.datetime.now() sta1 = TCCBdata.objects.filter(equip_id=equip_id,upl_time__month=now_time.month).values() sta2 = [{"at": eval(x['tccb_data'])['at'], "ah": eval(x['tccb_data'])['ah'], "vbat": eval(x['tccb_data'])['vbat'], "csq": eval(x['tccb_data'])['csq'], "tim": x['upl_time']} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder) # print("data:", data) return HttpResponse(data) # 糖醋测报照片 class TCCB_Photo(ListView): def get(self, request): return render(request, 'equipmanage/sugar_tccd_photo.html', context={}) def post(self, request): pass # 糖醋测报照片 class TCCB_Photo_List(ListView): def get(self, request): print("-----image list view!-----") imei = request.GET.get('id') print("imei:", imei) user_name = request.user.username print('user_name=', user_name) current_user = MyUser.objects.get(username=user_name) f_begin = request.GET.get('begin') f_end = request.GET.get('end') if current_user.is_superuser: role = "superuser" elif current_user.is_staff: role = "staff" elif current_user.is_agency: role = "agency" else: role = "user" # 获得当前页: page = int(request.GET.get('page')) print("page:", page) # equip_name = Equip.objects.get(equip_id=imei).equip_name # 当前用户:返回用户,前端判断是否显示删除图片按钮 img = TCCBphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)] # equip_name = Equip.objects.get(equip_id=imei).equip_name nums = TCCBphoto.objects.filter(equip_id=imei).count() if f_begin: begindate = re.findall(r"\d+\.?\d*", f_begin) enddate = re.findall(r"\d+\.?\d*", f_end) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) img = TCCBphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date)) nums = img.count() img = img[(8*(page-1)):(page*8)] return render(request, 'equipmanage/sugar_tccd_photo_list.html', context={"img": img,'nums':nums,'role':role}) def post(self, request): pass # 删除糖醋测报图片 class TCCBImage_Del(ListView): def get(self,request): pass def post(self,request): print("-----image delete!-----") imei = request.POST.get('imei') img_name = request.POST.get('addr') print("img_name:",img_name) if os.path.exists(img_name) == True: # 删除图片文件 os.remove(img_name) # 删除数据库照片列表中,照片路径: try: TCCBphoto.objects.filter(equip_id=imei, addr=img_name).delete() print("-----image delete ok!-----") data = "1" return HttpResponse(data) except: print("-----image delete failed!-----") data = "0" return HttpResponse(data) else: # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: TCCBphoto.objects.filter(equip_id=imei, addr=img_name).delete() except: pass print("-----image not exist!-----") data = "0" return HttpResponse(data) # import socket # import uuid class CBD_Dver(ListView): def get(self,request): pass def post(self,request): dver = request.POST.get('dver') num = request.POST.get('num') if dver: CBDupdate.objects.filter(num=num).update(dver=dver) return HttpResponse("0") _list = CBDupdate.objects.all() data = [] for i in _list: data.append({"num":i.num,"dver":i.dver}) data = json.dumps(data) return HttpResponse(data) # 测报灯管理视图: class CBDManage_View(ListView): def get(self, request): # x_forwarded_for = request.META.get('HTTP_X_FORWARDED_FOR') # if x_forwarded_for: # ip = x_forwarded_for.split(',')[0]#所以这里是真实的ip # print("------------real ip") # else: # ip = request.META.get('REMOTE_ADDR')#这里获得代理ip # print("------------unreal ip") # 获取主机名 # hostname = socket.gethostname() # #获取IP # ip = socket.gethostbyname(hostname) # print("获取的IP为:",ip) current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") role = "user" nums = CBDstatus.objects.filter( equip_id__equip_user=current_user).count() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") role = "user" nums = CBDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency).count() else: print("---管理员") role = "superuser" nums = CBDstatus.objects.all().count() cbdgroup = Group.objects.get(name='测报灯用户') # obj = Group.models.get(b_name='xxx') user_list = MyUser.objects.filter(groups=cbdgroup) # for i in user_list: # print("--------->>",i.username) User_Log.objects.create(log_user=current_user, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-测报灯') return render(request, 'equipmanage/equipmanage_cbd.html', context={"nums": nums,"role": role,"user_list":user_list}) def post(self, request): # if request.is_ajax(): # print("ajax-post!") req = request.POST.get('req') print("req:", req) # 请求数据: if req == "dat": print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") # sta1 = CBDstatus.objects.filter( # equip_id__equip_user=current_user, equip_id__equip_type=3)[(10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time") sta1 = CBDstatus.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)] elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") # sta1 = CBDstatus.objects.filter( # equip_id__equip_agency=current_user.user_agency, equip_id__equip_type=3)[(10*(page-1)):(page*10)] sta1 = CBDstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)] else: print("---管理员") # sta1 = CBDstatus.objects.filter(equip_id__equip_type=3)[( # 10*(page-1)):(page*10)] # .order_by("-equip_id__equip_add_time") sta1 = CBDstatus.objects.all()[(10*(page-1)):(page*10)] sta2 = [] for x in sta1: update = "1" print("-------->>",x.equip_id) dver = eval(x.cbd_status)['dver'] if dver.startswith("4") and dver.endswith("re"): print("re",dver) if dver != CBDupdate.objects.get(num="1").dver: update = "0" elif dver.startswith("4") and dver.endswith("ZP"): print("ZP",dver) if dver != CBDupdate.objects.get(num="2").dver: update = "0" elif dver.startswith("4") and dver.endswith("GK"): print("GK",dver) if dver != CBDupdate.objects.get(num="3").dver: update = "0" elif dver.startswith("5") and dver.endswith("HK") and "0" not in dver: print("5-HK",dver) dver = re.sub('\\(.*?\\)','',dver) if dver != CBDupdate.objects.get(num="4").dver: update = "0" elif dver.startswith("5") and dver.endswith("ZP"): print("5-ZP",dver) dver = re.sub('\\(.*?\\)','',dver) if dver != CBDupdate.objects.get(num="5").dver: update = "0" elif dver.startswith("5") and dver.endswith("HK") and "0" in dver: print("5.0-HK",dver) dver = re.sub('\\(.*?\\)','',dver) if dver != CBDupdate.objects.get(num="6").dver: update = "0" sta2.append({"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype, "paramconf": x.paramconf, "serverconf": x.serverconf,"update":update, "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc, "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid}) # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype, # "paramconf": x.paramconf, "serverconf": x.serverconf, # "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc, # "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) elif req == "filter": f_name = request.POST.get('ename') print("f_name:", f_name) f_id = request.POST.get('f_id') print("f_id:", f_id) page = int(request.POST.get('page')) print("page:", page) dver = request.POST.get('dver') print("dver",dver) is_online = request.POST.get('is_online') print("is_online",is_online) etype = request.POST.get('etype') print("etype",etype) uname = request.POST.get('uname') print("uname",uname) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") if f_name == "" and f_id == '': sta1 = CBDstatus.objects.filter( equip_id__equip_user=current_user) elif f_name == "" and f_id != '': sta1 = CBDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) elif f_name != "" and f_id == '': sta1 = CBDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name) elif f_name != "" and f_id != '': sta1 = CBDstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") if f_name == "" and f_id == '': sta1 = CBDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency) elif f_name == "" and f_id != '': sta1 = CBDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) elif f_name != "" and f_id == '': sta1 = CBDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name) elif f_name != "" and f_id != '': sta1 = CBDstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) else: print("---管理员") # if f_name == "" and f_id == '': # sta1 = CBDstatus.objects.all() # # 010 # elif f_name == "" and f_id != '': # sta1 = CBDstatus.objects.filter( # equip_id__equip_id__contains=f_id) # # 100 # elif f_name != "" and f_id == '': # sta1 = CBDstatus.objects.filter( # equip_id__equip_name__contains=f_name) # # 110 # elif f_name != "" and f_id != '': # sta1 = CBDstatus.objects.filter( # equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) # 000 if f_name == "" and f_id == '' and uname == '': sta1 = CBDstatus.objects.all() # 010 elif f_name == "" and f_id != '' and uname == '': sta1 = CBDstatus.objects.filter( equip_id__equip_id__contains=f_id) # 100 elif f_name != "" and f_id == '' and uname == '': sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name) # 110 elif f_name != "" and f_id != '' and uname == '': sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) # 011 elif f_name == "" and f_id != '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = CBDstatus.objects.filter( equip_id__equip_id__contains=f_id, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = CBDstatus.objects.filter( equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname)) # 101 elif f_name != "" and f_id == '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_user=MyUser.objects.get(username=uname)) # 001 elif f_name == "" and f_id == '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_user=MyUser.objects.get(username=uname)) # 111 elif f_name != "" and f_id != '' and uname != '': if MyUser.objects.get(username=uname).is_agency == True: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id,equip_id__equip_agency=MyUser.objects.get(username=uname).user_agency) else: sta1 = CBDstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id, equip_id__equip_user=MyUser.objects.get(username=uname)) # print("在线状态------------>",is_online) # ----------------------------------------------------------------------------------------- # 设备类型筛选设备 if etype != "": if etype == "全部" or etype == "" or etype == None: pass elif etype == "其他": sta1 = sta1.filter(etype=None) else: sta1 = sta1.filter(etype=etype) # ----------------------------------------------------------------------------------------- # 版本号筛选设备 if dver != "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"].split(".") if fir_v[0] == dver: sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid}) data = {"dat": sta3[(10*(page-1)):(page*10)], "nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 在线状态筛选设备 elif is_online != "" and dver == "": sta4 = [] for i in sta1: if is_online == i.is_online: sta4.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid}) data = {"dat": sta4[(10*(page-1)):(page*10)], "nums": len(sta4)} print("-------------",len(sta4)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- # 版本号和在线状态同时筛选设备 elif is_online != "" and dver != "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"].split(".") if fir_v[0] == dver and i.is_online == is_online: sta3.append({"cbd_status": i.cbd_status, "upl_time": i.upl_time,"etype":i.etype, "paramconf": i.paramconf, "serverconf": i.serverconf, "equip_name": i.equip_id.equip_name, "equip_desc": i.equip_id.equip_desc, "is_online": i.is_online, "off_time": i.off_time,"iccid":i.simid}) data = {"dat": sta3[(10*(page-1)):(page*10)], "nums": len(sta3)} print("-------------",len(sta3)) data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # ----------------------------------------------------------------------------------------- sta2 = [] for x in sta1: update = "1" dver = eval(x.cbd_status)['dver'] if dver.startswith("4") and dver.endswith("re"): print("re",dver) if dver != CBDupdate.objects.get(num="1").dver: update = "0" elif dver.startswith("4") and dver.endswith("ZP"): print("ZP",dver) if dver != CBDupdate.objects.get(num="2").dver: update = "0" elif dver.startswith("4") and dver.endswith("GK"): print("GK",dver) if dver != CBDupdate.objects.get(num="3").dver: update = "0" elif dver.startswith("5") and dver.endswith("HK") and "0" not in dver: print("5-HK",dver) if dver != CBDupdate.objects.get(num="4").dver: update = "0" elif dver.startswith("5") and dver.endswith("ZP"): print("5-ZP",dver) if dver != CBDupdate.objects.get(num="5").dver: update = "0" elif dver.startswith("5") and dver.endswith("HK") and "0" in dver: print("5.0-HK",dver) if dver != CBDupdate.objects.get(num="6").dver: update = "0" sta2.append({"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype, "paramconf": x.paramconf, "serverconf": x.serverconf,"update":update, "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc, "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid}) # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype, # "paramconf": x.paramconf, "serverconf": x.serverconf, # "equip_name": x.equip_id.equip_name, "equip_desc": x.equip_id.equip_desc, # "is_online": x.is_online, "off_time": x.off_time,"iccid":x.simid} for x in sta1] data = {"dat": sta2[(10*(page-1)):(page*10)], "nums": sta1.count()} data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) elif req == "paramconf": equip_id = request.POST.get('id') print("equip_id:", equip_id) # 读取当前设备的参数配置信息: sta1 = CBDstatus.objects.filter(equip_id=equip_id) for x in sta1: sta2 = {"paramconf": x.paramconf} data = json.dumps(sta2, cls=CJSONEncoder) print("配置信息的data:", data) return HttpResponse(data) elif req == "change": equip_id = request.POST.get('id') print("equip_id:", equip_id) equip_desc = request.POST.get('desc') equip_obj = Equip.objects.get(equip_id=equip_id) try: equip_obj.equip_desc = equip_desc equip_obj.save() data = "0" except: data = "1" return HttpResponse(data) # 测报灯列表页导出 class CBDManage_explore(ListView): def get(self,request): uname = request.GET.get('uname') dver = request.GET.get('dver') is_online = request.GET.get('is_online') # filename = request.GET.get('filename') print(dver) print(is_online) if uname: sta1 = CBDstatus.objects.filter(equip_id__equip_user=MyUser.objects.get(username=uname)) else: sta1 = CBDstatus.objects.all() # ----------------------------------------------------------------------------------------- # 版本号筛选设备 if dver == "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"] sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i.equip_id_id).equip_add_time}) # ----------------------------------------------------------------------------------------- # 版本号筛选设备 elif dver != "" and is_online == "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"] if fir_v.split(".")[0] == dver: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- # 在线状态筛选设备 elif is_online != "" and dver == "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"] if is_online == i.is_online: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- # 版本号和在线状态同时筛选设备 elif is_online != "" and dver != "": sta3 = [] for i in sta1: fir_v = eval(i.cbd_status)["dver"] if fir_v.split(".")[0] == dver and i.is_online == is_online: sta3.append({"equip_id":i.equip_id_id,"lng":i.lng,"lat":i.lat, "fir_v":fir_v, "is_online":i.is_online,"off_time":i.off_time,"creat_time":Equip.objects.get(equip_id=i["equip_id_id"]).equip_add_time}) # ----------------------------------------------------------------------------------------- data1 = [] for x in sta3: if x["lat"]: res = requests.post("http://api.map.baidu.com/geocoder?location=%s,%s&coord_type=gcj02&output=json"%(x["lat"],x["lng"])) try: print(eval(res.text)) print((eval(res.text))["result"]["addressComponent"]["province"]) # print((eval(res.text))["result"]["formatted_address"]) except: continue location = (eval(res.text))["result"]["addressComponent"]["province"] + (eval(res.text))["result"]["addressComponent"]["city"] + (eval(res.text))["result"]["addressComponent"]["district"] data1.append({"equip_id":x["equip_id"],"fir_v":x["fir_v"],"location":location,"is_online":x["is_online"],"off_time":x["off_time"],"creat_time":x["creat_time"]}) # print("=============>>",sta3) title = ["设备id","设备版本","设备位置","是否在线","离线时间","设备创建时间"] book = xlwt.Workbook() # 创建一个excel对象 sheet = book.add_sheet('Sheet1',cell_overwrite_ok=True) # 添加一个sheet页 for i in range(len(title)): # 遍历列 # sheet.write(0,i,title[i],style) # 将title数组中的字段写入到0行i列中 sheet.write(0,i,title[i]) # 将title数组中的字段写入到0行i列中 # print(sta2) for xx in range(len(data1)): # 遍历列表 if data1[xx]['is_online'] == "0": is_online = "离线" off_time = datetime.datetime.strftime(data1[xx]['off_time'],'%Y-%m-%d') else: is_online = "在线" off_time = "" creat_time = datetime.datetime.strftime(data1[xx]['creat_time'],'%Y-%m-%d') sheet.write(xx+1,0,data1[xx]['equip_id']) # 将equip_id写入到第x+1行,第0列中 sheet.write(xx+1,1,data1[xx]['fir_v']) sheet.write(xx+1,2,data1[xx]['location']) sheet.write(xx+1,3,is_online) sheet.write(xx+1,4,off_time) sheet.write(xx+1,5,creat_time) sheet.col(0).width = 256 * 18 sheet.col(1).width = 256 * 11 sheet.col(2).width = 256 * 24 sheet.col(3).width = 256 * 8 sheet.col(4).width = 256 * 11 sheet.col(5).width = 256 * 13 # 写出到IO output = BytesIO() book.save(output) # 重新定位到开始 output.seek(0) response = HttpResponse(content_type='application/vnd.ms-excel') response['Content-Disposition'] = 'attachment;filename=111.xls' response.write(output.getvalue()) return response def post(self,request): pass # 测报灯详情管理视图: class CBDManage_detail_View(ListView): def get(self, request): equip_id = request.GET.get('id') current_user = request.session.get('username') # print("type :current_user",type(current_user)) current_user = MyUser.objects.get(username=current_user) dver = request.GET.get("dver") is_hk = eval(CBDstatus.objects.get(equip_id=equip_id).cbd_status)["dver"] if "HK" in is_hk: is_hk = True else: is_hk = False print("是否为海康版本",is_hk) iccid = CBDstatus.objects.get(equip_id=equip_id).simid rtu_info = CBDstatus.objects.get(equip_id=equip_id).rtuinfo User_Log.objects.create(log_user=current_user, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-测报灯详情') return render(request, 'equipmanage/equipmanage_cbd_detail.html', context={"equip_id": equip_id, "dver": dver, "iccid":iccid, "is_hk":is_hk,"rtu_info":rtu_info}) def post(self, request): equip_id = request.POST.get('id') print("请求数据的设备id:", equip_id) # 最新状态:status sta1 = CBDstatus.objects.filter(equip_id__equip_id=equip_id) for x in sta1: sta2 = {"cbd_status": x.cbd_status, "upl_time": x.upl_time,"etype":x.etype, "paramconf": x.paramconf, "serverconf": x.serverconf, "equip_name": x.equip_id.equip_name,"old_eid":x.old_eid, "is_online": x.is_online, "off_time": x.off_time,"rtu_info":x.rtuinfo} # 最新数据:data sta3 = CBDdata.objects.filter(equip_id__equip_id=equip_id).order_by('-upl_time')[:1] for x in sta3: sta4 = {"equip_name": x.equip_id.equip_name, "cbd_data": x.cbd_data, "upl_time": x.upl_time} data = [] data.append(sta2) data.append(sta4) data = json.dumps(data, cls=CJSONEncoder, indent=4) print("data:",data) return HttpResponse(data) # 测报灯修改imei class CBD_Old_Imei(ListView): def get(self, request): pass def post(self, request): equip_id = request.POST.get('e_id') old_eid = CBDstatus.objects.get(equip_id=equip_id).old_eid data = {"old_eid":old_eid} data = json.dumps(data) return HttpResponse(data) # 测报灯状态历史 class CBDStatus_all(ListView): def get(self, request): e_id = request.GET.get('id') nums = CBDstatus_all.objects.filter(equip_id=e_id).count() def post(self, request): e_id = request.POST.get('id') page = int(request.POST.get('page')) sta1 = CBDstatus_all.objects.filter(equip_id=e_id) sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time, "paramconf": x.paramconf, "serverconf": x.serverconf, "is_online": x.is_online, "off_time": x.off_time} for x in sta1] data = {"dat": sta2[(10*(page-1)):(page*10)], "nums": sta1.count()} data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) # 测报灯信号强度变化 class CBD_csq(ListView): def get(self, request): pass def post(self, request): e_id = request.POST.get('id') data = [] status_list = CBDstatus_all.objects.filter(equip_id=e_id) for i in status_list: status = eval(i.cbd_status) print(status['csq']) data.append({"upl_time":i.upl_time,"csq":status['csq']}) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 测报灯mqtt通信接口: class CBD_Mqtt(ListView): def get(self, request): pass def post(self, request): print("mqtt-post!") req = request.POST.get('req') print("req:", req) if req == "set": equip_id = request.POST.get('id') # 设备id ts = int(request.POST.get('timing')) # 定时模式 # imgUpNum = request.POST.get('imgUpNum')# 图片上传时间模式 # imgres = int(request.POST.get('imgHvga')) # 图片分辨率 tt = int(request.POST.get('timingLength')) # 定时时长 st = int(request.POST.get('begin')) # 开始时间 et = int(request.POST.get('end')) # 结束时间 collt = int(request.POST.get('dropTime')) # 落虫时间 htim = int(request.POST.get('calefactionTime')) # 加热时间 hst = int(request.POST.get('calefactionTemperature')) # 加热温度 tph = int(request.POST.get('highLimit')) # 加热仓温度上限 tpl = int(request.POST.get('lowLimit')) # 加热仓温度下限加热仓温度下限 datt = int(request.POST.get('dataUpTime')) # 数据上传时间间隔 shake_sec = request.POST.get('shake_sec') # 数据上传时间间隔 print("设备id:equip_id:", equip_id) print("定时模式ts:", ts) # print("imgUpNum:",imgUpNum) # print("图片分辨率imgres:", imgres) print("定时时长tt:", tt) print("开始时间st:", st) print("结束时间et:", et) print("落虫时间collt:", collt) print("加热时间htim:", htim) print("加热温度hst:", hst) print("加热仓温度上限tph:", tph) print("加热仓温度下限tpl:", tpl) print("数据上传时间间隔datt:", datt) topic = "/yfkj/cbd/sub/"+equip_id # [1:-1] print("topic:", topic) print("--------->>",shake_sec) if shake_sec != None: payload = {"cmd": "paramconf", "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt,"shake_sec":int(shake_sec), "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}} elif shake_sec == None: payload = {"cmd": "paramconf", "ext": {"ts": ts, "tt": tt, "st": st, "et": et, "collt": collt, "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": 0}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif req == "read": print("下发查询!") topicid = request.POST.get('topicid') # [1:-1] # 读取参数: kind = request.POST.get('kind') payload = {"cmd": "read", "ext": {"type": kind}} print(type(topicid)) topic = "/yfkj/cbd/sub/"+topicid cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif req == "ctrl": print("下发控制!") topicid = request.POST.get('topicid') # [1:-1] topic = "/yfkj/cbd/sub/"+topicid # 读取参数: cmd = request.POST.get('cmd') if cmd == "update" or cmd == "reboot": payload = {"cmd":cmd} elif cmd == "ctrl": ctrl_type = request.POST.get('type') if ctrl_type == "takephoto" or ctrl_type == "turn": payload = {"cmd": cmd, "ext": {"type": ctrl_type}} elif ctrl_type == "up" or ctrl_type == "down": data = request.POST.get('data') payload = {"cmd": cmd, "ext": {"type": ctrl_type,"data":data}} elif cmd == "screen1": payload = {"cmd":"switch","ext":{"boot":1}} elif cmd == "screen0": payload = {"cmd":"switch","ext":{"boot":0}} elif cmd == "workmode": work_type = request.POST.get('type') if work_type == "0": payload = {"cmd":"workmode","ext":{"asleep":1,"common":0,"power":0}} elif work_type == "1": payload = {"cmd":"workmode","ext":{"asleep":0,"common":1,"power":0}} elif work_type == "2": payload = {"cmd":"workmode","ext":{"asleep":0,"common":0,"power":1}} elif cmd == "shake": ws = request.POST.get('ws') payload = {"cmd":"shake","ext":{"ws":int(ws)}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif req == "ip": print("下发修改IP") topicid = request.POST.get('topicid') # [1:-1] topic = "/yfkj/cbd/sub/"+topicid # 获取输入的要修改的IP地址 modifi_url = request.POST.get('url') photo_url = request.POST.get('photo_url') modifi_port = request.POST.get('port') print("modifi_url:",modifi_url) print("photo_url:",photo_url) print("modifi_port:",modifi_port) # 修改设备的IP payload_1 = {"cmd":"serverconf", "ext":{ "ip":modifi_url, "port":modifi_port, "sub":"/yfkj/cbd/sub/", "pub":"/yfkj/cbd/pub/", "lastwill":"/yfkj/cbd/offline/", "uid":"", "pwd":"", "qos":0, "keepalive":60 } } # 修改设备上传图片的IP payload_2 = {"cmd":"hostconf", "ext":{ "username":"", "url":photo_url, "password":"", "length":0 } } cmd_1 = {"topic": topic, "payload": json.dumps(payload_1), 'qos': 1} cmd_2 = {"topic": topic, "payload": json.dumps(payload_2), 'qos': 1} if ip == "172.16.220.3": res_1 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) res_2 = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd_2, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res_1 = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd_1, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) res_2 = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd_2, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) if res_1.status_code == 200 and res_2.status_code == 200: print("修改成功") data = "0" return HttpResponse(data) else: print("修改失败") data = "1" return HttpResponse(data) elif req == "setimei": print("修改设备号!") e_id = request.POST.get('e_id') # [1:-1] # 读取参数: newimei = request.POST.get('newimei') payload = {"cmd":"setimei","ext":{"imei":newimei}} topic = "/yfkj/cbd/sub/"+e_id cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 设备手动绑定sim卡 class Equip_Simiccid(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("e_id") iccid = request.POST.get("iccid") equip_obj = Equip.objects.get(equip_id=e_id) if equip_obj.equip_type_id == 3: cbd_obj = CBDstatus.objects.get(equip_id=e_id) cbd_obj.simid = iccid cbd_obj.save() elif equip_obj.equip_type_id == 7: cbd_obj = BZYstatus.objects.get(equip_id=e_id) cbd_obj.simid = iccid cbd_obj.save() return HttpResponse("0") # 测报灯管理视图: class CbdBatchOperate(ListView): def get(self, request): nums = CBDstatus.objects.all().count() cbdgroup = Group.objects.get(name='测报灯用户') user_list = MyUser.objects.filter(groups=cbdgroup) # for i in user_list: # print("--------->>",i.username) return render(request, 'equipmanage/cbdBatchOperate.html', context={"nums": nums,"user_list":user_list}) # 测报灯批量操作 class CBD_Mqtt_All(ListView): def get(self, request): pass def post(self, request): print("mqtt-post!") cmd = request.POST.get('cmd') eidlist = request.POST.get('eidlist') eidlist = json.loads(eidlist) # print("设备列表",eval(eidlist)) if cmd == "read": print("批量查询!") for i in eidlist: # 读取参数: topic = "/yfkj/cbd/sub/"+ i payload = {"cmd": "read", "ext": {"type": "status"}} dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print("-------------------->>",dat) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif cmd == "update": print("批量升级!") for i in eidlist: # 读取参数: topic = "/yfkj/cbd/sub/"+ i payload = {"cmd":"update"} dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif cmd == "reboot": print("批量重启!") for i in eidlist: # 读取参数: topic = "/yfkj/cbd/sub/"+ i payload = {"cmd":"reboot"} dat = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(dat, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # from socket_client import client # 气象设备管理视图: def equipmanage_qx(request): # User_Log.objects.create(log_user=request.user.username, # log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-气象设备') # equip_id = request.POST.get('equip_id') # print('equip_id:', equip_id) # data = {'client_id': '1001', 'cmd': 'test', 'ds': 1} # if equip_id == '1001': # sendmsg = json.dumps(data) # client.send(sendmsg.encode("utf-8")) # client.close() return render(request, 'equipmanage/equipmanage_qx.html', context={}) # 农药残留管理视图: def equipmanage_nycl(request): User_Log.objects.create(log_user=request.user.username, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-农药残留') return render(request, 'equipmanage/equipmanage_nycl.html', context={}) # 远程升级: from django.http.response import StreamingHttpResponse class Update(ListView): def get(self, request): print("请求远程升级!") imei = request.GET.get('imei') print("imei:", imei) version = request.GET.get('version') print("version:", version) device_key = request.GET.get('device_key') print("device_key:", device_key) firmware_name = request.GET.get('firmware_name') print("firmware_name:", firmware_name) # 转仓测报灯: if "CBD_TURN" in firmware_name: # bin_file = 'D:/update/cbd_bin/cbd_Air202_roll_update.bin' bin_file = 'update/cbd_bin/cbd_turn.bin' # 翻板测报灯: elif "CBD_ROLLOVER_TASK" in firmware_name: bin_file = 'update/cbd_bin/cbd_rollover.bin' # 翻板 ykm-rtu测报灯: elif "CBD_RTU" in firmware_name: bin_file = 'update/cbd_bin/cbd_rtu.bin' # 翻板 yf-rtu测报灯: elif "ACCBD_YFRTU" in firmware_name: bin_file = 'update/cbd_bin/cbd_yfrtu.bin' # 翻板平移-垂直拍照测报灯: elif "CBD_MV" in firmware_name: bin_file = 'update/cbd_bin/cbd_mv.bin' # 震动平铺 yf-rtu测报灯: elif "DCCBD_YFRTU" in firmware_name: bin_file = 'update/cbd_bin/dccbd_yfrtu.bin' # 直流转盘物联网测报灯 elif "DCCBD_ZP" in firmware_name: bin_file = 'update/cbd_bin/dccbd_zp.bin' # 物联网杀虫灯v41: elif "SCD_TASK" in firmware_name: bin_file = 'update/scd_bin/scd_Air800_update.bin' # 物联网杀虫灯v42: elif "SCD_MODULE" in firmware_name: bin_file = 'update/scd_bin/scd_module_update.bin' # 杀虫灯2.0 elif "SCD_IOT" in firmware_name: bin_file = 'update/scd_bin/scd_iot.bin' # 自清虫杀虫灯 elif "SCD_MODULE_ZQC" in firmware_name: bin_file = 'update/scd_bin/scd_module_zqc_update.bin' # 直流物联网测报灯+海康摄像头:双限位 elif "DCCBD_HK" in firmware_name: bin_file = 'update/cbd_bin/dccbd_hk.bin' # 直流物联网测报灯+海康摄像头:推杆电机 elif "DCCBD-TG_HK" in firmware_name: bin_file = 'update/cbd_bin/dccbd-tg_hk.bin' # 依科曼测报灯二代RTU--配DC-CBD elif "CBD_YKM_RTU" in firmware_name: bin_file = 'update/cbd_bin/cbd_ykm_rtu.bin' # 高空测报灯V1.0 elif "DC_CBD_GK" in firmware_name: bin_file = 'update/cbd_bin/dc_cbd_gk.bin' # 海康测报灯 elif "DC_CBD_HK" in firmware_name: bin_file = 'update/cbd_bin/cbd_yf_hk.bin' # 测报灯4.0 elif "DCCBD-2_HK" in firmware_name: bin_file = 'update/cbd_bin/dccbd-2_hk.bin' # 测报灯4.0转盘 elif "CBDV4-ZP" in firmware_name: bin_file = 'update/cbd_bin/dccbdv4_zp.bin' # 测报灯1.0高空无转盘 elif "DCCBD_GK" in firmware_name: bin_file = 'update/cbd_bin/dccbd_gk.bin' # 糖醋测报 elif "TC_CBD_HK" in firmware_name: bin_file = 'update/cbd_bin/tc_cbd_hk.bin' # 简易高空 elif "CBDV4-gk" in firmware_name: bin_file = 'update/cbd_bin/cbd_gk_sapmle.bin' # 海康4G测报灯 elif "CBD_STM32_HKV1" in firmware_name: bin_file = 'update/cbd_bin/cbd_stm32_hk.rbl' # ---------性诱设备-------------- elif "SEX_TRAP_1" in firmware_name: bin_file = 'update/xy_1_bin/SEX_TRAP_1_Update.bin' # ---------孢子仪-------------- # 孢子仪2.0 elif "BZY-V20" in firmware_name: bin_file = 'update/bzy_bin/bzy-v20.bin' elif "BZY-V21" in firmware_name: bin_file = 'update/bzy_bin/bzy-v21.bin' # ---------气象站-------------- elif "qxz_1.0.0" in firmware_name: bin_file = 'update/qxz_bin/qxz.rbl' # return HttpResponse("www.yfznscd.com/update/qxz_bin/qxz.rbl") reponse = HttpResponse("www.yfznscd.com/update/qxz_bin/qxz.rbl", content_type='text/plain') # reponse['content_Length'] = size # reponse['Transfer-Encoding'] = 'chunked' return reponse # size = os.path.getsize(bin_file) # print("size:", size) # with open(bin_file, 'rb') as f: # reponse = HttpResponse( # f.read(), content_type='text/plain') # reponse['content_Length'] = size # # reponse['Transfer-Encoding'] = 'chunked' # return reponse size = os.path.getsize(bin_file) print("size:", size) with open(bin_file, 'rb') as f: reponse = HttpResponse( f.read(), content_type='application/octet-stream') reponse['content_Length'] = size return reponse # 气象站设备管理类视图: class QXZManage_View(ListView): def get(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser == True: role = "superuser" else: role = "user" return render(request, 'equipmanage/equipmanage_qxz.html', context={"role":role}) # 监控设备列表接口 class JK_Page(ListView): def get(self,request): current_user = request.user.username print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) page = request.GET.get('page') page = int(page) f_id = request.GET.get('f_id') print("f_id:", f_id) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: # 用户 if f_id != "": equip_list = JKdata.objects.filter(equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) else: equip_list = JKdata.objects.filter(equip_id__equip_user=current_user) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: # 代理商 if f_id != "": equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) else: equip_list = JKdata.objects.filter(equip_id__equip_agency=current_user.user_agency) else: # 管理员 if f_id != "": equip_list = JKdata.objects.filter(equip_id__equip_id__contains=f_id) else: equip_list = JKdata.objects.all() e_ids = [] # url = "https://open.ys7.com/api/lapp/device/list" # live_data = {"accessToken":"at.a2b2puqk6ydg7ejkcuxokemw9dnixut5-23032uf0io-1almbb9-nfdzsfdnr"} # live_res = requests.post(url,data=live_data) # live_res = eval(live_res.text) # print("live_res2:",live_res) # _list = [] for x in equip_list: # _list.append(x.equip_id) # for i in live_res["data"]: # if i["deviceSerial"] == x.equip_id: n_d = {"equip_name":x.equip_id.equip_name, "equip_id":x.equip_id_id,"photo_num":JKphoto.objects.filter(equip_id=x.equip_id_id).count(),"status":x.is_online, "jktype":x.jk_type} e_ids.append(n_d) # print("==================>>",_list) nums = len(e_ids) # print(nums) ids = e_ids[(10*(page-1)):(page*10)] data = {'ids': ids, 'nums': nums} print(data) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) def post(self,request): pass # 监控设备管理类视图1: class JKManage_View1(ListView): def get(self, request): return render(request, 'equipmanage/equipmanage_ctrl_jk.html', context={}) # 监控设备管理类视图: class JKManage_View(ListView): def get(self, request): return render(request, 'equipmanage/equipmanage_jk.html', context={}) # 硬盘录像机接口 class NVR_View(ListView): def get(self, request): return render(request, 'equipmanage/equipmanage_nvr.html', context={}) def post(self,request): e_id = request.POST.get("e_id") jk_token = JKdata.objects.get(equip_id=e_id).jk_token data = {"jk_token":jk_token} data = json.dumps(data) return HttpResponse(data) # 获取监控播放地址视图: class JK_View(ListView): def get(self, request): imei = request.GET.get('imei') x = JKdata.objects.get(equip_id_id=imei) i = JKtoken.objects.get(account="ysy_haikang") live_list = [] # 用token和设备id获取直播地址 live_url = 'https://open.ys7.com/api/lapp/live/address/get' live_data = {"accessToken":i.token, "source":"%s:1"%x.equip_id} print("=================live_data:",live_data) live_res = requests.post(live_url,data=live_data) # print("-------------------------------:",type(live_res.text)) live_res = eval(live_res.text) print("live_res:",live_res) # 如果返回200 则返回直播地址 if live_res['code'] == "200": print("token获取成功") live_list.append(live_res) # 如果返回其他 则调用获取token之后重新获取直播地址并返回 else: print("token过期重新获取") token_url = 'https://open.ys7.com/api/lapp/token/get' token_data = {"appKey":"e8ec0d52b4b14628a3daf4b88cbcca2a", "appSecret":"d4565abea1cd0b90b59917111dcb37bd"} token_res = requests.post(token_url,data=token_data,timeout=3) print("token_res1:",token_res.text) token_res = eval(token_res.text) if token_res["code"] == "200": # JKdata.objects.all().update(jk_token=token_res["data"]["accessToken"],upl_time=time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) i.jk_token = token_res["data"]["accessToken"] i.upl_time = time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())) i.save() token = i.token print("-----------------token保存成功") live_url = 'https://open.ys7.com/api/lapp/live/address/get' live_data = {"accessToken":i.token, "source":"%s:1"%x.equip_id} live_res = requests.post(live_url,data=live_data) live_res = eval(live_res.text) print("live_res2:",live_res) live_list.append(live_res) data = live_list print("-----------============data:",data) data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) def post(self, request): jk_id = request.POST.get('id') # control = request.POST.get('control') # takephoto = request.POST.get('takephoto') ctrl = request.POST.get('ctrl') imei = request.POST.get('imei') accessToken = JKtoken.objects.get(account="ysy_haikang").token print("accessToken:",accessToken) if imei: if Equip.objects.filter(equip_id=imei).exists(): return HttpResponse("0") else: # 得到设备类型实例: equip_t = Equip_type.objects.get(type_id=6) try: e_id = Equip.objects.create(equip_id=imei, equip_type=equip_t) print("<-----监控设备添加成功!----->") return HttpResponse("1") except: print("<-----监控设备添加失败!----->") if ctrl == "takephoto": url = 'https://open.ys7.com/api/lapp/device/capture' channelNo = '1' # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx' data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo} res = requests.post(url,data=data) # res = json.loads(res.text) print("截图返回结果为:",json.loads(res.text)) return HttpResponse(res.text) # pic_dir = "/home/web/yfwlw/jk_photo/" + jk_id + "/" + "takephoto.jpg" # print("pic_dir:",pic_dir) # if os.path.exists(pic_dir) == False: # os.makedirs(pic_dir) # img_src = res["data"]["picUrl"] # response = requests.get(img_src) # image = Image.open(BytesIO(response.content)) # print("pic_dir:",pic_dir) # image.save(pic_dir) # data = {"image_url":"jk_photo/"+ jk_id + "/" + "takephoto.jpg"} # data = json.dumps(data, cls=CJSONEncoder) # return HttpResponse(data) # 操作命令:0-上,1-下,2-左,3-右,4-左上,5-左下,6-右上,7-右下,8-放大,9-缩小,10-近焦距,11-远焦距 if ctrl == "move": print("-------球机云台控制开始!") dire = request.POST.get('movenum') ctrl_url = 'https://open.ys7.com/api/lapp/device/ptz/start' # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx' channelNo = '1' speed = '1' data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo, 'speed':speed, 'direction':dire} res1 = requests.post(ctrl_url,data=data) elif ctrl == "stop": print("-------球机云台控制结束!") ctrl_url = 'https://open.ys7.com/api/lapp/device/ptz/stop' # accessToken = 'at.bvf3fnx87pzvs674ao0g27mg2f2lmvy1-8he8ughpi6-0oqqehv-hcby1sqgx' channelNo = '1' data = {'accessToken':accessToken, 'deviceSerial':jk_id, 'channelNo':channelNo} res2 = requests.post(ctrl_url,data=data) # print('res1:',res1) # print('-----------') # print('res2:',res2) # data = {'res1':res1, 'res2':res2} # data = json.dumps(data, cls=CJSONEncoder) return HttpResponse("1") # 监控定时拍照图片 class Jk_Image(ListView): def get(self,request): imei = request.GET.get('imei') return render(request, 'equipmanage/jk_image.html', context={"imei":imei}) def post(self,request): imei = request.POST.get('imei') page = int(request.POST.get("page")) current_user = request.user.username current_user = MyUser.objects.get(username=current_user) nums = JKphoto.objects.filter(equip_id=imei).count() jkphoto = JKphoto.objects.filter(equip_id=imei)[(8*(page-1)):(page*8)] f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') # 查询时间段 if f_tbegin: begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) nums = JKphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date)).count() jkphoto = JKphoto.objects.filter(equip_id=imei, upl_time__range=(start_date, end_date))[(8*(page-1)):(page*8)] return render(request, 'equipmanage/jk_imageList.html', context={"jkphoto":jkphoto,"nums":nums,"current_user":current_user}) # 删除监控定时拍照图片 class JkImage_Del(ListView): def get(self,request): pass def post(self,request): print("-----image delete!-----") imei = request.POST.get('imei') img_name = request.POST.get('addr') print("img_name:",img_name) if os.path.exists(img_name) == True: # 删除图片文件 os.remove(img_name) # 删除数据库照片列表中,照片路径: try: JKphoto.objects.filter(equip_id=imei, addr=img_name).delete() print("-----image delete ok!-----") data = "1" return HttpResponse(data) except: print("-----image delete failed!-----") data = "0" return HttpResponse(data) else: # 照片在数据库里不存在,但是数据库有路径的情况会删除不掉 # 因此不管何时都删除数据库路径 try: JKphoto.objects.filter(equip_id=imei, addr=img_name).delete() except: pass print("-----image not exist!-----") data = "0" return HttpResponse(data) # 孢子仪设备管理类视图: class BZYManage_View(ListView): def get(self, request): current_user = request.session.get('username') current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") nums = BZYstatus.objects.filter( equip_id__equip_user=current_user).count() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") nums = BZYstatus.objects.filter( equip_id__equip_agency=current_user.user_agency).count() else: print("---管理员") nums = BZYstatus.objects.all().count() User_Log.objects.create(log_user=current_user, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-孢子仪') return render(request, 'equipmanage/equipmanage_bzy.html', context={"nums": nums}) def post(self, request): if request.is_ajax(): print("ajax-post!") req = request.POST.get('req') print("req:", req) # 请求数据: if req == "dat": print("---请求数据的post!") page = int(request.POST.get('page')) print("page:", page) current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") sta1 = BZYstatus.objects.filter(equip_id__equip_user=current_user)[(10*(page-1)):(page*10)] elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") sta1 = BZYstatus.objects.filter(equip_id__equip_agency=current_user.user_agency)[(10*(page-1)):(page*10)] else: print("---管理员") sta1 = BZYstatus.objects.all()[(10*(page-1)):(page*10)] # sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time, # "paramconf": x.paramconf, "serverconf": x.serverconf, # "equip_name": x.equip_id.equip_name, # "is_online": x.is_online, "off_time": x.off_time} for x in sta1] sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time, "is_online":x.is_online, "equip_name": x.equip_id.equip_name, "off_time":x.off_time} for x in sta1] data = json.dumps(sta2, cls=CJSONEncoder, indent=4) # print("data:",data) return HttpResponse(data) elif req == "filter": f_name = request.POST.get('ename') print("f_name:", f_name) f_id = request.POST.get('f_id') print("f_id:", f_id) page = int(request.POST.get('page')) print("page:", page) # 读取当前用户: current_user = request.session.get('username') print("current_user:", current_user) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---不是管理员") if f_name == "" and f_id == '': sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user) elif f_name == "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_id__contains=f_id) elif f_name != "" and f_id == '': sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name) elif f_name != "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_user=current_user, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency == True: print("---代理商") if f_name == "" and f_id == '': sta1 = BZYstatus.objects.filter( equip_id__equip_agency=current_user.user_agency) elif f_name == "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_id__contains=f_id) elif f_name != "" and f_id == '': sta1 = BZYstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name) elif f_name != "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_agency=current_user.user_agency, equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) else: print("---管理员") if f_name == "" and f_id == '': sta1 = BZYstatus.objects.all() elif f_name == "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_id__contains=f_id) elif f_name != "" and f_id == '': sta1 = BZYstatus.objects.filter( equip_id__equip_name__contains=f_name) elif f_name != "" and f_id != '': sta1 = BZYstatus.objects.filter( equip_id__equip_name__contains=f_name, equip_id__equip_id__contains=f_id) # sta2 = [{"cbd_status": x.cbd_status, "upl_time": x.upl_time, # "paramconf": x.paramconf, "serverconf": x.serverconf, # "equip_name": x.equip_id.equip_name, # "is_online": x.is_online, "off_time": x.off_time} for x in sta1] sta2 = [{"bzy_status": x.bzy_status, "upl_time": x.upl_time, "is_online": x.is_online, "off_time": x.off_time, "equip_name": x.equip_id.equip_name} for x in sta1] data = {"dat": sta2[(10*(page-1)):(page*10)], "nums": sta1.count()} data = json.dumps(data, cls=CJSONEncoder) # print("data:",data) return HttpResponse(data) elif req == "netconf": equip_id = request.POST.get('id') print("equip_id:", equip_id) # 读取当前设备的参数配置信息: sta1 = BZYstatus.objects.filter(equip_id=equip_id) for x in sta1: sta2 = {"netconf": x.netconf} data = json.dumps(sta2, cls=CJSONEncoder) print("配置信息的data:", data) return HttpResponse(data) # 孢子仪设备管理详情类视图: class BZYManage_detail_View(ListView): def get(self, request): equip_id = request.GET.get('id') current_user = request.session.get('username') # print("type :current_user",type(current_user)) current_user = MyUser.objects.get(username=current_user) if current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---用户") nums = BZYdata.objects.filter( equip_id__equip_user=current_user).count() elif current_user.is_superuser != True and current_user.is_staff != True and current_user.is_agency != True: print("---代理商") nums = BZYdata.objects.filter( equip_id__equip_agency=current_user.user_agency).count() else: print("---管理员") nums = BZYdata.objects.all().count() iccid = BZYstatus.objects.get(equip_id=equip_id).simid User_Log.objects.create(log_user=current_user, log_ip=request.META['REMOTE_ADDR'], log_desc='设备管理-孢子仪详情') return render(request, 'equipmanage/equipmanage_bzy_detail.html', context={"equip_id": equip_id, "iccid":iccid}) def post(self, request): equip_id = request.POST.get('id') print("请求数据的设备id:", equip_id) # 最新数据: status sta = BZYstatus.objects.filter(equip_id__equip_id=equip_id) for x in sta: new_sta = {"bzy_status": x.bzy_status, "upl_time": x.upl_time, "equip_name": x.equip_id.equip_name, "glass": x.glass, "liquid":x.liquid, "is_online": x.is_online, "off_time": x.off_time} data = json.dumps(new_sta, cls=CJSONEncoder, indent=4) print("data:",data) return HttpResponse(data) # 孢子仪通信接口: class BZY_Mqtt(ListView): def get(self, request): pass def post(self, request): print("mqtt-post!") req = request.POST.get('req') print("req:", req) if req == "set": equip_id = request.POST.get('id') # 设备id # cold_sw = int(request.POST.get('cold')) # 制冷机开关 wind_sw = int(request.POST.get('wind')) # 风机开关 coll_time = request.POST.get('colltime') # 采集孢子时间段 drop_time = int(request.POST.get('drop')) # 采集孢子时间段 set_temp = int(request.POST.get('stemp')) # 保温仓设定温度 imgres = request.POST.get('imgres') # 图片分辨率 datt = int(request.POST.get('takt')) # 数据上传时间间隔 try: cul_time = int(request.POST.get('culTime')) # 设置培养时间 except: cul_time = 12 print("设备ID:", equip_id) # print("制冷机开关:", cold_sw) print("风机开关:", wind_sw) print("采集孢子时间段:", coll_time) # print("采集孢子时间段:", type(coll_time)) print("保温仓设定温度:", set_temp) print("图片分辨率:", imgres) print("培养时间:", cul_time) print("上传时间间隔:",datt) # coll_time = coll_time.replace("\"", "") coll_time = eval(coll_time) topic = "/yfkj/bzy/s2c/"+equip_id # [1:-1] print("topic:", topic) payload = {"cmd": "paramconf","ext": {"wind_sw": wind_sw,"coll_time": coll_time,"set_temp": set_temp,"imgres": imgres,"drop_time": drop_time,"datt": datt,"cul_time":cul_time}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif req == "read": print("下发查询!") topicid = request.POST.get('topicid') # [1:-1] # 读取参数: print(type(topicid)) payload = {"cmd": "read","type": "status"} topic = "/yfkj/bzy/s2c/"+topicid cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) elif req == "ip": print("下发修改IP") topicid = request.POST.get('topicid') # [1:-1] topic = "/yfkj/bzy/s2c/"+topicid # 获取输入的要修改的IP地址 modifi_url = request.POST.get('url') modifi_port = request.POST.get('port') uid = request.POST.get('uid') pwd = request.POST.get('pwd') print("modifi_url:",modifi_url) print("modifi_port:",modifi_port) # 修改设备的IP payload = {"cmd":"netset", "mqtt":{ "ip": modifi_url, "port":int(modifi_port), "sub":"/yfkj/bzy/s2c/", "pub":"/yfkj/bzy/c2s/", "lastwill":"/yfkj/bzy/offline/", "uid":uid, "pwd":pwd, "qos":0, "keepalive":60 }, "ftp":{ "ip": "120.27.222.26", "port":1883, "uid":"", "pwd":"", } } cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) if res.status_code == 200: print("修改成功") data = "0" return HttpResponse(data) else: print("修改失败") data = "1" return HttpResponse(data) elif req == "ctrl": print("下发控制!") topicid = request.POST.get('topicid') # [1:-1] print("=========",topicid) topic = "/yfkj/bzy/s2c/"+topicid # 读取参数: cmd = request.POST.get('cmd') print("=============================",cmd) if cmd == "update" or cmd == "reboot" or cmd == "poweroff" or cmd == "poweron" or cmd == "coldoff" or cmd == "coldon": payload = {"cmd":cmd} elif cmd == "ctrl": ctrl_type = request.POST.get('type') print("========================",ctrl_type) if ctrl_type == "takephoto": payload = {"cmd": cmd, "ext": {"type": ctrl_type}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 此项修改载玻片和培养液更换时间,只存数据库 不做下发处理!!! elif req == "glass": equip_id = request.POST.get('id') # 设备id # 获取载玻片更换时间 glass = request.POST.get('glass') print("载玻片更换时间:", glass) sta = BZYstatus.objects.get(equip_id__equip_id=equip_id) if glass != "": # temporary临时变量 temporary = sta.glass # 判断载玻片更换时间 if temporary: sta.glass = temporary + "#" + glass else: sta.glass = "#" + glass # 只保存最近五次的更换时间 if len(sta.glass)>55: sta.glass = sta.glass[11:] sta.save() print("载玻片更换时间保存成功") data = "0" return HttpResponse(data) elif req == "liquid": equip_id = request.POST.get('id') # 设备id # 获取培养液更换时间 liquid = request.POST.get('liquid') print("培养液更换时间:", liquid) sta = BZYstatus.objects.get(equip_id__equip_id=equip_id) if liquid != "": # temporary临时变量 temporary_1 = sta.liquid # 判断培养液更换时间 if temporary_1: sta.liquid = temporary_1 + "#" + liquid else: sta.liquid = "#" + liquid # 只保存最近五次的更换时间 if len(sta.liquid)>55: sta.liquid = sta.liquid[11:] sta.save() print("培养液更换时间保存成功") data = "0" return HttpResponse(data) # 查询sim卡信息 elif req == "sim": iccid = request.POST.get('iccid') resp = get_siminfo(iccid) print("查询流量信息为:",resp) return HttpResponse(resp) # 测报灯设备开放API接口 class CBD_Mqtt_Set(ListView): def get(self, request): pass def post(self, request): print("mqtt-post-api!") uid = request.POST.get('uid') imei = request.POST.get('imei') if equip_validation(uid,imei) == "0": # 判断输入参数是否合法 try: ts = int('1') # 锁定时控 imgres = int(request.POST.get('imgres')) # 图片分辨率 st = int(request.POST.get('st')) # 开始时间 et = int(request.POST.get('et')) # 结束时间 collt = int(request.POST.get('collt')) # 落虫时间 htim = int(request.POST.get('htim')) # 加热时间 hst = int(request.POST.get('hst')) # 加热温度 tph = int(request.POST.get('tph')) # 加热仓温度上限 tpl = int(request.POST.get('tpl')) # 加热仓温度下限加热仓温度下限 datt = int(request.POST.get('datt')) # 数据上传时间间隔 print("定时模式ts:", ts) # print("imgUpNum:",imgUpNum) print("图片分辨率imgres:", imgres) print("开始时间st:", st) print("结束时间et:", et) print("落虫时间collt:", collt) print("加热时间htim:", htim) print("加热温度hst:", hst) print("加热仓温度上限tph:", tph) print("加热仓温度下限tpl:", tpl) print("数据上传时间间隔datt:", datt) # 参数范围判断 if imgres not in range(0,3) or st not in range(0,25) or et not in range(0,25) or collt not in range(5,21) or htim not in range(5,21) \ or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61): data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) topic = "/yfkj/cbd/sub/"+imei # [1:-1] print("topic:", topic) payload = {"cmd": "paramconf", "ext": {"ts": ts, "st": st, "et": et, "collt": collt, "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}} cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) print("res.status_code:", res.status_code) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[2] data = json.dumps(data) print(data) return HttpResponse(data) # 测报灯 数据/状态/参数 查询接口 class CBD_Mqtt_Read(ListView): def get(self, request): pass def post(self, request): print("下发查询!") uid = request.POST.get('uid') imei = request.POST.get('imei') kind = request.POST.get('kind') print("uid",uid) print("imei",imei) print("kind",kind) if equip_validation(uid,imei) == "0": print("验证成功") # 读取参数: if kind == "status" or kind == "data" or kind == "paramconf": payload = {"cmd": "read", "ext": {"type": kind}} print(type(imei)) topic = "/yfkj/cbd/sub/"+imei cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[2] data = json.dumps(data) return HttpResponse(data) # elif req == "ctrl": # print("下发控制!") # topicid = request.POST.get('topicid') # [1:-1] # topic = "/yfkj/cbd/sub/"+topicid # # 读取参数: # cmd = request.POST.get('cmd') # if cmd == "update" or cmd == "reboot": # payload = {"cmd":cmd} # elif cmd == "ctrl": # ctrl_type = request.POST.get('type') # if ctrl_type == "takephoto" or ctrl_type == "turn": # payload = {"cmd": cmd, "ext": {"type": ctrl_type}} # elif ctrl_type == "up" or ctrl_type == "down": # data = request.POST.get('data') # payload = {"cmd": cmd, "ext": {"type": ctrl_type,"data":data}} # cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} # print(json.dumps(payload, indent=1)) # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) # if res.status_code == 200: # data = "0" # return HttpResponse(data) # else: # data = "1" # return HttpResponse(data) # ------------------------------------------------------------------------------ # 杀虫灯下发控制API: class SCD_Mqtt_Set(ListView): def get(self, request): pass def post(self, request): uid = request.POST.get('uid') imei = request.POST.get('imei') # 用户验证 if equip_validation(uid,imei) == "0": topic = "/yfkj/scd/sub/"+imei try: ts = int(request.POST.get('ts')) except Exception as e: print(e) ts = "" # ts = timeSwitch 0光控 1时控 startBar 开始时间 stopBar 结束时间 # print("=========>>",ts) if ts == 0: # 光控 try: hours = int(request.POST.get('hours')) except: data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) if 0 <= hours < 24: payload = {"cmd": "timer", "ext": {"tt": hours}} cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: # print("==========") data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) elif ts == 1: # 时控 try: begin = int(request.POST.get('begin')) end = int(request.POST.get('end')) except: data = api_code[1] data = json.dumps(data) return HttpResponse(data) if 0 <= begin <= 24 and 0 <= end <= 24: payload = {"cmd": "timeconf","ext": {"timeSwitch": ts,"startBar": begin,"stopBar": end}} cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: # print("==========") data = api_code[3] data = json.dumps(data) return HttpResponse(data) else: # print("==========") data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[2] data = json.dumps(data) return HttpResponse(data) class SCD_Mqtt_Switch(ListView): def get(self, request): pass def post(self, request): uid = request.POST.get('uid') imei = request.POST.get('imei') # 用户验证 if equip_validation(uid,imei) == "0": try: ds = int(request.POST.get('ds')) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) return HttpResponse(data) if ds == 0 or ds == 1: # 控制设备开关 print("下发开关!!!") payload = {"cmd": "power", "ext": {"ds": ds}} else: data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) print("res.status_code:", res.status_code) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[2] data = json.dumps(data) return HttpResponse(data) class SCD_Mqtt_Read(ListView): def get(self, request): pass def post(self, request): uid = request.POST.get('uid') imei = request.POST.get('imei') # 用户验证 if equip_validation(uid,imei) == "0": print("下发查询!!!") kind = request.POST.get('kind') if kind == "status" or kind == "data" or kind == "paramconf": print (">>>>>",imei) payload = {"cmd": "read", "ext": kind} topic = "/yfkj/scd/sub/"+imei #[1:-1] cmd = {"topic": topic, "payload": json.dumps( payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = {"code":"200","type":"success"} data = json.dumps(data) print(data) return HttpResponse(data) else: data = {"code":"49999","type":"接口异常"} data = json.dumps(data) print(data) return HttpResponse(data) else: data = {"code":"10001","type":"参数为空或格式不正确"} data = json.dumps(data) return HttpResponse(data) else: data = {"code":"10002","type":"用户名或设备号错误"} data = json.dumps(data) return HttpResponse(data) # ------------------------------------------------------------------------------ # elif sw == "ctrl": # print("下发升级或重启!!!") # topicid = request.POST.get('topicid') # kind = request.POST.get('kind') # print(topicid) # id_list = json.loads(topicid) # for imei in id_list: # payload = {"cmd": kind} # print(type(imei)) # topic = "/yfkj/scd/sub/"+imei #[1:-1] # cmd = {"topic": topic, "payload": json.dumps( # payload), 'qos': 1} # print(json.dumps(payload, indent=1)) # res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", # data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) # print("res.status_code:", type(res.status_code)) # if res.status_code == 200: # data = "0" # return HttpResponse(data) # else: # data = "1" # return HttpResponse(data) # 气象站短信预警 class QXZ_Alarm_View(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') try: alarm = QXZ_Alarm.objects.get(equip_id=imei).conf except: alarm = "" x = QXZ_Conf.objects.get(equip_id=imei) 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 = {"alarm":alarm,"conf":conf} data = json.dumps(data) return HttpResponse(data) # 气象站短信预警保存 class QXZ_Alarm_Recv(ListView): def get(self,request): pass def post(self,request): alarm = request.POST.get('alarm') print(alarm) print(eval(alarm)["equip_id"]) e_id = eval(alarm)["equip_id"] tel = eval(alarm)["tel"] equip_obj = Equip.objects.get(equip_id=e_id) if QXZ_Alarm.objects.filter(equip_id=e_id).exists(): alarm_obj = QXZ_Alarm.objects.get(equip_id=equip_obj) alarm_obj.conf = alarm alarm_obj.tel = tel alarm_obj.save() print("修改成功") else: QXZ_Alarm.objects.create(equip_id=equip_obj,conf=alarm,tel=tel) return HttpResponse("0") # 气象站基础信息 class QXZ_Base_View(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') try: base_obj = QXZ_Base_Info.objects.get(equip_id=imei) data = {"volt":base_obj.volt,"rssi":base_obj.rssi,"iccid":base_obj.iccid,"lng":base_obj.lng,"lat":base_obj.lat,"dver":base_obj.dver} except: data = "null" data = json.dumps(data) return HttpResponse(data) # 气象站开关名字 class QXZ_Switch_Name(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') way = request.POST.get('way') sw_name = request.POST.get('sw_name') try: switch_obj = QXZswitchdata.objects.get(equip_id=imei) except: return HttpResponse("1") sw_name_list = eval(switch_obj.qxz_switch_data) # print(type(eval(sw_name_list))) for i in sw_name_list: if i["JK"] == int(way): i["name"] = sw_name print(sw_name_list) try: switch_obj.qxz_switch_data = sw_name_list switch_obj.save() except: return HttpResponse("1") data = "0" return HttpResponse(data) # 气象站通信接口 class QXZ_Mqtt(ListView): def get(self,request): pass def post(self,request): req = request.POST.get('req') imei = request.POST.get('imei') topic = "/yfkj/qxz/sub/"+imei if req == "read": payload = {"ext":{"type":"status"},"cmd":"read"} elif req == "set": way = int(request.POST.get('way')) switch = int(request.POST.get('switch')) payload = {"cmd":"control","ext":{"JK":way,"status":switch}} elif req == "conf": payload = {"ext":{"type":"jkStatus"},"cmd":"read"} elif req == "ip": url = request.POST.get('url') port = request.POST.get('port') payload= {"cmd":"ip","ext":{"ip":url,"port":port,"topic_p":"/yfkj/qxz/pub/","topic_s":"/yfkj/qxz/sub/"}} elif req == "update": payload = {"cmd":"update"} print(payload) cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) # 气象站历史状态接口 class QXZ_Record_View(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') page = int(request.POST.get('page')) recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei) dat = [] for i in recordlist: dat.append({"volt":i.volt,"rssi":i.rssi,"upl_time":i.upl_time}) nums = len(dat) dat = dat[(10*(page-1)):(page*10)] data = {"dat":dat,"nums":nums} data = json.dumps(data, cls=CJSONEncoder) return HttpResponse(data) # 气象站历史状态全部接口 class QXZ_Record_All(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei)[0:5000] # if QXZ_Info_Record.objects.filter(equip_id_id=imei).exists(): # print("数据存在") # one_month = datetime.timedelta(days=30) # now_time = QXZ_Info_Record.objects.filter(equip_id_id=imei)[0].upl_time # one_month_later = now_time - one_month # recordlist = QXZ_Info_Record.objects.filter(equip_id_id=imei,upl_time__range=(one_month_later, now_time)) dat = [] # a = 0 for i in recordlist: # a += 1 dat.append({"volt":i.volt,"rssi":i.rssi,"upl_time":i.upl_time}) # print(a) data = json.dumps(dat, cls=CJSONEncoder) return HttpResponse(data) # 气象站通信接口 class QXZ_Delete(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') try: Equip.objects.get(equip_id=imei).delete() data = "0" except: data = "1" return HttpResponse(data) # 气象站阈值接口 class QXZ_Auto(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') try: auto_list = QXZAutoswitch.objects.get(equip_id_id=imei) qxz_list = QXZstatus.objects.get(equip_id_id=imei) data = {"qxz_list":eval(qxz_list.qxz_status)['data'],"auto_list":auto_list.qxz_auto} except: data = {"qxz_list":[],"auto_list":[]} data = json.dumps(data) return HttpResponse(data) # 气象站定时接口 class QXZ_Timing(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('imei') try: timing_list = QXZTimingswitch.objects.get(equip_id_id=imei) qxz_list = QXZstatus.objects.get(equip_id_id=imei) data = {"qxz_list":eval(qxz_list.qxz_status)['data'],"timing_list":timing_list.qxz_timing} except: data = {"qxz_list":[],"timing_list":[]} data = json.dumps(data) return HttpResponse(data) # 气象站定时下发接口 class QXZ_Timing_Mqtt(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('equip_id') starttime = request.POST.get('StartTime') jk = request.POST.get('JK') duration = request.POST.get('Duration') try: payload = { "cmd":"timing","ext":{"JK":int(jk),"StartTime":int(starttime),"Duration":int(duration)}} except: return HttpResponse("1") topic = "/yfkj/qxz/sub/"+imei cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) return HttpResponse("0") # 气象站阈值设置接口 class QXZ_Value_Mqtt(ListView): def get(self,request): pass def post(self,request): req = request.POST.get('req') jk = request.POST.get('JK') ekey = request.POST.get('eKey') upper = request.POST.get('upper') lower = request.POST.get('lower') method = request.POST.get('method') imei = request.POST.get('equip_id') topic = "/yfkj/qxz/sub/"+imei try: payload = {"cmd":"auto","ext":{"JK":int(jk),"eKey":int(ekey),"upper":int(upper),"lower":int(lower),"method":int(method)}} except: return HttpResponse("1") cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) return HttpResponse("0") # 气象站LED点阵屏下发 class QXZ_Led(ListView): def get(self,request): pass def post(self,request): imei = request.POST.get('equip_id') cont = request.POST.get('cont') tim = request.POST.get('tim') topic = "/yfkj/qxz/sub/"+imei try: payload = {"cmd": "dotled","ext": {"content":cont,"timeout":int(tim)}} except: return HttpResponse("1") cmd = {"topic":topic,"payload":json.dumps(payload),'qos':0} if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: base_obj = QXZ_Base_Info.objects.get(equip_id=imei) base_obj.ledinfo = cont base_obj.save() data = "0" return HttpResponse(data) else: data = "1" return HttpResponse(data) return HttpResponse("0") # 气象站状态 class QXZ_Status(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("e_id") qxz_list = QXZstatus_New.objects.filter(equip_id=e_id) conf_list = QXZ_Conf.objects.filter(equip_id=e_id) data = [] try: qxz_list = QXZstatus_New.objects.get(equip_id=e_id) 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} base = {"upl_time":qxz_list.upl_time.strftime('%Y-%m-%d %H:%M:%S'), "qxz_picture": "%s"%(qxz_list.qxz_picture)} except: dat = {} base = {} try: x = QXZ_Conf.objects.get(equip_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: switch_obj = QXZswitchstatus.objects.get(equip_id=e_id) qxz_switch = switch_obj.qxz_switch except: qxz_switch = "" try: switch_name_obj = QXZswitchdata.objects.get(equip_id=e_id) switch_name = switch_name_obj.qxz_switch_data except: switch_name = "" try: timing_list = QXZTimingswitch.objects.get(equip_id=e_id).qxz_timing except: timing_list = "" try: auto_list = QXZAutoswitch.objects.get(equip_id_id=e_id).qxz_auto except: auto_list = "" try: led = QXZ_Base_Info.objects.get(equip_id_id=e_id).led except: led = "0" try: ledinfo = QXZ_Base_Info.objects.get(equip_id_id=e_id).ledinfo except: ledinfo = "" data = {'dat':dat,'conf':conf,'base':base, 'qxz_switch':qxz_switch, 'switch_name':switch_name, 'timing_list':timing_list, 'auto_list':auto_list,"led":led,"ledinfo":ledinfo} data = json.dumps(data) return HttpResponse(data) # 气象站数据 class QXZ_Data(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("e_id") page = int(request.POST.get('page')) qxz_list = QXZdata_New.objects.filter(equip_id=e_id) data = [] 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.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) try: x = QXZ_Conf.objects.get(equip_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 = {} nums = qxz_list.count() data = data[(10*(page-1)):(page*10)] data1 = {"data":data,"nums":nums,"conf":conf} data1 = json.dumps(data1) return HttpResponse(data1) # 气象站数据 class QXZ_Data_Chart(ListView): def get(self,request): pass def post(self,request): e_id = request.POST.get("e_id") # page = int(request.POST.get('page')) # qxz_list = QXZdata_New.objects.filter(equip_id=e_id) data = [] f_tbegin = request.POST.get('begin') f_tend = request.POST.get('end') print("f_tbegin:", f_tbegin) print("f_tend:", f_tend) if f_tbegin: begindate = re.findall(r"\d+\.?\d*", f_tbegin) enddate = re.findall(r"\d+\.?\d*", f_tend) start_date = datetime.date(int(begindate[0]), int(begindate[1]), int(begindate[2])) end_date = datetime.date(int(enddate[0]), int(enddate[1]), int(enddate[2])) print("start_date:", start_date) print("end_date:", end_date) qxz_list = QXZdata_New.objects.filter( equip_id=e_id, upl_time__range=(start_date, end_date)) 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.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) try: x = QXZ_Conf.objects.get(equip_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 = {} data1 = {"data":data,"conf":conf} data1 = json.dumps(data1) return HttpResponse(data1) # 获取当前日期: now_time = datetime.datetime.now() print("当前日期为:",now_time) print("当前月为:",now_time.month) qxz_list = QXZdata_New.objects.filter(equip_id=e_id, upl_time__month=now_time.month) 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.upl_time.strftime('%Y-%m-%d %H:%M:%S')}) try: x = QXZ_Conf.objects.get(equip_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 = {} # nums = qxz_list.count() # data = data[(10*(page-1)):(page*10)] data1 = {"data":data,"conf":conf} data1 = json.dumps(data1) return HttpResponse(data1) # 气象站标题自定义 class QXZ_Title_Conf(ListView): def get(self,request): e_id = request.GET.get("e_id") x = QXZ_Conf.objects.get(equip_id=e_id) i = QXZ_Default_Conf.objects.get(equip_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} 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} data = {"default":default,"conf":conf} data = json.dumps(data) return HttpResponse(data) def post(self,request): e_id = request.POST.get("e_id") ekey = request.POST.get("ekey") conf = request.POST.get("conf") conf_obj = QXZ_Conf.objects.get(equip_id=e_id) if ekey == "e1": conf_obj.e1 = conf conf_obj.save() data = "0" elif ekey == "e2": conf_obj.e2 = conf conf_obj.save() data = "0" elif ekey == "e3": conf_obj.e3 = conf conf_obj.save() data = "0" elif ekey == "e4": conf_obj.e4 = conf conf_obj.save() data = "0" elif ekey == "e5": conf_obj.e5 = conf conf_obj.save() data = "0" elif ekey == "e6": conf_obj.e6 = conf conf_obj.save() data = "0" elif ekey == "e7": conf_obj.e7 = conf conf_obj.save() data = "0" elif ekey == "e8": conf_obj.e8 = conf conf_obj.save() data = "0" elif ekey == "e9": conf_obj.e9 = conf conf_obj.save() data = "0" elif ekey == "e10": conf_obj.e10 = conf conf_obj.save() data = "0" elif ekey == "e11": conf_obj.e11 = conf conf_obj.save() data = "0" elif ekey == "e12": conf_obj.e12 = conf conf_obj.save() data = "0" elif ekey == "e13": conf_obj.e13 = conf conf_obj.save() data = "0" elif ekey == "e14": conf_obj.e14 = conf conf_obj.save() data = "0" elif ekey == "e15": conf_obj.e15 = conf conf_obj.save() data = "0" elif ekey == "e16": conf_obj.e16 = conf conf_obj.save() data = "0" elif ekey == "e17": conf_obj.e17 = conf conf_obj.save() data = "0" elif ekey == "e18": conf_obj.e18 = conf conf_obj.save() data = "0" elif ekey == "e19": conf_obj.e19 = conf conf_obj.save() data = "0" elif ekey == "e20": conf_obj.e20 = conf conf_obj.save() data = "0" elif ekey == "e21": conf_obj.e21 = conf conf_obj.save() data = "0" elif ekey == "e22": conf_obj.e22 = conf conf_obj.save() data = "0" elif ekey == "e23": conf_obj.e23 = conf conf_obj.save() data = "0" elif ekey == "e24": conf_obj.e24 = conf conf_obj.save() data = "0" elif ekey == "e25": conf_obj.e25 = conf conf_obj.save() data = "0" elif ekey == "e26": conf_obj.e26 = conf conf_obj.save() data = "0" elif ekey == "e27": conf_obj.e27 = conf conf_obj.save() data = "0" elif ekey == "e28": conf_obj.e28 = conf conf_obj.save() data = "0" elif ekey == "e29": conf_obj.e29 = conf conf_obj.save() data = "0" elif ekey == "e30": conf_obj.e30 = conf conf_obj.save() data = "0" else: data = "1" return HttpResponse(data) # 气象站24H数据 class QXZ_Day_Data(ListView): def get(self,request): pass def post(self,request): qxz_dict_1 = copy.deepcopy(qxz_dict) # 如果不拷贝 后面折线图修改字典会导致字典内容变化 从而造成数据错误 start_date = datetime.datetime.now() - datetime.timedelta(days=2) end_date = datetime.datetime.now() print("start_date:", start_date) print("end_date:", end_date) e_id = request.POST.get('e_id') # print("=================>>",e_id) sta1 = QXZdata_New.objects.filter(equip_id=e_id, upl_time__range=(start_date, end_date)).values() 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: if i['e1'] != "": e1.append(float(i['e1'].split('#')[0])) e1_time.append(i['upl_time']) if i['e2'] != "": e2.append(float(i['e2'].split('#')[0])) e2_time.append(i['upl_time']) if i['e3'] != "": e3.append(float(i['e3'].split('#')[0])) e3_time.append(i['upl_time']) if i['e4'] != "": e4.append(float(i['e4'].split('#')[0])) e4_time.append(i['upl_time']) if i['e5'] != "": e5.append(float(i['e5'].split('#')[0])) e5_time.append(i['upl_time']) if i['e6'] != "": e6.append(float(i['e6'].split('#')[0])) e6_time.append(i['upl_time']) if i['e7'] != "": e7.append(float(i['e7'].split('#')[0])) e7_time.append(i['upl_time']) if i['e8'] != "": e8.append(float(i['e8'].split('#')[0])) e8_time.append(i['upl_time']) if i['e9'] != "": e9.append(float(i['e9'].split('#')[0])) e9_time.append(i['upl_time']) if i['e10'] != "": e10.append(float(i['e10'].split('#')[0])) e10_time.append(i['upl_time']) if i['e11'] != "": e11.append(float(i['e11'].split('#')[0])) e11_time.append(i['upl_time']) if i['e12'] != "": e12.append(float(i['e12'].split('#')[0])) e12_time.append(i['upl_time']) if i['e13'] != "": e13.append(float(i['e13'].split('#')[0])) e13_time.append(i['upl_time']) if i['e14'] != "": e14.append(float(i['e14'].split('#')[0])) e14_time.append(i['upl_time']) if i['e15'] != "": e15.append(float(i['e15'].split('#')[0])) e15_time.append(i['upl_time']) if i['e16'] != "": e16.append(float(i['e16'].split('#')[0])) e16_time.append(i['upl_time']) if i['e17'] != "": e17.append(float(i['e17'].split('#')[0])) e17_time.append(i['upl_time']) if i['e18'] != "": e18.append(float(i['e18'].split('#')[0])) e18_time.append(i['upl_time']) if i['e19'] != "": e19.append(float(i['e19'].split('#')[0])) e19_time.append(i['upl_time']) if i['e20'] != "": e20.append(float(i['e20'].split('#')[0])) e20_time.append(i['upl_time']) if i['e21'] != "": e21.append(float(i['e21'].split('#')[0])) e21_time.append(i['upl_time']) if i['e22'] != "": e22.append(float(i['e22'].split('#')[0])) e22_time.append(i['upl_time']) if i['e23'] != "": e23.append(float(i['e23'].split('#')[0])) e23_time.append(i['upl_time']) if i['e24'] != "": e24.append(float(i['e24'].split('#')[0])) e24_time.append(i['upl_time']) if i['e25'] != "": e25.append(float(i['e25'].split('#')[0])) e25_time.append(i['upl_time']) if i['e26'] != "": e26.append(float(i['e26'].split('#')[0])) e26_time.append(i['upl_time']) if i['e27'] != "": e27.append(float(i['e27'].split('#')[0])) e27_time.append(i['upl_time']) if i['e28'] != "": e28.append(float(i['e28'].split('#')[0])) e28_time.append(i['upl_time']) if i['e29'] != "": e29.append(float(i['e29'].split('#')[0])) e29_time.append(i['upl_time']) if i['e30'] != "": e30.append(float(i['e30'].split('#')[0])) e30_time.append(i['upl_time']) # print("---------->",sta1) data = [] try: if e1 != []: data.append({"max":max(e1),"maxtime":e1_time[e1.index(max(e1))],"min":min(e1),"mintime":e1_time[e1.index(min(e1))],"enum":qxz_dict_1[i['e1'].split('#')[1]],"ekey":i['e1'].split('#')[2]}) if e2 != []: data.append({"max":max(e2),"maxtime":e2_time[e2.index(max(e2))],"min":min(e2),"mintime":e2_time[e2.index(min(e2))],"enum":qxz_dict_1[i['e2'].split('#')[1]],"ekey":i['e2'].split('#')[2]}) if e3 != []: data.append({"max":max(e3),"maxtime":e3_time[e3.index(max(e3))],"min":min(e3),"mintime":e3_time[e3.index(min(e3))],"enum":qxz_dict_1[i['e3'].split('#')[1]],"ekey":i['e3'].split('#')[2]}) if e4 != []: data.append({"max":max(e4),"maxtime":e4_time[e4.index(max(e4))],"min":min(e4),"mintime":e4_time[e4.index(min(e4))],"enum":qxz_dict_1[i['e4'].split('#')[1]],"ekey":i['e4'].split('#')[2]}) if e5 != []: data.append({"max":max(e5),"maxtime":e5_time[e5.index(max(e5))],"min":min(e5),"mintime":e5_time[e5.index(min(e5))],"enum":qxz_dict_1[i['e5'].split('#')[1]],"ekey":i['e5'].split('#')[2]}) if e6 != []: data.append({"max":max(e6),"maxtime":e6_time[e6.index(max(e6))],"min":min(e6),"mintime":e6_time[e6.index(min(e6))],"enum":qxz_dict_1[i['e6'].split('#')[1]],"ekey":i['e6'].split('#')[2]}) if e7 != []: data.append({"max":max(e7),"maxtime":e7_time[e7.index(max(e7))],"min":min(e7),"mintime":e7_time[e7.index(min(e7))],"enum":qxz_dict_1[i['e7'].split('#')[1]],"ekey":i['e7'].split('#')[2]}) if e8 != []: data.append({"max":max(e8),"maxtime":e8_time[e8.index(max(e8))],"min":min(e8),"mintime":e8_time[e8.index(min(e8))],"enum":qxz_dict_1[i['e8'].split('#')[1]],"ekey":i['e8'].split('#')[2]}) if e9 != []: data.append({"max":max(e9),"maxtime":e9_time[e9.index(max(e9))],"min":min(e9),"mintime":e9_time[e9.index(min(e9))],"enum":qxz_dict_1[i['e9'].split('#')[1]],"ekey":i['e9'].split('#')[2]}) if e10 != []: data.append({"max":max(e10),"maxtime":e10_time[e10.index(max(e10))],"min":min(e10),"mintime":e10_time[e10.index(min(e10))],"enum":qxz_dict_1[i['e10'].split('#')[1]],"ekey":i['e10'].split('#')[2]}) if e11 != []: data.append({"max":max(e11),"maxtime":e11_time[e11.index(max(e11))],"min":min(e11),"mintime":e11_time[e11.index(min(e11))],"enum":qxz_dict_1[i['e11'].split('#')[1]],"ekey":i['e11'].split('#')[2]}) if e12 != []: data.append({"max":max(e12),"maxtime":e12_time[e12.index(max(e12))],"min":min(e12),"mintime":e12_time[e12.index(min(e12))],"enum":qxz_dict_1[i['e12'].split('#')[1]],"ekey":i['e12'].split('#')[2]}) if e13 != []: data.append({"max":max(e13),"maxtime":e13_time[e13.index(max(e13))],"min":min(e13),"mintime":e13_time[e13.index(min(e13))],"enum":qxz_dict_1[i['e13'].split('#')[1]],"ekey":i['e13'].split('#')[2]}) if e14 != []: data.append({"max":max(e14),"maxtime":e14_time[e14.index(max(e14))],"min":min(e14),"mintime":e14_time[e14.index(min(e14))],"enum":qxz_dict_1[i['e14'].split('#')[1]],"ekey":i['e14'].split('#')[2]}) if e15 != []: data.append({"max":max(e15),"maxtime":e15_time[e15.index(max(e15))],"min":min(e15),"mintime":e15_time[e15.index(min(e15))],"enum":qxz_dict_1[i['e15'].split('#')[1]],"ekey":i['e15'].split('#')[2]}) if e16 != []: data.append({"max":max(e16),"maxtime":e16_time[e16.index(max(e16))],"min":min(e16),"mintime":e16_time[e16.index(min(e16))],"enum":qxz_dict_1[i['e16'].split('#')[1]],"ekey":i['e16'].split('#')[2]}) if e17 != []: data.append({"max":max(e17),"maxtime":e17_time[e17.index(max(e17))],"min":min(e17),"mintime":e17_time[e17.index(min(e17))],"enum":qxz_dict_1[i['e17'].split('#')[1]],"ekey":i['e17'].split('#')[2]}) if e18 != []: data.append({"max":max(e18),"maxtime":e18_time[e18.index(max(e18))],"min":min(e18),"mintime":e18_time[e18.index(min(e18))],"enum":qxz_dict_1[i['e18'].split('#')[1]],"ekey":i['e18'].split('#')[2]}) if e19 != []: data.append({"max":max(e19),"maxtime":e19_time[e19.index(max(e19))],"min":min(e19),"mintime":e19_time[e19.index(min(e19))],"enum":qxz_dict_1[i['e19'].split('#')[1]],"ekey":i['e19'].split('#')[2]}) if e20 != []: data.append({"max":max(e20),"maxtime":e20_time[e20.index(max(e20))],"min":min(e20),"mintime":e20_time[e20.index(min(e20))],"enum":qxz_dict_1[i['e20'].split('#')[1]],"ekey":i['e20'].split('#')[2]}) if e21 != []: data.append({"max":max(e21),"maxtime":e21_time[e21.index(max(e21))],"min":min(e21),"mintime":e21_time[e21.index(min(e21))],"enum":qxz_dict_1[i['e21'].split('#')[1]],"ekey":i['e21'].split('#')[2]}) if e22 != []: data.append({"max":max(e22),"maxtime":e22_time[e22.index(max(e22))],"min":min(e22),"mintime":e22_time[e22.index(min(e22))],"enum":qxz_dict_1[i['e22'].split('#')[1]],"ekey":i['e22'].split('#')[2]}) if e23 != []: data.append({"max":max(e23),"maxtime":e23_time[e23.index(max(e23))],"min":min(e23),"mintime":e23_time[e23.index(min(e23))],"enum":qxz_dict_1[i['e23'].split('#')[1]],"ekey":i['e23'].split('#')[2]}) if e24 != []: data.append({"max":max(e24),"maxtime":e24_time[e24.index(max(e24))],"min":min(e24),"mintime":e24_time[e24.index(min(e24))],"enum":qxz_dict_1[i['e24'].split('#')[1]],"ekey":i['e24'].split('#')[2]}) if e25 != []: data.append({"max":max(e25),"maxtime":e25_time[e25.index(max(e25))],"min":min(e25),"mintime":e25_time[e25.index(min(e25))],"enum":qxz_dict_1[i['e25'].split('#')[1]],"ekey":i['e25'].split('#')[2]}) if e26 != []: data.append({"max":max(e26),"maxtime":e26_time[e26.index(max(e26))],"min":min(e26),"mintime":e26_time[e26.index(min(e26))],"enum":qxz_dict_1[i['e26'].split('#')[1]],"ekey":i['e26'].split('#')[2]}) if e27 != []: data.append({"max":max(e27),"maxtime":e27_time[e27.index(max(e27))],"min":min(e27),"mintime":e27_time[e27.index(min(e27))],"enum":qxz_dict_1[i['e27'].split('#')[1]],"ekey":i['e27'].split('#')[2]}) if e28 != []: data.append({"max":max(e28),"maxtime":e28_time[e28.index(max(e28))],"min":min(e28),"mintime":e28_time[e28.index(min(e28))],"enum":qxz_dict_1[i['e28'].split('#')[1]],"ekey":i['e28'].split('#')[2]}) if e29 != []: data.append({"max":max(e29),"maxtime":e29_time[e29.index(max(e29))],"min":min(e29),"mintime":e29_time[e29.index(min(e29))],"enum":qxz_dict_1[i['e29'].split('#')[1]],"ekey":i['e29'].split('#')[2]}) if e30 != []: data.append({"max":max(e30),"maxtime":e30_time[e30.index(max(e30))],"min":min(e30),"mintime":e30_time[e30.index(min(e30))],"enum":qxz_dict_1[i['e30'].split('#')[1]],"ekey":i['e30'].split('#')[2]}) except Exception as e: print("报错信息为:",e) x = QXZ_Conf.objects.get(equip_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} dat = {"data":data,"conf":conf} # print(dat) dat = json.dumps(dat,cls=CJSONEncoder) return HttpResponse(dat) #测报灯API开放接口 class CBD_Mqtt_Configure(ListView): def post(self, request): uid = request.POST.get('uid') equip_id = request.POST.get('imei') if equip_validation(uid,equip_id) == "0": try: # equip_id = request.POST.get('id') # 设备id # imgUpNum = request.POST.get('imgUpNum')# 图片上传时间模式 imgres = int(request.POST.get('imgres')) # 图片分辨率 collt = int(request.POST.get('dropTime')) # 落虫时间 htim = int(request.POST.get('calefactionTime')) # 加热时间 hst = int(request.POST.get('calefactionTemperature')) # 加热温度 tph = int(request.POST.get('highLimit')) # 加热仓温度上限 tpl = int(request.POST.get('lowLimit')) # 加热仓温度下限加热仓温度下限 datt = int(request.POST.get('dataUpTime')) # 数据上传时间间隔 print("设备id:equip_id:", equip_id) # print("imgUpNum:",imgUpNum) print("图片分辨率imgres:", imgres) print("落虫时间collt:", collt) print("加热时间htim:", htim) print("加热温度hst:", hst) print("加热仓温度上限tph:", tph) print("加热仓温度下限tpl:", tpl) print("数据上传时间间隔datt:", datt) # 参数范围判断 if imgres not in range(0,3) or collt not in range(5,21) or htim not in range(5,21) \ or hst not in range(75,126) or tph not in range(40,71) or tpl not in range(-5,11) or datt not in range(5,61): data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) topic = "/yfkj/cbd/sub/"+ equip_id # [1:-1] print("topic:", topic) ts = int(request.POST.get('ts')) # 定时模式 print("定时模式ts:", ts) if ts == 0: tt = int(request.POST.get('timingLength')) # 定时时长 print("定时时长tt:", tt) if tt not in range(1,9): data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) payload = {"cmd": "paramconf", "ext": {"ts": ts, "tt": tt, "collt": collt,"htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}} elif ts == 1: st = int(request.POST.get('begin')) # 开始时间 et = int(request.POST.get('end')) # 结束时间 print("开始时间st:", st) print("结束时间et:", et) if st not in range(0,25) or et not in range(0,25): data = api_code[3] data = json.dumps(data) print(data) return HttpResponse(data) payload = {"cmd": "paramconf", "ext": {"ts": ts, "st": st, "et": et, "collt": collt, "htim": htim, "hst": hst, "tph": tph, "tpl": tpl, "datt": datt, "imgres": imgres}} else: data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) except Exception as e: print(e) data = api_code[1] data = json.dumps(data) print(data) return HttpResponse(data) cmd = {"topic": topic, "payload": json.dumps(payload), 'qos': 1} print(json.dumps(payload, indent=1)) if ip == "172.16.220.3": res = requests.post("http://www.yfzhwlw.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) else: res = requests.post("http://www.yfznscd.com:8080/api/v2/mqtt/publish", data=json.dumps(cmd, indent=1), auth=HTTPBasicAuth("admin", "yfkj_6019")) print("res.status_code:", type(res.status_code)) if res.status_code == 200: data = api_code[0] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[4] data = json.dumps(data) print(data) return HttpResponse(data) else: data = api_code[2] data = json.dumps(data) print(data) return HttpResponse(data)