Browse Source

删除设备通知设备删除场景id

locky 3 years ago
parent
commit
003156ec39

+ 60 - 8
Controller/SensorGateway/GatewayDeviceController.py

@@ -6,6 +6,8 @@
 @Email   : zhangdongming@asj6.wecom.work
 @Software: PyCharm
 """
+import time
+
 from django.db import transaction
 from django.db.models import Q
 from django.views.generic.base import View
@@ -163,6 +165,20 @@ class GatewayDeviceView(View):
                             uid_set_qs.delete()
                         smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
                         if smart_scene_qs.exists():
+                            # 通知设备删除场景id
+                            serial_number = device_qs.first().serial_number
+                            topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
+                            smart_scene_info = smart_scene_qs.values('id')
+                            for smart_scene in smart_scene_info:
+                                msg = {
+                                    'smart_scene_delete': int(smart_scene['id'])
+                                }
+                                success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg, 0)
+                                try:
+                                    assert success
+                                except AssertionError:
+                                    return response.json(10044)
+                                time.sleep(0.3)
                             smart_scene_qs.delete()
                         scene_log_qs = SceneLog.objects.filter(device_id=device_id)
                         if scene_log_qs.exists():
@@ -174,18 +190,21 @@ class GatewayDeviceView(View):
                     for item in sub_ids:
                         sub_id = int(item)
                         ids.append(sub_id)
-                        # 删除智能按钮通知设备
-                        sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id).values('device_type',
-                                                                                          'device__serial_number',
-                                                                                          'src_addr')
+                        sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id).values('device_type', 'src_addr',
+                                                                                          'device__serial_number')
+                        serial_number = sub_device_qs[0]['device__serial_number']
+                        topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
                         device_type = sub_device_qs[0]['device_type']
-                        if device_type == 216:
-                            serial_number = sub_device_qs[0]['device__serial_number']
-                            topic_name = SMART_SCENE_TOPIC_NAME.format(serial_number)
+                        if device_type == 216:  # 删除智能按钮通知设备
                             msg = {
                                 'sos_delete': int(sub_device_qs[0]['src_addr'], 16)
                             }
-                            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:
+                                return response.json(10044)
+                            time.sleep(0.3)
                     family_device_qs = FamilyRoomDevice.objects.filter(sub_device__in=ids)
                     if family_device_qs.exists():
                         family_device_qs.delete()
@@ -194,6 +213,18 @@ class GatewayDeviceView(View):
                         gateway_sub_qs.delete()
                     smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=ids)
                     if smart_scene_qs.exists():
+                        smart_scene_info = smart_scene_qs.values('id')
+                        for smart_scene in smart_scene_info:
+                            # 通知设备删除场景id
+                            msg = {
+                                'smart_scene_delete': int(smart_scene['id'])
+                            }
+                            success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg, 0)
+                            try:
+                                assert success
+                            except AssertionError:
+                                return response.json(10044)
+                            time.sleep(0.3)
                         smart_scene_qs.delete()
                     scene_log_qs = SceneLog.objects.filter(sub_device_id__in=ids)
                     if scene_log_qs.exists():
@@ -290,3 +321,24 @@ class GatewayDeviceView(View):
         except Exception as e:
             print(e.args)
             return response.json(500)
+
+#
+#                   ___====-_  _-====___
+#             _--^^^#####//      \\#####^^^--_
+#          _-^##########// (    ) \\##########^-_
+#         -############//  |\^^/|  \\############-
+#       _/############//   (@::@)   \\############\_
+#      /#############((     \\//     ))#############\
+#     -###############\\    (oo)    //###############-
+#    -#################\\  / VV \  //#################-
+#   -###################\\/      \//###################-
+#  _#/|##########/\######(   /\   )######/\##########|\#_
+#  |/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
+#  `  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
+#     `   `  `      `   / | |  | | \   '      '  '   '
+#                      (  | |  | |  )
+#                     __\ | |  | | /__
+#                    (vvv(VVV)(VVV)vvv)
+#                         神兽保佑
+#                        代码无BUG!
+#

+ 21 - 0
Controller/SensorGateway/SmartSceneController.py

@@ -887,3 +887,24 @@ class SmartSceneView(View):
             return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))
+
+#
+#                   ___====-_  _-====___
+#             _--^^^#####//      \\#####^^^--_
+#          _-^##########// (    ) \\##########^-_
+#         -############//  |\^^/|  \\############-
+#       _/############//   (@::@)   \\############\_
+#      /#############((     \\//     ))#############\
+#     -###############\\    (oo)    //###############-
+#    -#################\\  / VV \  //#################-
+#   -###################\\/      \//###################-
+#  _#/|##########/\######(   /\   )######/\##########|\#_
+#  |/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
+#  `  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
+#     `   `  `      `   / | |  | | \   '      '  '   '
+#                      (  | |  | |  )
+#                     __\ | |  | | /__
+#                    (vvv(VVV)(VVV)vvv)
+#                         神兽保佑
+#                        代码无BUG!
+#

+ 21 - 0
Controller/SensorGateway/SubDeviceController.py

@@ -507,3 +507,24 @@ class GatewaySubDeviceView(View):
             return response.json(0)
         except Exception as e:
             return response.json(500, repr(e))
+
+#
+#                   ___====-_  _-====___
+#             _--^^^#####//      \\#####^^^--_
+#          _-^##########// (    ) \\##########^-_
+#         -############//  |\^^/|  \\############-
+#       _/############//   (@::@)   \\############\_
+#      /#############((     \\//     ))#############\
+#     -###############\\    (oo)    //###############-
+#    -#################\\  / VV \  //#################-
+#   -###################\\/      \//###################-
+#  _#/|##########/\######(   /\   )######/\##########|\#_
+#  |/ |#/\#/\#/\/  \#/\##\  |  |  /##/\#/  \/\#/\#/\#| \|
+#  `  |/  V  V  `   V  \#\| |  | |/#/  V   '  V  V  \|  '
+#     `   `  `      `   / | |  | | \   '      '  '   '
+#                      (  | |  | |  )
+#                     __\ | |  | | /__
+#                    (vvv(VVV)(VVV)vvv)
+#                         神兽保佑
+#                        代码无BUG!
+#