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

查询子设备首页信息返回温湿度数据

locky 3 жил өмнө
parent
commit
d36c7324c8

+ 17 - 3
Controller/SensorGateway/SubDeviceController.py

@@ -389,15 +389,29 @@ class GatewaySubDeviceView(View):
             return response.json(444, {'error param': 'gatewaySubId'})
 
         try:
-            sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('status', 'is_tampered')
+            sub_device_qs = GatewaySubDevice.objects.filter(id=sub_device_id).values('device_type', 'status',
+                                                                                     'is_tampered')
             if not sub_device_qs.exists():
                 return response.json(173)
             scene_count = SmartScene.objects.filter(sub_device_id=sub_device_id).count()
             res = {
                 'scene_count': scene_count,
-                'status': sub_device_qs[0]['status'],
-                'is_tampered': sub_device_qs[0]['is_tampered']
+                'status': sub_device_qs[0]['status']
             }
+
+            device_type = sub_device_qs[0]['device_type']
+            if device_type == 215 or device_type == 218 or device_type == 219:    # 门磁,烟雾,人体传感器返回拆动状态
+                res['is_tampered'] = sub_device_qs[0]['is_tampered']
+            elif device_type == 220:  # 温湿度传感器返回温湿度数据
+                tem_record_qs = SensorRecord.objects.filter(gateway_sub_device_id=sub_device_id, event_type=18).\
+                    order_by('-created_time').values('alarm')
+                hum_record_qs = SensorRecord.objects.filter(gateway_sub_device_id=sub_device_id, event_type=19).\
+                    order_by('-created_time').values('alarm')
+                temperature = tem_record_qs[0]['alarm'] if tem_record_qs.exists() else ''
+                humidity = hum_record_qs[0]['alarm'] if tem_record_qs.exists() else ''
+                res['temperature'] = temperature
+                res['humidity'] = humidity
+
             return response.json(0, res)
         except Exception as e:
             return response.json(500, repr(e))