|
@@ -12,7 +12,7 @@ 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, GET_SCENE_TOPIC_NAME
|
|
|
+from Ansjer.config import SMART_SCENE_TOPIC_NAME
|
|
|
from Model.models import FamilyRoomDevice, GatewaySubDevice, FamilyRoom, SmartScene, EffectiveTime, Device_Info, \
|
|
|
SceneLog
|
|
|
from Object.ResponseObject import ResponseObject
|
|
@@ -671,7 +671,7 @@ class SmartSceneView(View):
|
|
|
if device_id:
|
|
|
serial_number = Device_Info.objects.filter(id=device_id).values('serial_number')[0]['serial_number']
|
|
|
else:
|
|
|
- serial_number = GatewaySubDevice.objects.filter(id=smart_scene_qs[0]['sub_device_id']).\
|
|
|
+ serial_number = GatewaySubDevice.objects.filter(id=smart_scene_qs[0]['sub_device_id']). \
|
|
|
values('device__serial_number')[0]['device__serial_number']
|
|
|
topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
|
|
|
with transaction.atomic():
|
|
@@ -802,17 +802,24 @@ class SmartSceneView(View):
|
|
|
return response.json(444, {'error param': 'serial_number'})
|
|
|
|
|
|
try:
|
|
|
- device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('userID_id')
|
|
|
+ device_info_qs = Device_Info.objects.filter(serial_number=serial_number).values('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')
|
|
|
+ device_id = device_info_qs[0]['id']
|
|
|
+ sub_device_id_list = GatewaySubDevice.objects.filter(device_id=device_id).values_list('id', flat=True)
|
|
|
+ if sub_device_id_list:
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(
|
|
|
+ Q(device_id=device_id) | Q(sub_device_id__in=sub_device_id_list))
|
|
|
+ else:
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
|
|
|
if not smart_scene_qs.exists():
|
|
|
return response.json(173)
|
|
|
|
|
|
- topic_name = GET_SCENE_TOPIC_NAME.format(serial_number)
|
|
|
+ smart_scene_qs = smart_scene_qs.values('device_data')
|
|
|
+ topic_name = SMART_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)
|
|
|
+ success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg, 0)
|
|
|
try:
|
|
|
assert success
|
|
|
except AssertionError:
|