ソースを参照

更新测试服网关代码

locky 1 年間 前
コミット
b3b1288289

+ 10 - 4
Controller/SensorGateway/SmartSceneController.py

@@ -256,6 +256,12 @@ class SmartSceneView(View):
                 if not sub_device_id:
                     return response.json(444, {'error param': 'subDeviceId'})
 
+                # 查询数据
+                sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).\
+                    values('device__serial_number', 'ieee_addr', 'is_tampered')
+                if not sub_device_qs.exists():
+                    return response.json(173)
+
                 if cls.time_conflict(sub_device_id, conditions, is_all_day, request_dict):
                     return response.json(182)
 
@@ -268,6 +274,10 @@ class SmartSceneView(View):
                     if smart_scene_qs.exists():
                         return response.json(180)
 
+                    # 紧急按钮打开时,创建的场景状态默认为关闭
+                    if sub_device_qs[0]['is_tampered'] == 1:
+                        smart_scene_dict['is_enable'] = False
+
                 # 温湿度传感器返回温湿度
                 elif device_type == SENSOR_TYPE['tem_hum_sensor']:
                     event_values = conditions_dict['sensor']['eventValues'][0]
@@ -281,10 +291,6 @@ class SmartSceneView(View):
                     msg['sensor_data'] = float(value)
 
                 smart_scene_dict['sub_device_id'] = sub_device_id
-                sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device__serial_number',
-                                                                                         'ieee_addr')
-                if not sub_device_qs.exists():
-                    return response.json(173)
                 serial_number = sub_device_qs[0]['device__serial_number']
 
                 msg['sensor_type'] = int(conditions_dict['sensor']['device_type'])

+ 6 - 6
Controller/SensorGateway/SubDeviceController.py

@@ -156,11 +156,9 @@ class GatewaySubDeviceView(View):
         if not all([sub_device_id]):
             return response.json(444)
         try:
-            gateway_sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('manufacturer',
-                                                                                             'device_model',
-                                                                                             'mac', 'sensor_serial',
-                                                                                             'device_type',
-                                                                                             'is_tampered')
+            gateway_sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).\
+                values('manufacturer', 'device_model', 'mac', 'sensor_serial', 'device_type', 'is_tampered',
+                       'firmware_version', 'hardware_version')
             if not gateway_sub_device_qs.exists():
                 return response.json(173)
             res = {
@@ -168,6 +166,8 @@ class GatewaySubDeviceView(View):
                 'device_model': gateway_sub_device_qs[0]['device_model'],
                 'mac': gateway_sub_device_qs[0]['mac'],
                 'sensor_serial': gateway_sub_device_qs[0]['sensor_serial'],
+                'firmware_version': gateway_sub_device_qs[0]['firmware_version'],
+                'hardware_version': gateway_sub_device_qs[0]['hardware_version'],
             }
             if gateway_sub_device_qs[0]['device_type'] == SENSOR_TYPE['smart_button']:  # 智能按钮返回紧急开关状态
                 res['emergency_status'] = gateway_sub_device_qs[0]['is_tampered']
@@ -634,9 +634,9 @@ class GatewaySubDeviceView(View):
                 sub_device_id = gateway_sub_device_qs.values('id')[0]['id']
                 # 删除设备信息,场景信息,场景日志
                 with transaction.atomic():
-                    gateway_sub_device_qs.delete()
                     SmartScene.objects.filter(sub_device_id=sub_device_id).delete()
                     SceneLog.objects.filter(sub_device_id=sub_device_id).delete()
+                    gateway_sub_device_qs.delete()
             else:
                 GatewaySubDevice.objects.filter(ieee_addr=ieee_addr).update(status=online)
             return response.json(0)