|
@@ -4,10 +4,12 @@
|
|
@Time : 2022/6/29 9:31
|
|
@Time : 2022/6/29 9:31
|
|
@File :SmartSceneController.py
|
|
@File :SmartSceneController.py
|
|
"""
|
|
"""
|
|
|
|
+import time
|
|
|
|
+
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.core.exceptions import ObjectDoesNotExist
|
|
from django.views import View
|
|
from django.views import View
|
|
|
|
|
|
-from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom
|
|
|
|
|
|
+from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
|
|
|
|
@@ -36,7 +38,7 @@ class SmartSceneView(View):
|
|
if operation == 'task-devices': # 添加任务-查询设备
|
|
if operation == 'task-devices': # 添加任务-查询设备
|
|
return self.task_devices(request_dict, user_id, response)
|
|
return self.task_devices(request_dict, user_id, response)
|
|
elif operation == 'create': # 创建智能场景
|
|
elif operation == 'create': # 创建智能场景
|
|
- return self.create_smart_scene(request_dict, response)
|
|
|
|
|
|
+ return self.create_smart_scene(request_dict, user_id, response)
|
|
else:
|
|
else:
|
|
return response.json(414)
|
|
return response.json(414)
|
|
|
|
|
|
@@ -46,18 +48,22 @@ class SmartSceneView(View):
|
|
添加条件-查询设备
|
|
添加条件-查询设备
|
|
@param request_dict: 请求参数
|
|
@param request_dict: 请求参数
|
|
@request_dict deviceId: 网关设备id
|
|
@request_dict deviceId: 网关设备id
|
|
|
|
+ @request_dict subDeviceId: 子设备id
|
|
@param response: 响应对象
|
|
@param response: 响应对象
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
device_id = request_dict.get('deviceId', None)
|
|
device_id = request_dict.get('deviceId', None)
|
|
-
|
|
|
|
- if not all([device_id]):
|
|
|
|
|
|
+ sub_device_id = request_dict.get('subDeviceId', None)
|
|
|
|
+ if not any([device_id, sub_device_id]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
try:
|
|
try:
|
|
- gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id).values('id', 'device_type',
|
|
|
|
- 'nickname', 'status')
|
|
|
|
|
|
+ if device_id:
|
|
|
|
+ gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
|
|
+ else:
|
|
|
|
+ gateway_sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id)
|
|
if not gateway_sub_device_qs.exists():
|
|
if not gateway_sub_device_qs.exists():
|
|
return response.json(173)
|
|
return response.json(173)
|
|
|
|
+ gateway_sub_device_qs = gateway_sub_device_qs.values('id', 'device_type', 'nickname', 'status')
|
|
sub_device_list = []
|
|
sub_device_list = []
|
|
for gateway_sub_device in gateway_sub_device_qs:
|
|
for gateway_sub_device in gateway_sub_device_qs:
|
|
room_id = FamilyRoomDevice.objects.filter(sub_device=gateway_sub_device['id']).values('room_id')[0][
|
|
room_id = FamilyRoomDevice.objects.filter(sub_device=gateway_sub_device['id']).values('room_id')[0][
|
|
@@ -93,19 +99,41 @@ class SmartSceneView(View):
|
|
return response.json(500, repr(e))
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|
|
- def create_smart_scene(request_dict, response):
|
|
|
|
|
|
+ def create_smart_scene(request_dict, user_id, response):
|
|
"""
|
|
"""
|
|
创建智能场景
|
|
创建智能场景
|
|
@param request_dict: 请求参数
|
|
@param request_dict: 请求参数
|
|
|
|
+ @param user_id: 用户id
|
|
@request_dict gatewaySubId: 子设备id
|
|
@request_dict gatewaySubId: 子设备id
|
|
@param response: 响应对象
|
|
@param response: 响应对象
|
|
@return: response
|
|
@return: response
|
|
"""
|
|
"""
|
|
sub_device_id = request_dict.get('gatewaySubId', None)
|
|
sub_device_id = request_dict.get('gatewaySubId', None)
|
|
|
|
+ scene_name = request_dict.get('sceneName', None)
|
|
|
|
+ conditions = request_dict.get('conditions', None)
|
|
|
|
+ tasks = request_dict.get('tasks', None)
|
|
|
|
+ all_day = request_dict.get('allDay', None)
|
|
|
|
|
|
- if not all([sub_device_id]):
|
|
|
|
|
|
+ if not all([sub_device_id, conditions, tasks]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
|
|
+ now_time = int(time.time())
|
|
try:
|
|
try:
|
|
|
|
+ if all_day:
|
|
|
|
+ SmartScene.objects.create(user_id=user_id, scene_name=scene_name, conditions=conditions, tasks=tasks,
|
|
|
|
+ created_time=now_time, updated_time=now_time)
|
|
|
|
+ else:
|
|
|
|
+ start_time = request_dict.get('startTime', None)
|
|
|
|
+ end_time = request_dict.get('endTime', None)
|
|
|
|
+ repeat = request_dict.get('repeat', None)
|
|
|
|
+ if not all([start_time, end_time, repeat]):
|
|
|
|
+ return response.json(444)
|
|
|
|
+ effective_time_qs = EffectiveTime.objects.filter(start_time=start_time, end_time=end_time, repeat=repeat).values('id')
|
|
|
|
+ if effective_time_qs.exists():
|
|
|
|
+ effective_time_id = effective_time_qs[0]['id']
|
|
|
|
+ else:
|
|
|
|
+ effective_time_id = EffectiveTime.objects.create(start_time=start_time, end_time=end_time, repeat=repeat).id
|
|
|
|
+ SmartScene.objects.create(user_id=user_id, scene_name=scene_name, conditions=conditions, tasks=tasks,
|
|
|
|
+ effective_time_id=effective_time_id, created_time=now_time, updated_time=now_time)
|
|
return response.json(0)
|
|
return response.json(0)
|
|
except Exception as e:
|
|
except Exception as e:
|
|
return response.json(500, repr(e))
|
|
return response.json(500, repr(e))
|