|
@@ -443,38 +443,32 @@ class GatewaySubDeviceView(View):
|
|
|
return response.json(444, {'error param': 'gatewaySubId or emergency_status'})
|
|
|
|
|
|
try:
|
|
|
- with transaction.atomic():
|
|
|
- # 更新智能按钮开关状态
|
|
|
- sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id)
|
|
|
- if not sub_device_qs.exists():
|
|
|
- response.json(173)
|
|
|
- sub_device_qs.update(status=emergency_status)
|
|
|
-
|
|
|
- # 更新智能按钮场景状态
|
|
|
- if emergency_status == '0':
|
|
|
- smart_scene_status = 0
|
|
|
- else:
|
|
|
- smart_scene_status = 1
|
|
|
- smart_scene_qs = SmartScene.objects.filter(sub_device_id=sub_device_id)
|
|
|
- if not smart_scene_qs:
|
|
|
- return response.json(173)
|
|
|
- smart_scene_qs.update(is_enable=smart_scene_status)
|
|
|
-
|
|
|
- # 通过mqtt发送设备数据
|
|
|
- sub_device_qs = sub_device_qs.values('device__serial_number')
|
|
|
+ emergency_status = int(emergency_status)
|
|
|
+ sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id)
|
|
|
if not sub_device_qs.exists():
|
|
|
- return response.json(173)
|
|
|
- serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
- thing_name = serial_number
|
|
|
- topic_name = 'loocam/gateway_sensor/smart_scene/{}'.format(serial_number)
|
|
|
- for item in smart_scene_qs:
|
|
|
- msg = {
|
|
|
- 'scene_id': item.id,
|
|
|
- 'scene_status': item.is_enable
|
|
|
- }
|
|
|
-
|
|
|
- success = CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg)
|
|
|
- time.sleep(0.3)
|
|
|
+ response.json(173)
|
|
|
+ with transaction.atomic():
|
|
|
+ # 更新智能按钮紧急开关状态
|
|
|
+ sub_device_qs.update(is_tampered=emergency_status)
|
|
|
+
|
|
|
+ # 如果打开紧急开关,关闭已开启的场景
|
|
|
+ if emergency_status == 1:
|
|
|
+ smart_scene_qs = SmartScene.objects.filter(sub_device_id=sub_device_id, is_enable=True)
|
|
|
+ if not smart_scene_qs.exists():
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+ # 通过mqtt发送设备数据
|
|
|
+ sub_device_qs = sub_device_qs.values('device__serial_number')
|
|
|
+ serial_number = sub_device_qs[0]['device__serial_number']
|
|
|
+ topic_name = 'loocam/gateway_sensor/smart_scene/{}'.format(serial_number)
|
|
|
+ for smart_scene in smart_scene_qs:
|
|
|
+ msg = {
|
|
|
+ 'scene_id': smart_scene.id,
|
|
|
+ 'scene_status': 0
|
|
|
+ }
|
|
|
+ CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+ time.sleep(0.3)
|
|
|
+ smart_scene_qs.update(is_enable=False)
|
|
|
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|