yf_yzl 2 năm trước cách đây
mục cha
commit
74c75338cc

+ 1 - 0
smartfarming/api/views/camera/camera_manage.py

@@ -450,6 +450,7 @@ def camera_takephoto(request):
     appSecret = camera_query.app_secret
     snap_url = setDeviceSnap(appId, appSecret, device_id, channelNo)
     print(snap_url)
+    time.sleep(1)
     if snap_url:
         # 图片保存位置 
         config = settings.CONFIG

+ 4 - 4
smartfarming/api/views/forecast/worm_lamp.py

@@ -273,10 +273,9 @@ def device_history_data(request):
             "7": [MongoBZYData, MongoBZYDataSerializers]
         }
         models_type = device_dict.get(device_type_id)
-        queryset = models_type[0].objects.filter(
-            device_id=device.id, 
-            addtime__gte=int(start_time), 
-            addtime__lte=int(end_time)).order_by("-addtime")
+        queryset = models_type[0].objects.filter(device_id=device.id).order_by("-addtime")
+        if start_time and end_time:
+            queryset = queryset.filter(addtime__gte=int(start_time),addtime__lte=int(end_time))
         total_obj = queryset.count()
         paginator = Paginator(queryset, page_size)
         page_obj = paginator.get_page(page_num)
@@ -286,6 +285,7 @@ def device_history_data(request):
             "counts": total_obj
         }
     except Exception as e:
+        print(e)
         raise PortError('msg', "请联系管理员")
 
 

+ 62 - 19
smartfarming/views/device.py

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