Explorar o código

修改更新智能按钮紧急开关状态下发数据内容

locky %!s(int64=2) %!d(string=hai) anos
pai
achega
e7c6e88648

+ 1 - 0
Ansjer/Config/gatewaySensorConfig.py

@@ -16,6 +16,7 @@ SCENE_EVENT_CREATE = 1
 SCENE_EVENT_EDIT = 2
 SCENE_EVENT_DELETE = 3
 SCENE_EVENT_EDIT_STATUS = 4
+SCENE_EVENT_SOS = 5
 
 # 智能场景状态
 SCENE_STATUS_ON = 1

+ 7 - 28
Controller/SensorGateway/SubDeviceController.py

@@ -11,7 +11,7 @@ from django.db import transaction
 from django.db.models import Count, Q
 from django.views import View
 
-from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SENSOR_TYPE, EVENT_TYPE
+from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SENSOR_TYPE, EVENT_TYPE, SCENE_EVENT_SOS
 from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice, SensorRecord, SmartScene, SceneLog, FamilyRoom
 from Service.CommonService import CommonService
 from Object.ResponseObject import ResponseObject
@@ -493,43 +493,22 @@ class GatewaySubDeviceView(View):
                 gateway_sub_device_qs = GatewaySubDevice.objects.filter(device_id=sub_device_qs[0]['device_id'],
                                                                         device_type=SENSOR_TYPE['smart_button']).values(
                     'ieee_addr')
-                sos_count = gateway_sub_device_qs.count()
-                sos_num = 1
-                for index, gateway_sub_device in enumerate(gateway_sub_device_qs):
-                    if sub_device_qs[0]['ieee_addr'] == gateway_sub_device['ieee_addr']:
-                        sos_num += index
+
                 # 通知设备修改sos状态
                 msg = {
-                    'sos_count': sos_count,  # 该网关下的智能按钮数量
-                    'sos_num': sos_num,  # 第几个按钮
-                    'sensor_ieee_addr': sub_device_qs[0]['ieee_addr'],
-                    'sos_select': emergency_status
+                    'scene_event': SCENE_EVENT_SOS,
+                    'ieee_addr': sub_device_qs[0]['ieee_addr'],
+                    'sos': emergency_status
                 }
                 success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
                 try:
                     assert success
                 except AssertionError:
                     return response.json(10044)
-                time.sleep(0.3)
+
                 # 如果打开紧急开关,关闭已开启的场景
                 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)
-                    for smart_scene in smart_scene_qs:
-                        # 通知设备关闭场景
-                        msg = {
-                            'scene_id': smart_scene.id,
-                            'scene_status': 0
-                        }
-                        success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
-                        try:
-                            assert success
-                        except AssertionError:
-                            return response.json(10044)
-                        time.sleep(0.3)
-                    smart_scene_qs.update(is_enable=False)
-
+                    SmartScene.objects.filter(sub_device_id=sub_device_id, is_enable=True).update(is_enable=False)
             return response.json(0)
         except Exception as e:
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))