|
|
@@ -16,6 +16,13 @@ from kedong.decoration import kedong_deco, PortError
|
|
|
from smartfarming.models.device import MongoDevice, MongoCBDData
|
|
|
from smartfarming.models.weather import MongoQXZ_Base_Info, QXZdata_New, MongoQXZ_Conf, QXZstatus_New, MongoQXZ_Alarm
|
|
|
from smartfarming.api.views.weather.all_dict import qxz_dict
|
|
|
+from smartfarming.models.weather import (
|
|
|
+ MongoQXZ_Switch,
|
|
|
+ MongoQXZ_Auto_Switch,
|
|
|
+ MongoQXZ_Timing_Switch,
|
|
|
+ QXZ_Switch_Status,
|
|
|
+ QXZ_Default_Conf
|
|
|
+)
|
|
|
|
|
|
config_dict = settings.CONFIG
|
|
|
|
|
|
@@ -901,12 +908,303 @@ def device_status_data(request):
|
|
|
}
|
|
|
return up_st
|
|
|
|
|
|
-# config = {
|
|
|
-# 'host': config_dict['bigdata']['django_mysql_host'],
|
|
|
-# 'port': int(config_dict['bigdata']['django_mysql_port']),
|
|
|
-# 'user': config_dict['bigdata']['django_mysql_user'],
|
|
|
-# 'password': config_dict['bigdata']['django_mysql_password'],
|
|
|
-# 'db': config_dict['bigdata']['django_mysql_db'],
|
|
|
-# 'charset': 'utf8mb4',
|
|
|
-# 'cursorclass': pymysql.cursors.DictCursor,
|
|
|
-# }
|
|
|
+@kedong_deco(login_required=True)
|
|
|
+def qxz_switch_status(request):
|
|
|
+ """
|
|
|
+ 气象站开关、阈值状态接口
|
|
|
+ 参数:
|
|
|
+ device_id 必传(str) 设备号
|
|
|
+
|
|
|
+ 返回值:
|
|
|
+ {
|
|
|
+ qxz_switch: "[{'status': 0, 'JK': 0}, {'status': 0, 'JK': 1}]" 开关状态
|
|
|
+ switch_name: "[{'name': '开关0', 'JK': 0}, {'name': '', 'JK': 1}]" 开关名称
|
|
|
+ timing_list: "[{'JK': 0, 'Duration': 4, 'StartTime': 3}, {'JK': 1, 'Duration': 8, 'StartTime': 7}]" 定时控制
|
|
|
+ auto_list: [{'lower': 32767, 'JK': 0, 'method': 0, 'upper': 32767, 'eKey': 0}]" 阈值状态
|
|
|
+ }
|
|
|
+ """
|
|
|
+ device_id = request.POST.get("device_id")
|
|
|
+ data = []
|
|
|
+ try:
|
|
|
+ switch_obj = QXZ_Switch_Status.objects.get(device_id=device_id)
|
|
|
+ qxz_switch = switch_obj.qxz_switch
|
|
|
+ except:
|
|
|
+ qxz_switch = ""
|
|
|
+ try:
|
|
|
+ switch_name_obj = MongoQXZ_Switch.objects.get(device_id=device_id)
|
|
|
+ switch_name = switch_name_obj.qxz_switch_data
|
|
|
+ except:
|
|
|
+ switch_name = ""
|
|
|
+ try:
|
|
|
+ timing_list = MongoQXZ_Timing_Switch.objects.get(device_id=device_id).qxz_timing
|
|
|
+ except:
|
|
|
+ timing_list = ""
|
|
|
+
|
|
|
+ try:
|
|
|
+ auto_list = MongoQXZ_Auto_Switch.objects.get(device_id=device_id).qxz_auto
|
|
|
+ except:
|
|
|
+ auto_list = ""
|
|
|
+ data = {'qxz_switch':qxz_switch, 'switch_name':switch_name, 'timing_list':timing_list,"auto_list":auto_list}
|
|
|
+ return data
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@kedong_deco(login_required=False)
|
|
|
+def qxz_element_conf(request):
|
|
|
+ """
|
|
|
+ 气象站查看通道要素接口\保存通道要素接口:
|
|
|
+ 参数:
|
|
|
+ device_id 必传(str) 设备号
|
|
|
+ status 必传(str) 当status等于see查看, 当status等于save保存
|
|
|
+ ekey 非必传(str) 通道号 如e1
|
|
|
+ conf 非必传(str) 通道标题,如大气温度#℃
|
|
|
+
|
|
|
+ 说明:当status等于see查看,只需要传device_id,当status等于save保存 需传device_id、conf、ekey
|
|
|
+ 返回值:
|
|
|
+ 当status等于see时:
|
|
|
+ "data": {
|
|
|
+ "default": { 原来值
|
|
|
+ "e1": "大气温度#℃",
|
|
|
+ "e2": "大气湿度#%RH",
|
|
|
+ "e3": "风速#m/s",
|
|
|
+ "e4": "风向#°",
|
|
|
+ "e5": "模拟气压#hpa",
|
|
|
+ "e6": "简易总辐射#w/㎡"
|
|
|
+ },
|
|
|
+ "conf": { 修改值
|
|
|
+ "e1": "大气温度#℃",
|
|
|
+ "e2": "大气湿度#%RH",
|
|
|
+ "e3": "风速#m/s",
|
|
|
+ "e4": "风向#°",
|
|
|
+ "e5": "模拟气压#hpa",
|
|
|
+ "e6": "简易总辐射#w/㎡"
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ 当status等于save时:
|
|
|
+ {
|
|
|
+ "data" 0 0 保存成功 1失败
|
|
|
+ }
|
|
|
+
|
|
|
+ """
|
|
|
+ device_id = request.POST.get("device_id")
|
|
|
+ status = request.POST.get("status")
|
|
|
+ ekey = request.POST.get("ekey")
|
|
|
+ conf = request.POST.get("conf")
|
|
|
+
|
|
|
+ if status == "see":
|
|
|
+ x = MongoQXZ_Conf.objects.get(device_id=device_id)
|
|
|
+ i = QXZ_Default_Conf.objects.get(device_id=device_id)
|
|
|
+ conf = {"e1":x.e1,"e2":x.e2,"e3":x.e3,"e4":x.e4,"e5":x.e5,
|
|
|
+ "e6":x.e6,"e7":x.e7,"e8":x.e8,"e9":x.e9,"e10":x.e10,
|
|
|
+ "e11":x.e11,"e12":x.e12,"e13":x.e13,"e14":x.e14,
|
|
|
+ "e15":x.e15,"e16":x.e16,"e17":x.e17,"e18":x.e18,
|
|
|
+ "e19":x.e19,"e20":x.e20,"e21":x.e21,"e22":x.e22,
|
|
|
+ "e23":x.e23,"e24":x.e24,"e25":x.e25,"e26":x.e26,
|
|
|
+ "e27":x.e27,"e28":x.e28,"e29":x.e29,"e30":x.e30}
|
|
|
+ default = {"e1":i.e1,"e2":i.e2,"e3":i.e3,"e4":i.e4,"e5":i.e5,
|
|
|
+ "e6":i.e6,"e7":i.e7,"e8":i.e8,"e9":i.e9,"e10":i.e10,
|
|
|
+ "e11":i.e11,"e12":i.e12,"e13":i.e13,"e14":i.e14,
|
|
|
+ "e15":i.e15,"e16":i.e16,"e17":i.e17,"e18":i.e18,
|
|
|
+ "e19":i.e19,"e20":i.e20,"e21":i.e21,"e22":i.e22,
|
|
|
+ "e23":i.e23,"e24":i.e24,"e25":i.e25,"e26":i.e26,
|
|
|
+ "e27":i.e27,"e28":i.e28,"e29":i.e29,"e30":i.e30}
|
|
|
+
|
|
|
+ for k in list(conf.keys()):
|
|
|
+ if not conf[k]:
|
|
|
+ del conf[k]
|
|
|
+
|
|
|
+ for y in list(default.keys()):
|
|
|
+ if not default[y]:
|
|
|
+ del default[y]
|
|
|
+ data = {"default":default,"conf":conf}
|
|
|
+ elif status == "save":
|
|
|
+ times = int(time.time())
|
|
|
+ conf_obj = MongoQXZ_Conf.objects.get(device_id=device_id)
|
|
|
+ if ekey == "e1":
|
|
|
+ con = (conf_obj.e1).split("#")
|
|
|
+ conf_obj.e1 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e2":
|
|
|
+ con = (conf_obj.e2).split("#")
|
|
|
+ conf = conf + "#"+ con[1]
|
|
|
+ conf_obj.e2 = conf
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e3":
|
|
|
+ con = (conf_obj.e3).split("#")
|
|
|
+ conf_obj.e3 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e4":
|
|
|
+ con = (conf_obj.e4).split("#")
|
|
|
+ conf_obj.e4 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e5":
|
|
|
+ con = (conf_obj.e5).split("#")
|
|
|
+ conf_obj.e5 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e6":
|
|
|
+ con = (conf_obj.e6).split("#")
|
|
|
+ conf_obj.e6 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e7":
|
|
|
+ con = (conf_obj.e7).split("#")
|
|
|
+ conf_obj.e7 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e8":
|
|
|
+ con = (conf_obj.e8).split("#")
|
|
|
+ conf_obj.e8 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e9":
|
|
|
+ con = (conf_obj.e9).split("#")
|
|
|
+ conf_obj.e9 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e10":
|
|
|
+ con = (conf_obj.e10).split("#")
|
|
|
+ conf_obj.e10 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e11":
|
|
|
+ con = (conf_obj.e11).split("#")
|
|
|
+ conf_obj.e11 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e12":
|
|
|
+ con = (conf_obj.e12).split("#")
|
|
|
+ conf_obj.e12 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e13":
|
|
|
+ con = (conf_obj.e13).split("#")
|
|
|
+ conf_obj.e13 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e14":
|
|
|
+ con = (conf_obj.e14).split("#")
|
|
|
+ conf_obj.e14 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e15":
|
|
|
+ con = (conf_obj.e15).split("#")
|
|
|
+ conf_obj.e15 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e16":
|
|
|
+ con = (conf_obj.e16).split("#")
|
|
|
+ conf_obj.e16 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e17":
|
|
|
+ con = (conf_obj.e17).split("#")
|
|
|
+ conf_obj.e17 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e18":
|
|
|
+ con = (conf_obj.e18).split("#")
|
|
|
+ conf_obj.e18 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e19":
|
|
|
+ con = (conf_obj.e19).split("#")
|
|
|
+ conf_obj.e19 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e20":
|
|
|
+ con = (conf_obj.e20).split("#")
|
|
|
+ conf_obj.e20 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e21":
|
|
|
+ con = (conf_obj.e21).split("#")
|
|
|
+ conf_obj.e21 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e22":
|
|
|
+ con = (conf_obj.e22).split("#")
|
|
|
+ conf_obj.e22 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e23":
|
|
|
+ con = (conf_obj.e23).split("#")
|
|
|
+ conf_obj.e23 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e24":
|
|
|
+ con = (conf_obj.e24).split("#")
|
|
|
+ conf_obj.e24 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e25":
|
|
|
+ con = (conf_obj.e25).split("#")
|
|
|
+ conf_obj.e25 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e26":
|
|
|
+ con = (conf_obj.e26).split("#")
|
|
|
+ conf_obj.e26 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e27":
|
|
|
+ con = (conf_obj.e27).split("#")
|
|
|
+ conf_obj.e27 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e28":
|
|
|
+ con = (conf_obj.e28).split("#")
|
|
|
+ conf_obj.e28 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e29":
|
|
|
+ con = (conf_obj.e29).split("#")
|
|
|
+ conf_obj.e29 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ elif ekey == "e30":
|
|
|
+ con = (conf_obj.e30).split("#")
|
|
|
+ conf_obj.e30 = conf + "#"+ con[1]
|
|
|
+ conf_obj.update = times
|
|
|
+ conf_obj.save()
|
|
|
+ data = {"code": 0}
|
|
|
+ else:
|
|
|
+ data = {"code": 1}
|
|
|
+ else:
|
|
|
+ raise PortError("","参数超出范围")
|
|
|
+ return data
|