|
@@ -15,7 +15,7 @@ from django.views.generic.base import View
|
|
|
from Ansjer.Config.gatewaySensorConfig import SMART_SCENE_TOPIC
|
|
|
from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
|
|
|
from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
|
|
|
- UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog
|
|
|
+ UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
@@ -174,9 +174,9 @@ class GatewayDeviceView(View):
|
|
|
smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
|
|
|
if smart_scene_qs.exists():
|
|
|
# 通知设备删除场景id
|
|
|
+ smart_scene_info = smart_scene_qs.values('id')
|
|
|
serial_number = device_qs.first().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:
|
|
|
msg = {
|
|
|
'smart_scene_delete': int(smart_scene['id'])
|
|
@@ -188,7 +188,7 @@ class GatewayDeviceView(View):
|
|
|
return response.json(10044)
|
|
|
time.sleep(0.3)
|
|
|
smart_scene_qs.delete()
|
|
|
- gateway_qs.delete() # 删除子设备
|
|
|
+ gateway_qs.delete() # 删除子设备
|
|
|
scene_log_qs = SceneLog.objects.filter(device_id=device_id)
|
|
|
if scene_log_qs.exists():
|
|
|
scene_log_qs.delete()
|
|
@@ -254,41 +254,87 @@ class GatewayDeviceView(View):
|
|
|
device_id = request_dict.get('deviceId', None)
|
|
|
if not device_id:
|
|
|
return response.json(444)
|
|
|
- device_qs = FamilyRoomDevice.objects.filter(device_id=device_id, sub_device=0)
|
|
|
- if not device_qs.exists():
|
|
|
+ device_info_qs = Device_Info.objects.filter(id=device_id).values('id', 'Type', 'NickName', 'UID',
|
|
|
+ 'serial_number')
|
|
|
+ if not device_info_qs.exists():
|
|
|
return response.json(173)
|
|
|
+ device_info_qs = device_info_qs.first()
|
|
|
+ Type = device_info_qs['Type']
|
|
|
try:
|
|
|
- device_qs = device_qs.values('family_id', 'device_id', 'room_id', 'device__Type', 'device__NickName',
|
|
|
- 'device__UID',
|
|
|
- 'device__serial_number')
|
|
|
- device_qs = device_qs.first()
|
|
|
- room_id = device_qs['room_id']
|
|
|
- family_id = device_qs['family_id']
|
|
|
- gateway_room_name = ''
|
|
|
- if room_id:
|
|
|
- room_qs = FamilyRoom.objects.filter(id=room_id)
|
|
|
- gateway_room_name = room_qs.first().name if room_qs.exists() else ''
|
|
|
-
|
|
|
- iot_device_info_qs = iotdeviceInfoModel.objects.filter(
|
|
|
- serial_number=device_qs['device__serial_number'][0:6])
|
|
|
- iot_data = {}
|
|
|
- if iot_device_info_qs.exists():
|
|
|
- iot_device_Info = iot_device_info_qs.values('endpoint', 'token_iot_number')
|
|
|
- iot_data = {
|
|
|
- 'endpoint': iot_device_Info[0]['endpoint'],
|
|
|
- 'token_iot_number': iot_device_Info[0]['token_iot_number']
|
|
|
- }
|
|
|
gateway = {
|
|
|
- 'deviceId': device_qs['device_id'],
|
|
|
- 'deviceType': device_qs['device__Type'],
|
|
|
- 'deviceNickName': device_qs['device__NickName'],
|
|
|
- 'UID': device_qs['device__UID'],
|
|
|
- 'serialNumber': device_qs['device__serial_number'],
|
|
|
- 'roomName': gateway_room_name,
|
|
|
- 'iot': iot_data,
|
|
|
- 'roomId': room_id,
|
|
|
- 'familyId': family_id
|
|
|
+ 'deviceId': device_info_qs['id'],
|
|
|
+ 'deviceType': device_info_qs['Type'],
|
|
|
+ 'deviceNickName': device_info_qs['NickName'],
|
|
|
+ 'UID': device_info_qs['UID'],
|
|
|
+ 'serialNumber': device_info_qs['serial_number'][:6] if device_info_qs['serial_number'][:6] else '',
|
|
|
+ 'power': '',
|
|
|
+ 'electricity': '',
|
|
|
+ 'accumulatedTime': '',
|
|
|
+ 'socketStatus': False,
|
|
|
+ 'online': False,
|
|
|
+ 'countDownTime': '',
|
|
|
+ 'roomName': '',
|
|
|
+ 'iot': {},
|
|
|
+ 'roomId': '',
|
|
|
+ 'familyId': ''
|
|
|
}
|
|
|
+ # 判斷设备类型
|
|
|
+ if Type != 201:
|
|
|
+ device_qs = FamilyRoomDevice.objects.filter(device_id=device_id, sub_device=0)
|
|
|
+ if not device_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ device_qs = device_qs.values('family_id', 'device_id', 'room_id', 'device__Type', 'device__NickName',
|
|
|
+ 'device__UID',
|
|
|
+ 'device__serial_number')
|
|
|
+ device_qs = device_qs.first()
|
|
|
+ # 獲取房间Id家庭Id
|
|
|
+ gateway['roomId'] = device_qs['room_id']
|
|
|
+ gateway['familyId'] = device_qs['family_id']
|
|
|
+ if gateway['roomId']:
|
|
|
+ room_qs = FamilyRoom.objects.filter(id=gateway['roomId'])
|
|
|
+ gateway['roomName'] = room_qs.first().name if room_qs.exists() else ''
|
|
|
+
|
|
|
+ iot_device_info_qs = iotdeviceInfoModel.objects.filter(
|
|
|
+ serial_number=device_qs['device__serial_number'][0:6])
|
|
|
+ if iot_device_info_qs.exists():
|
|
|
+ iot_device_Info = iot_device_info_qs.values('endpoint', 'token_iot_number')
|
|
|
+ gateway['iot'] = {
|
|
|
+ 'endpoint': iot_device_Info[0]['endpoint'],
|
|
|
+ 'token_iot_number': iot_device_Info[0]['token_iot_number']
|
|
|
+ }
|
|
|
+ else:
|
|
|
+ socket_info_qs = SocketInfo.objects.filter(device_id=device_id).values('online', 'type_switch',
|
|
|
+ 'status',
|
|
|
+ 'count_down_time')
|
|
|
+ socket_power_qs = SocketPowerStatistics.objects.filter(device_id=device_id).values('accumulated_time',
|
|
|
+ 'power',
|
|
|
+ 'electricity')
|
|
|
+ if not socket_info_qs.exists():
|
|
|
+ return response.json(173)
|
|
|
+ # 插座电量统计
|
|
|
+ gateway['power'] = socket_power_qs[0]['power'] if socket_power_qs.exists() else 0.00
|
|
|
+ gateway['electricity'] = socket_power_qs[0]['electricity'] if socket_power_qs.exists() else 0.00
|
|
|
+ gateway['accumulatedTime'] = socket_power_qs[0][
|
|
|
+ 'accumulated_time'] if socket_power_qs.exists() else '0:00'
|
|
|
+ # 插座信息
|
|
|
+ gateway['socketStatus'] = socket_info_qs[0]['status'] if socket_info_qs[0]['status'] else False
|
|
|
+ gateway['online'] = socket_info_qs[0]['online'] if socket_info_qs[0]['online'] else False
|
|
|
+ gateway['accumulatedTime'] = socket_info_qs[0]['count_down_time'] if socket_info_qs[0][
|
|
|
+ 'count_down_time'] else '00:00:00'
|
|
|
+ # 查詢iot
|
|
|
+ iot_device_info_qs = iotdeviceInfoModel.objects.filter(
|
|
|
+ serial_number=device_info_qs['serial_number'][0:6])
|
|
|
+ if iot_device_info_qs.exists():
|
|
|
+ iot_device_Info = iot_device_info_qs.values('endpoint', 'token_iot_number')
|
|
|
+ gateway['iot_data'] = {
|
|
|
+ 'endpoint': iot_device_Info[0]['endpoint'] if iot_device_Info[0]['endpoint'] else '',
|
|
|
+ 'token_iot_number': iot_device_Info[0]['token_iot_number'] if iot_device_Info[0][
|
|
|
+ 'token_iot_number'] else ''
|
|
|
+ }
|
|
|
+ # 設備類型
|
|
|
+ res = {'gateway': gateway, 'sub_device': [], 'sub_device_count': 0,
|
|
|
+ 'scene_count': 0}
|
|
|
+ return response.json(0, res)
|
|
|
family_device_qs = FamilyRoomDevice.objects.filter(device_id=device_id)
|
|
|
family_device_qs = family_device_qs.filter(~Q(sub_device=0)).order_by('-created_time')
|
|
|
|
|
@@ -320,7 +366,7 @@ class GatewayDeviceView(View):
|
|
|
'roomName': gateway_room_name,
|
|
|
'roomId': room_qs.first().id if room_qs.exists() else 0,
|
|
|
'ieeeAddr': gateway_sub_qs['ieee_addr'],
|
|
|
- 'familyId': family_id,
|
|
|
+ 'familyId': gateway['familyId'],
|
|
|
})
|
|
|
scene_count = SmartScene.objects.filter(Q(device_id=device_id) | Q(sub_device_id__in=sub_id_list)).count()
|
|
|
res = {'gateway': gateway, 'sub_device': sub_device, 'sub_device_count': len(sub_device),
|