|
|
@@ -47,12 +47,12 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
try:
|
|
|
request_data = request.body
|
|
|
data = json.loads(request_data)
|
|
|
- logger.warning(f"测报灯 杀虫灯 性诱 设备及数据入库原数据: {data}")
|
|
|
topic = data.get("topic")
|
|
|
payload = data.get("payload")
|
|
|
cmd = payload.get("cmd")
|
|
|
topic_msg = topic.split("/")
|
|
|
now = int(time.time())
|
|
|
+ logger.warning(topic_msg)
|
|
|
if topic_msg and len(topic_msg) == 5 and cmd:
|
|
|
device_id = topic_msg[-1]
|
|
|
try:
|
|
|
@@ -60,10 +60,13 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
device_type_id = device_type_en.get(device_type)
|
|
|
if device_type_id == 2:
|
|
|
model = MongoSCDData
|
|
|
+ logger.warning(f"杀虫灯数据入库原数据: {data}")
|
|
|
elif device_type_id == 3:
|
|
|
model = MongoCBDData
|
|
|
+ logger.warning(f"测报灯数据入库原数据: {data}")
|
|
|
elif device_type_id == 4:
|
|
|
model = MongoXYCBData
|
|
|
+ logger.warning(f"性诱数据入库原数据: {data}")
|
|
|
# 在设备信息表中查找是否有数据,如果没有数据则增加
|
|
|
device_name = device_type_zh.get(str(device_type_id))
|
|
|
device, is_created = MongoDevice.objects.get_or_create(
|
|
|
@@ -83,6 +86,7 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
ext = payload.get("ext")
|
|
|
if ext:
|
|
|
# 获取设备上报的时间,同步设备
|
|
|
+ uptime = 0
|
|
|
try:
|
|
|
stamp = ext.get("stamp")
|
|
|
uptime = int((datetime.datetime.strptime(stamp, "%Y%m%d%H%M%S")).timestamp())
|
|
|
@@ -92,13 +96,13 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
model.objects.create(
|
|
|
device_id = device.id,
|
|
|
device_data = str(ext),
|
|
|
- addtime = now
|
|
|
+ addtime = uptime if uptime else now
|
|
|
)
|
|
|
lng = ext.get("lng")
|
|
|
lat = ext.get("lat")
|
|
|
dver_num = ext.get("dver")
|
|
|
device.device_status = 1
|
|
|
- device.uptime = uptime
|
|
|
+ device.uptime = uptime if uptime else now
|
|
|
if dver_num:
|
|
|
device.dver_num = dver_num
|
|
|
if lng and lat and dver_num and device.gps != 0:
|
|
|
@@ -113,7 +117,7 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
device.district = district
|
|
|
device.save()
|
|
|
elif cmd == "offline":
|
|
|
- ext = data.get("ext")
|
|
|
+ ext = payload.get("ext")
|
|
|
if ext:
|
|
|
# 增加设备数据
|
|
|
model.objects.create(
|
|
|
@@ -124,7 +128,9 @@ class CbdScdXyDeviceSaveAPIView(APIView):
|
|
|
# 更新设备状态
|
|
|
device = MongoDevice.objects.filter(device_id=device_id).first()
|
|
|
device.device_status = 0
|
|
|
+ device.uptime = now
|
|
|
device.save()
|
|
|
+ return Response({"code": 0, "msg": "设备离线"})
|
|
|
return Response({"code": 0, "msg": "success"})
|
|
|
except Exception as e:
|
|
|
logger.error(f"测报灯设备 {device_id} 处理上报数据或增加设备失败,错误原因:{e.args}")
|