Przeglądaj źródła

设备控制更新

yf_yzl 2 lat temu
rodzic
commit
e397930821
1 zmienionych plików z 15 dodań i 7 usunięć
  1. 15 7
      smartfarming/views/device.py

+ 15 - 7
smartfarming/views/device.py

@@ -38,7 +38,8 @@ class CbdScdXyDeviceSaveAPIView(APIView):
     def post(self, request):
         # 测报灯 杀虫灯 性诱 设备及数据入库
         try:
-            data = request.data 
+            request_data = request.body 
+            data = json.loads(request_data)
             logger.warning(f"测报灯 杀虫灯 性诱 设备及数据入库原数据: {data}")
             topic = data.get("topic")
             payload = data.get("payload")
@@ -57,7 +58,7 @@ class CbdScdXyDeviceSaveAPIView(APIView):
                     elif device_type_id == 8:
                         model = MongoXYCBData
                     # 在设备信息表中查找是否有数据,如果没有数据则增加
-                    device_name = device_type_zh.get(device_type_id)
+                    device_name = device_type_zh.get(str(device_type_id))
                     device, is_created = MongoDevice.objects.get_or_create(
                         device_id = device_id,
                         defaults={
@@ -187,12 +188,13 @@ class QxzDeviceAddAPIViw(APIView):
         try:
             request_data = request.body 
             request_data = json.loads(request_data)
-            logger.error(f"气象站数据入库原数据: {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")
+            up = uptime.replace(" ", "")
+            uptime_tp = int((datetime.datetime.strptime(up, "%Y-%m-%d%H:%M:%S")).timestamp())
             # 获取该设备的预警配置数据
             alarm = MongoQXZ_Alarm.objects.filter(device_id=device_id)
             qxz_e_conf = MongoQXZ_Conf.objects.filter(device_id=device_id)
@@ -231,8 +233,6 @@ class QxzDeviceAddAPIViw(APIView):
                                         if result:
                                             result_tp = f"{zh_k[0]}{result}{zh_k[1]},"
                                             result_tp_fin += result_tp
-                up = uptime.replace(" ", "")
-                uptime_tp = int((datetime.datetime.strptime(up, "%Y-%m-%d%H:%M:%S")).timestamp())
                 if result_tp_fin:
                     alarm_new = MongoQXZ_Alarm_Log_New()
                     alarm_new.warning_content = result_tp_fin
@@ -252,7 +252,7 @@ class QxzDeviceAddAPIViw(APIView):
                     defaults={
                         "volt": terminalStatus.get("VOLT"),
                         "rssi": terminalStatus.get("RSSI"),
-                        "uptime": uptime
+                        "uptime": uptime_tp
                     }
                 )
                 iccid =  terminalStatus.get("ICCID")
@@ -260,7 +260,7 @@ class QxzDeviceAddAPIViw(APIView):
                 lat =  terminalStatus.get("latitude")
                 led =  terminalStatus.get("Dotled")
                 dver =  terminalStatus.get("Version")
-                device, is_created = MongoDevice.objects.update_or_create(device_id=device_id)
+                device, is_created = MongoDevice.objects.get_or_create(device_id=device_id)
                 if iccid:
                     base_info_obj.iccid = iccid
                 if lng:
@@ -273,7 +273,15 @@ class QxzDeviceAddAPIViw(APIView):
                     base_info_obj.led = led
                 if dver:
                     base_info_obj.dver = dver
+                # 如果经纬度均存在
+                if lat and lng:
+                    is_success, province, city, district = get_addr_by_lag_lng(lat, lng)
+                    if is_success:
+                        device.province = province
+                        device.city = city
+                        device.district = district
                 base_info_obj.save()
+                device.uptime = uptime_tp
                 device.save()
                 return Response({"code": 0, "msg": "success"}) 
             if cmd: