|
|
@@ -113,25 +113,68 @@ class QxzDeviceAddAPIViw(APIView):
|
|
|
authentication_classes = []
|
|
|
def post(self, request):
|
|
|
# 气象站上传数据
|
|
|
- request_data = request.data
|
|
|
- device_id = request_data.get("StationID")
|
|
|
- uptime = request_data.get("MonitorTime")
|
|
|
- data = request_data.get("data")
|
|
|
- qx_ek = {}
|
|
|
- for i in data:
|
|
|
- tp_value = i.get("eValue")
|
|
|
- if tp_value:
|
|
|
- qx_ek[i.get("eKey")] = tp_value
|
|
|
-
|
|
|
- if data:
|
|
|
- # 30分钟上报一次的数据
|
|
|
- conf_data = data_deal(data)
|
|
|
- qx_ek["device_id"] = device_id
|
|
|
- qx_ek["uptime"] = uptime
|
|
|
- qxz_data = QXZdata_New(**qx_ek)
|
|
|
- qxz_data.save()
|
|
|
-
|
|
|
-
|
|
|
+ try:
|
|
|
+ request_data = request.data
|
|
|
+ device_id = request_data.get("StationID")
|
|
|
+ uptime = request_data.get("MonitorTime")
|
|
|
+ data = request_data.get("data")
|
|
|
+ terminalStatus = request_data.get("terminalStatus")
|
|
|
+ cmd = request_data.get("cmd")
|
|
|
+ if data:
|
|
|
+ qx_ek = {}
|
|
|
+ for i in data:
|
|
|
+ tp_value = i.get("eValue")
|
|
|
+ if tp_value:
|
|
|
+ qx_ek[i.get("eKey")] = tp_value
|
|
|
+ if data:
|
|
|
+ # 30分钟上报一次的数据
|
|
|
+ qx_ek["device_id"] = device_id
|
|
|
+ qx_ek["uptime"] = uptime
|
|
|
+ qxz_data = QXZdata_New(**qx_ek)
|
|
|
+ qxz_data.save()
|
|
|
+ return Response({"code": 0, "msg": "success"})
|
|
|
+ if terminalStatus:
|
|
|
+ base_info_obj, is_created = MongoQXZ_Base_Info.objects.update_or_create(
|
|
|
+ device_id=device_id,
|
|
|
+ defaults={
|
|
|
+ "volt": terminalStatus.get("VOLT"),
|
|
|
+ "rssi": terminalStatus.get("RSSI"),
|
|
|
+ "uptime": uptime
|
|
|
+ }
|
|
|
+ )
|
|
|
+ iccid = terminalStatus.get("ICCID")
|
|
|
+ lng = terminalStatus.get("longitude")
|
|
|
+ lat = terminalStatus.get("latitude")
|
|
|
+ led = terminalStatus.get("Dotled")
|
|
|
+ dver = terminalStatus.get("Version")
|
|
|
+ device, is_created = MongoDevice.objects.update_or_create(device_id=device_id)
|
|
|
+ if iccid:
|
|
|
+ base_info_obj.iccid = iccid
|
|
|
+ if lng:
|
|
|
+ base_info_obj.lng = lng
|
|
|
+ device.lng = lng
|
|
|
+ if lat:
|
|
|
+ base_info_obj.lat = lat
|
|
|
+ device.lat = lat
|
|
|
+ if led:
|
|
|
+ base_info_obj.led = led
|
|
|
+ if dver:
|
|
|
+ base_info_obj.dver = dver
|
|
|
+ base_info_obj.save()
|
|
|
+ device.save()
|
|
|
+ return Response({"code": 0, "msg": "success"})
|
|
|
+ if cmd:
|
|
|
+ ext = request_data.get("ext")
|
|
|
+ imei = ext.get("imei")
|
|
|
+ device_info = MongoDevice.objects.get(device_id=imei)
|
|
|
+ if cmd == "online":
|
|
|
+ device_info.device_status = 1
|
|
|
+ if cmd == "offline":
|
|
|
+ device_info.device_status = 0
|
|
|
+ device_info.save()
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(f"气象站设备 {device_id} 处理上报数据或增加设备失败,错误原因:{e.args}")
|
|
|
+ return Response({"code": 2, "msg": "failer"})
|
|
|
|
|
|
|
|
|
class DeviceListAPIView(APIView):
|