|
@@ -7,6 +7,7 @@
|
|
|
@Software: PyCharm
|
|
|
"""
|
|
|
import datetime
|
|
|
+import threading
|
|
|
import time
|
|
|
|
|
|
import requests
|
|
@@ -29,6 +30,7 @@ from Object.RedisObject import RedisObject
|
|
|
from Object.ResponseObject import ResponseObject
|
|
|
from Object.TokenObject import TokenObject
|
|
|
from Service.CommonService import CommonService
|
|
|
+from Service.ModelService import ModelService
|
|
|
|
|
|
|
|
|
class GatewayDeviceView(View):
|
|
@@ -191,7 +193,18 @@ class GatewayDeviceView(View):
|
|
|
SocketSchedule.objects.filter(device_id=device_id).delete()
|
|
|
SceneLog.objects.filter(device_id=serial_number).delete()
|
|
|
SmartSocketView.delete_alexa_socket(serial_number)
|
|
|
-
|
|
|
+ # 重置设备
|
|
|
+ topic_name = SUB_DEVICE_TOPIC.format(serial_number)
|
|
|
+ msg = {
|
|
|
+ 'zigbee': 'recover',
|
|
|
+ }
|
|
|
+ success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+ LOGGER.info('删除重置设备结果:{}'.format(success))
|
|
|
+ try:
|
|
|
+ assert success
|
|
|
+ except AssertionError:
|
|
|
+ return response.json(10044)
|
|
|
+ time.sleep(0.3)
|
|
|
# 如果有子设备,删除子设备和关联的场景数据
|
|
|
gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
|
if gateway_qs.exists():
|
|
@@ -201,7 +214,6 @@ class GatewayDeviceView(View):
|
|
|
|
|
|
# 下发删除设备消息
|
|
|
ieee_addr_list = gateway_qs.values_list('ieee_addr', flat=True)
|
|
|
- topic_name = SUB_DEVICE_TOPIC.format(serial_number)
|
|
|
for ieee_addr in ieee_addr_list:
|
|
|
# 删除设备
|
|
|
msg = {
|
|
@@ -214,17 +226,6 @@ class GatewayDeviceView(View):
|
|
|
except AssertionError:
|
|
|
return response.json(10044)
|
|
|
time.sleep(0.3)
|
|
|
- # 重置设备
|
|
|
- msg = {
|
|
|
- 'zigbee': 'recover',
|
|
|
- }
|
|
|
- success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
- LOGGER.info('删除重置设备结果:{}'.format(success))
|
|
|
- try:
|
|
|
- assert success
|
|
|
- except AssertionError:
|
|
|
- return response.json(10044)
|
|
|
- time.sleep(0.3)
|
|
|
else:
|
|
|
smart_scene_qs = SmartScene.objects.filter(device_id=device_id)
|
|
|
if smart_scene_qs.exists():
|
|
@@ -247,6 +248,9 @@ class GatewayDeviceView(View):
|
|
|
gateway_qs.delete() # 删除子设备
|
|
|
SceneLog.objects.filter(device_id=device_id).delete()
|
|
|
device_qs.delete()
|
|
|
+ # 异步删除推送消息
|
|
|
+ asy = threading.Thread(target=ModelService.del_eq_info, args=(user_id, serial_number))
|
|
|
+ asy.start()
|
|
|
elif sub_ids:
|
|
|
sub_id_list = list(map(int, sub_ids.split(',')))
|
|
|
FamilyRoomDevice.objects.filter(sub_device__in=sub_id_list).delete()
|
|
@@ -261,6 +265,17 @@ class GatewayDeviceView(View):
|
|
|
gateway_sub_device_qs = GatewaySubDevice.objects.filter(id__in=sub_id_list)
|
|
|
ieee_addr_list = gateway_sub_device_qs.values_list('ieee_addr', flat=True)
|
|
|
topic_name = SUB_DEVICE_TOPIC.format(serial_number)
|
|
|
+ # 重置设备
|
|
|
+ msg = {
|
|
|
+ 'zigbee': 'recover',
|
|
|
+ }
|
|
|
+ success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+ LOGGER.info('删除重置设备结果:{}'.format(success))
|
|
|
+ try:
|
|
|
+ assert success
|
|
|
+ except AssertionError:
|
|
|
+ return response.json(10044)
|
|
|
+ time.sleep(0.3)
|
|
|
for ieee_addr in ieee_addr_list:
|
|
|
# 删除设备
|
|
|
msg = {
|
|
@@ -273,17 +288,6 @@ class GatewayDeviceView(View):
|
|
|
except AssertionError:
|
|
|
return response.json(10044)
|
|
|
time.sleep(0.3)
|
|
|
- # 重置设备
|
|
|
- msg = {
|
|
|
- 'zigbee': 'recover',
|
|
|
- }
|
|
|
- success = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
- LOGGER.info('删除重置设备结果:{}'.format(success))
|
|
|
- try:
|
|
|
- assert success
|
|
|
- except AssertionError:
|
|
|
- return response.json(10044)
|
|
|
- time.sleep(0.3)
|
|
|
# 删除场景,下发MQTT通知设备
|
|
|
smart_scene_qs = SmartScene.objects.filter(sub_device_id__in=sub_id_list)
|
|
|
if smart_scene_qs.exists():
|
|
@@ -306,7 +310,9 @@ class GatewayDeviceView(View):
|
|
|
|
|
|
gateway_sub_device_qs.delete()
|
|
|
SceneLog.objects.filter(sub_device_id__in=sub_id_list).delete()
|
|
|
-
|
|
|
+ # 异步删除推送消息
|
|
|
+ asy = threading.Thread(target=ModelService.del_eq_info, args=(user_id, serial_number))
|
|
|
+ asy.start()
|
|
|
return response.json(0)
|
|
|
except Exception as e:
|
|
|
return response.json(177, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
|