Эх сурвалжийг харах

修复通知设备修改sos状态问题,删除智能场景通知设备

locky 3 жил өмнө
parent
commit
47b9838c29

+ 25 - 3
Controller/SensorGateway/SmartSceneController.py

@@ -659,11 +659,33 @@ class SmartSceneView(View):
         if not smart_scene_ids:
             return response.json(444, {'error param': 'smartSceneIds'})
         try:
-            SmartScene.objects.filter(id__in=smart_scene_ids.split(',')).delete()
+            smart_scene_id_list = smart_scene_ids.split(',')
+            # 获取序列号
+            smart_scene_id = smart_scene_id_list[0]
+            smart_scene_qs = SmartScene.objects.filter(id=smart_scene_id).values('device_id', 'sub_device_id')
+            device_id = smart_scene_qs[0]['device_id']
+            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']).\
+                    values('device__serial_number')[0]['device__serial_number']
+            topic_name = 'loocam/gateway_sensor/smart_scene/{}'.format(serial_number)
+            with transaction.atomic():
+                SmartScene.objects.filter(id__in=smart_scene_id_list).delete()
+                for smart_scene_id in smart_scene_id_list:
+                    # 通知设备删除场景id
+                    msg = {
+                        'smart_scene_delete': smart_scene_id
+                    }
+                    success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
+                    try:
+                        assert success
+                    except AssertionError:
+                        return response.json(10044)
+                    time.sleep(0.3)
+            return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))
-        else:
-            return response.json(0)
 
     @staticmethod
     def scene_log(request_dict, response):

+ 1 - 1
Controller/SensorGateway/SubDeviceController.py

@@ -458,7 +458,7 @@ class GatewaySubDeviceView(View):
                 # 通知设备修改sos状态
                 msg = {
                     'sos_count': sos_count,     # 该网关下的智能按钮数量
-                    'sensor_src': int(sub_device_qs[0]['src_addr']),
+                    'sensor_src': int(sub_device_qs[0]['src_addr'], 16),
                     'sos_select': emergency_status
                 }
                 success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)