|
@@ -12,9 +12,10 @@ from django.db import transaction
|
|
|
from django.db.models import F, Q, Count
|
|
|
from django.views import View
|
|
|
|
|
|
-from Ansjer.config import SMART_SCENE_TOPIC_NAME
|
|
|
+from Ansjer.config import SMART_SCENE_TOPIC_NAME, GET_SCENE_TOPIC_NAME
|
|
|
from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime, Device_Info, \
|
|
|
SceneLog
|
|
|
+from Object.ResponseObject import ResponseObject
|
|
|
from Service.CommonService import CommonService
|
|
|
|
|
|
|
|
@@ -30,6 +31,8 @@ class SmartSceneView(View):
|
|
|
return self.validation(request.POST, request, operation)
|
|
|
|
|
|
def validation(self, request_dict, request, operation):
|
|
|
+ if operation == 'get-scene': # 设备获取智能场景数据
|
|
|
+ return self.get_scene_data(request_dict, ResponseObject('cn'))
|
|
|
token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
|
|
|
if token_code != 0:
|
|
|
return response.json(token_code)
|
|
@@ -783,3 +786,38 @@ class SmartSceneView(View):
|
|
|
return response.json(0, log_date_list)
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
+
|
|
|
+ @staticmethod
|
|
|
+ def get_scene_data(request_dict, response):
|
|
|
+ """
|
|
|
+ 设备获取智能场景数据
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict serial_number: 序列号
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ serial_number = request_dict.get('serial_number', None)
|
|
|
+
|
|
|
+ if not serial_number:
|
|
|
+ return response.json(444, {'error param': 'serial_number'})
|
|
|
+
|
|
|
+ try:
|
|
|
+ device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID_id')
|
|
|
+ if not device_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(user_id=device_info_qs[0]['userID_id']).values('device_data')
|
|
|
+ if not smart_scene_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+
|
|
|
+ topic_name = GET_SCENE_TOPIC_NAME.format(serial_number)
|
|
|
+ for smart_scene in smart_scene_qs:
|
|
|
+ msg = eval(smart_scene['device_data'])
|
|
|
+ success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+ try:
|
|
|
+ assert success
|
|
|
+ except AssertionError:
|
|
|
+ return response.json(10044)
|
|
|
+ time.sleep(1)
|
|
|
+ return response.json(0)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|