소스 검색

创建智能场景限制智能按钮创建相同场景

peng 3 년 전
부모
커밋
69630d7d08
1개의 변경된 파일13개의 추가작업 그리고 2개의 파일을 삭제
  1. 13 2
      Controller/SensorGateway/SmartSceneController.py

+ 13 - 2
Controller/SensorGateway/SmartSceneController.py

@@ -200,6 +200,8 @@ class SmartSceneView(View):
         now_time = int(time.time())
         conditions_dict = eval(conditions)
         tasks_list = eval(tasks)
+        device_type = conditions_dict['sensor']['eventValues'][0]['event_type']
+
         try:
             # 判断是否已存在该场景名
             smart_scene_qs = SmartScene.objects.filter(user_id=user_id, scene_name=scene_name)
@@ -232,6 +234,14 @@ class SmartSceneView(View):
             else:  # 子设备设置场景
                 if not sub_device_id:
                     return response.json(444, {'error param': 'subDeviceId'})
+
+                smart_scene_qs = SmartScene.objects.filter(sub_device_id=sub_device_id).values('conditions')
+                if smart_scene_qs.exists():
+                    for item in smart_scene_qs:
+                        conditions_temp = eval(item['conditions'])
+                        if device_type == conditions_temp['sensor']['eventValues'][0]['event_type']:
+                            return response.json(174)
+
                 smart_scene_dict['sub_device_id'] = sub_device_id
                 sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device__serial_number',
                                                                                          'src_addr')
@@ -588,7 +598,8 @@ class SmartSceneView(View):
         """
         查询场景日志
         @param request_dict: 请求参数
-        @request_dict gatewaySubId: 子设备id
+        @request_dict deviceId: 网关id
+        @request_dict subDeviceId: 子设备id
         @request_dict page: 页数
         @request_dict size: 条数
         @request_dict startTime: 开始时间
@@ -604,7 +615,7 @@ class SmartSceneView(View):
         end_time = request_dict.get('endTime', None)
 
         if not any([device_id, sub_device_id]):
-            return response.json(444, {'error param': 'deviceId or subDeviceId'})
+            return response.json(444, {'error param': 'deviceId and subDeviceId'})
         if not all([page, size]):
             return response.json(444, {'error param': 'page or size'})