|
@@ -202,35 +202,35 @@ class SmartSceneView(View):
|
|
|
conditions_dict = eval(conditions)
|
|
|
tasks_list = eval(tasks)
|
|
|
try:
|
|
|
- with transaction.atomic():
|
|
|
- # 判断是否已存在该场景名
|
|
|
- smart_scene_qs = SmartScene.objects.filter(user_id=user_id, scene_name=scene_name)
|
|
|
- if smart_scene_qs.exists():
|
|
|
- return response.json(174)
|
|
|
-
|
|
|
- smart_scene_dict = {
|
|
|
- 'user_id': user_id,
|
|
|
- 'scene_name': scene_name,
|
|
|
- 'conditions': conditions,
|
|
|
- 'tasks': tasks,
|
|
|
- 'created_time': now_time,
|
|
|
- 'updated_time': now_time,
|
|
|
- }
|
|
|
+ # 判断是否已存在该场景名
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(user_id=user_id, scene_name=scene_name)
|
|
|
+ if smart_scene_qs.exists():
|
|
|
+ return response.json(174)
|
|
|
+
|
|
|
+ smart_scene_dict = {
|
|
|
+ 'user_id': user_id,
|
|
|
+ 'scene_name': scene_name,
|
|
|
+ 'conditions': conditions,
|
|
|
+ 'tasks': tasks,
|
|
|
+ 'created_time': now_time,
|
|
|
+ 'updated_time': now_time,
|
|
|
+ }
|
|
|
|
|
|
- # 处理传网关设备id和子设备id的情况
|
|
|
- if device_id:
|
|
|
- smart_scene_dict['device_id'] = device_id
|
|
|
- device_info_qs = Device_Info.objects.filter(id=device_id).values('serial_number')
|
|
|
- if not device_info_qs.exists():
|
|
|
- return response.json(173)
|
|
|
- serial_number = device_info_qs[0]['serial_number']
|
|
|
- else:
|
|
|
- smart_scene_dict['sub_device_id'] = sub_device_id
|
|
|
- sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device__serial_number')
|
|
|
- if not sub_device_qs.exists():
|
|
|
- return response.json(173)
|
|
|
- serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
+ # 处理传网关设备id和子设备id的情况
|
|
|
+ if device_id:
|
|
|
+ smart_scene_dict['device_id'] = device_id
|
|
|
+ device_info_qs = Device_Info.objects.filter(id=device_id).values('serial_number')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ serial_number = device_info_qs[0]['serial_number']
|
|
|
+ else:
|
|
|
+ smart_scene_dict['sub_device_id'] = sub_device_id
|
|
|
+ sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device__serial_number')
|
|
|
+ if not sub_device_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
|
|
|
+ with transaction.atomic():
|
|
|
if not is_all_day: # 没传时间
|
|
|
smart_scene_qs = SmartScene.objects.create(**smart_scene_dict)
|
|
|
else:
|
|
@@ -241,7 +241,7 @@ class SmartSceneView(View):
|
|
|
else:
|
|
|
effective_time_id = EffectiveTime.objects.create(is_all_day=True).id
|
|
|
smart_scene_dict['effective_time_id'] = effective_time_id
|
|
|
- SmartScene.objects.create(**smart_scene_dict)
|
|
|
+ smart_scene_qs = SmartScene.objects.create(**smart_scene_dict)
|
|
|
else:
|
|
|
start_time = int(request_dict.get('startTime', None))
|
|
|
end_time = int(request_dict.get('endTime', None))
|
|
@@ -277,7 +277,9 @@ class SmartSceneView(View):
|
|
|
task_temp['sensor_src'] = int(sub_device_qs['src_addr'], 16)
|
|
|
task_list.append(task_temp)
|
|
|
msg['task'] = task_list
|
|
|
- smart_scene_qs.update(device_data=json.dumps(msg))
|
|
|
+ # smart_scene_qs.update(device_data=json.dumps(msg))
|
|
|
+ smart_scene_qs.device_data = json.dumps(msg)
|
|
|
+ smart_scene_qs.save()
|
|
|
# 发布MQTT消息通知网关设备
|
|
|
thing_name = serial_number
|
|
|
topic_name = 'loocam/gateway_sensor/{}/smart_scene'.format(serial_number)
|