|
@@ -51,6 +51,8 @@ class GatewaySubDeviceView(View):
|
|
|
return self.update_emergency_status(request_dict, response)
|
|
|
elif operation == 'list': # 获取子设备信息
|
|
|
return self.get_sensor_list(request_dict, response)
|
|
|
+ elif operation == 'device-list': # 获取设备信息
|
|
|
+ return self.get_device_list(request_dict, response)
|
|
|
else:
|
|
|
return response.json(414)
|
|
|
|
|
@@ -106,6 +108,10 @@ class GatewaySubDeviceView(View):
|
|
|
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)
|
|
|
+ if sub_device_qs.exists():
|
|
|
+ return response.json(181)
|
|
|
|
|
|
with transaction.atomic():
|
|
|
sub_device = GatewaySubDevice.objects.create(device_id=device_id, device_type=device_type,
|
|
@@ -566,6 +572,62 @@ class GatewaySubDeviceView(View):
|
|
|
except Exception as e:
|
|
|
return response.json(500, repr(e))
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def get_device_list(request_dict, response):
|
|
|
+ """
|
|
|
+ 获取设备信息
|
|
|
+ @param request_dict: 请求参数
|
|
|
+ @request_dict familyId: 家庭id
|
|
|
+ @param response: 响应对象
|
|
|
+ @return: response
|
|
|
+ """
|
|
|
+ family_id = request_dict.get('familyId', None)
|
|
|
+ room_id = request_dict.get('roomId', None)
|
|
|
+ if not family_id:
|
|
|
+ return response.json(444, {'error param': 'familyId'})
|
|
|
+
|
|
|
+ try:
|
|
|
+ family_room_device_qs = FamilyRoomDevice.objects.filter(family_id=family_id, sub_device=0,
|
|
|
+ device__Type=200).values(
|
|
|
+ 'device_id', 'device__NickName').order_by('-device__data_joined')
|
|
|
+ if room_id:
|
|
|
+ family_room_device_qs = family_room_device_qs.filter(room_id=room_id)
|
|
|
+ device_list = []
|
|
|
+ for item in family_room_device_qs:
|
|
|
+ device_dict = {
|
|
|
+ 'deviceId': item['device_id'],
|
|
|
+ 'deviceType': 200,
|
|
|
+ 'deviceNickName': item['device__NickName'],
|
|
|
+ }
|
|
|
+ sub_device = []
|
|
|
+ family_room_sub_device_qs = FamilyRoomDevice.objects.filter(Q(family_id=family_id), ~Q(sub_device=0),
|
|
|
+ Q(device_id=item['device_id'])).values(
|
|
|
+ 'sub_device', 'room_id').order_by('sort')
|
|
|
+ if family_room_sub_device_qs.exists():
|
|
|
+ for each in family_room_sub_device_qs:
|
|
|
+ room_qs = FamilyRoom.objects.filter(id=each['room_id']).values('name')
|
|
|
+ room_name = room_qs[0]['name'] if room_qs.exists() else ''
|
|
|
+ device_qs = GatewaySubDevice.objects.filter(id=each['sub_device']).values('id', 'nickname',
|
|
|
+ 'device_type',
|
|
|
+ 'src_addr',
|
|
|
+ 'status',
|
|
|
+ 'created_time')
|
|
|
+ if device_qs.exists():
|
|
|
+ sub_device.append({
|
|
|
+ '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,
|
|
|
+ 'familyId': family_id
|
|
|
+ })
|
|
|
+ device_dict['subDevice'] = sub_device
|
|
|
+ device_list.append(device_dict)
|
|
|
+ return response.json(0, device_list)
|
|
|
+ except Exception as e:
|
|
|
+ return response.json(500, repr(e))
|
|
|
#
|
|
|
# ___====-_ _-====___
|
|
|
# _--^^^#####// \\#####^^^--_
|