Forráskód Böngészése

修改添加查询删除网关设备接口

locky 2 éve
szülő
commit
7be0a6a703

+ 20 - 31
Controller/SensorGateway/GatewayDeviceController.py

@@ -14,7 +14,7 @@ from django.db import transaction
 from django.db.models import Q
 from django.views.generic.base import View
 
-from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
+from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SCENE_EVENT_DELETE
 from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_ACCESS_CHINA_SECRET, \
     AWS_IOT_SES_ACCESS_CHINA_REGION, AWS_IOT_SES_ACCESS_FOREIGN_ID, AWS_IOT_SES_ACCESS_FOREIGN_SECRET, \
     AWS_IOT_SES_ACCESS_FOREIGN_REGION_AMERICA
@@ -216,7 +216,8 @@ class GatewayDeviceView(View):
                             topic_name = SMART_SCENE_TOPIC.format(serial_number)
                             for smart_scene in smart_scene_info:
                                 msg = {
-                                    'smart_scene_delete': int(smart_scene['id'])
+                                    'scene_event': SCENE_EVENT_DELETE,
+                                    'scene_id': int(smart_scene['id'])
                                 }
                                 success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
                                 try:
@@ -232,38 +233,30 @@ class GatewayDeviceView(View):
                         device_qs.delete()
                 elif sub_ids:
                     sub_ids = sub_ids.split(',')
-                    ids = []
-                    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', 'src_addr',
-                                                                                          'device__serial_number')
-                        serial_number = sub_device_qs[0]['device__serial_number']
-                        topic_name = SMART_SCENE_TOPIC.format(serial_number)
-                        device_type = sub_device_qs[0]['device_type']
-                        if device_type == 216:  # 删除智能按钮通知设备
-                            msg = {
-                                'sos_delete': int(sub_device_qs[0]['src_addr'], 16)
-                            }
-                            success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
-                            try:
-                                assert success
-                            except AssertionError:
-                                return response.json(10044)
-                            time.sleep(0.3)
-                    family_device_qs = FamilyRoomDevice.objects.filter(sub_device__in=ids)
+                    sub_id_list = []
+                    for sub_id in sub_ids:
+                        sub_id_list.append(int(sub_id))
+
+                    family_device_qs = FamilyRoomDevice.objects.filter(sub_device__in=sub_id_list)
                     if family_device_qs.exists():
                         family_device_qs.delete()
-                    gateway_sub_qs = GatewaySubDevice.objects.filter(id__in=ids)
+                    gateway_sub_qs = GatewaySubDevice.objects.filter(id__in=sub_id_list)
                     if gateway_sub_qs.exists():
                         gateway_sub_qs.delete()
-                    smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=ids)
+                    smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=sub_id_list)
                     if smart_scene_qs.exists():
+                        # 查询网关序列号,确定MQTT主题
+                        sub_device_qs = GatewaySubDevice.objects.filter(id=sub_id_list[0]).\
+                            values('device__serial_number')
+                        serial_number = sub_device_qs[0]['device__serial_number']
+                        topic_name = SMART_SCENE_TOPIC.format(serial_number)
+
                         smart_scene_info = smart_scene_qs.values('id')
                         for smart_scene in smart_scene_info:
                             # 通知设备删除场景id
                             msg = {
-                                'smart_scene_delete': int(smart_scene['id'])
+                                'scene_event': SCENE_EVENT_DELETE,
+                                'scene_id': int(smart_scene['id'])
                             }
                             success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
                             try:
@@ -272,7 +265,7 @@ class GatewayDeviceView(View):
                                 return response.json(10044)
                             time.sleep(0.3)
                         smart_scene_qs.delete()
-                    scene_log_qs = SceneLog.objects.filter(sub_device_id__in=ids)
+                    scene_log_qs = SceneLog.objects.filter(sub_device_id__in=sub_id_list)
                     if scene_log_qs.exists():
                         scene_log_qs.delete()
                 return response.json(0)
@@ -388,10 +381,7 @@ class GatewayDeviceView(View):
                     sub_id = item['sub_device']
                     sub_id_list.append(sub_id)
                     gateway_sub_qs = GatewaySubDevice.objects.filter(device_id=device_id, id=sub_id).values(
-                        'id', 'device_type',
-                        'nickname',
-                        'src_addr', 'status',
-                        'created_time', 'ieee_addr')
+                        'id', 'device_type', 'nickname', 'status', 'created_time', 'ieee_addr')
                     if not gateway_sub_qs.exists():
                         continue
                     room_id = item['room_id']
@@ -402,7 +392,6 @@ class GatewayDeviceView(View):
                         'gatewaySubId': gateway_sub_qs['id'],
                         'nickName': gateway_sub_qs['nickname'],
                         'deviceType': gateway_sub_qs['device_type'],
-                        'srcAddr': gateway_sub_qs['src_addr'],
                         'status': gateway_sub_qs['status'],
                         'createdTime': gateway_sub_qs['created_time'],
                         'roomName': gateway_room_name,

+ 2 - 5
Controller/SensorGateway/SubDeviceController.py

@@ -65,7 +65,6 @@ class GatewaySubDeviceView(View):
         @request_dict deviceType: 设备类型
         @request_dict nickName: 设备名
         @request_dict ieeeAddr: 长地址
-        @request_dict srcAddr: 短地址
         @request_dict mac: mac地址
         @request_dict deviceModel: 设备型号
         @request_dict manufacturer: 制造商
@@ -82,7 +81,6 @@ class GatewaySubDeviceView(View):
         device_type = int(request_dict.get('deviceType', None))
         nickname = request_dict.get('nickName', None)
         ieee_addr = request_dict.get('ieeeAddr', None)
-        src_addr = request_dict.get('srcAddr', None)
         mac = request_dict.get('mac', '')
         device_model = request_dict.get('deviceModel', '')
         manufacturer = request_dict.get('manufacturer', '')
@@ -93,7 +91,7 @@ class GatewaySubDeviceView(View):
         family_id = request_dict.get('familyId', None)
         room_id = request_dict.get('roomId', 0)
 
-        if not all([serial_number, device_type, nickname, src_addr, family_id]):
+        if not all([serial_number, device_type, nickname, family_id]):
             return response.json(444)
         now_time = int(time.time())
         is_tampered = 1 if device_type == SENSOR_TYPE['smart_button'] else 0  # 智能按钮默认开启紧急开关
@@ -106,7 +104,6 @@ class GatewaySubDeviceView(View):
             # 查询是否已添加过该子设备
             sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id, ieee_addr=ieee_addr)
             if sub_device_qs.exists():
-                sub_device_qs.update(src_addr=src_addr)  # 更新短地址
                 return response.json(174)
             if device_type == SENSOR_TYPE['smart_button']:
                 sub_device_qs = GatewaySubDevice.objects.filter(device_id=device_id, device_type=device_type)
@@ -115,7 +112,7 @@ class GatewaySubDeviceView(View):
 
             with transaction.atomic():
                 sub_device = GatewaySubDevice.objects.create(device_id=device_id, device_type=device_type,
-                                                             nickname=nickname, ieee_addr=ieee_addr, src_addr=src_addr,
+                                                             nickname=nickname, ieee_addr=ieee_addr,
                                                              status=1, mac=mac, device_model=device_model,
                                                              manufacturer=manufacturer, sensor_serial=sensor_serial,
                                                              firmware_version=firmware_version, is_tampered=is_tampered,