|
@@ -8,11 +8,11 @@ import time
|
|
|
from collections import OrderedDict
|
|
|
|
|
|
from django.db import transaction
|
|
|
-from django.db.models import Count
|
|
|
+from django.db.models import Count, Q
|
|
|
from django.views import View
|
|
|
|
|
|
from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC, SENSOR_TYPE, EVENT_TYPE
|
|
|
-from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice, SensorRecord, SmartScene, SceneLog
|
|
|
+from Model.models import Device_Info, GatewaySubDevice, FamilyRoomDevice, SensorRecord, SmartScene, SceneLog, FamilyRoom
|
|
|
from Service.CommonService import CommonService
|
|
|
|
|
|
|
|
@@ -49,6 +49,8 @@ class GatewaySubDeviceView(View):
|
|
|
return self.sensor_home_info(request_dict, response)
|
|
|
elif operation == 'update-emergency-status': # 更新智能按钮紧急开关状态
|
|
|
return self.update_emergency_status(request_dict, response)
|
|
|
+ elif operation == 'list': # 获取子设备信息
|
|
|
+ return self.get_sensor_list(request_dict, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -522,6 +524,44 @@ class GatewaySubDeviceView(View):
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def get_sensor_list(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取子设备信息
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict familyId: 家庭id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ family_id = request_dict.get('familyId', None)
|
|
|
+ if not family_id:
|
|
|
+ return response.json(444, {'error param': 'family_id'})
|
|
|
+
|
|
|
+ try:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(Q(family_id=family_id), ~Q(sub_device=0)).values(
|
|
|
+ 'sub_device', 'room_id').order_by('sort')
|
|
|
+ device_list = []
|
|
|
+ for item in family_room_device_qs:
|
|
|
+ room_qs = FamilyRoom.objects.filter(id=item['room_id']).values('name')
|
|
|
+ room_name = room_qs[0]['name'] if room_qs.exists() else ''
|
|
|
+ device_qs = GatewaySubDevice.objects.filter(id=item['sub_device']).values('id', 'nickname',
|
|
|
+ 'device_type', 'src_addr',
|
|
|
+ 'status', 'created_time')
|
|
|
+ if device_qs.exists():
|
|
|
+ res = {
|
|
|
+ 'gatewaySubId': device_qs[0]['id'],
|
|
|
+ 'nickName': device_qs[0]['nickname'],
|
|
|
+ 'deviceType': device_qs[0]['device_type'],
|
|
|
+ 'srcAddr': device_qs[0]['src_addr'],
|
|
|
+ 'status': device_qs[0]['status'],
|
|
|
+ 'createdTime': device_qs[0]['created_time'],
|
|
|
+ 'roomName': room_name
|
|
|
+ }
|
|
|
+ device_list.append(res)
|
|
|
+ return response.json(0, device_list)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
+
|
|
|
#
|
|
|
# ___====-_ _-====___
|
|
|
# _--^^^#####// \\#####^^^--_
|