|
@@ -7,6 +7,7 @@
|
|
|
@Software: PyCharm
|
|
|
"""
|
|
|
import time
|
|
|
+import logging
|
|
|
|
|
|
from django.db import transaction
|
|
|
from django.db.models import Q
|
|
@@ -166,13 +167,16 @@ class GatewayDeviceView(View):
|
|
|
uid_set_qs.delete()
|
|
|
socket_info_qs = SocketInfo.objects.filter(device_id=device_id)
|
|
|
if socket_info_qs.exists():
|
|
|
+ # 设备不在线, 也正常删除设备数据
|
|
|
+ serial_number = device_qs.first().serial_number
|
|
|
+ cls.reset_device(serial_number)
|
|
|
socket_info_qs.delete()
|
|
|
- socket_power_qs = SocketPowerStatistics.objects.filter(device_id=device_id)
|
|
|
- if socket_power_qs.exists():
|
|
|
- socket_power_qs.delete()
|
|
|
- socket_schedule_qs = SocketSchedule.objects.filter(device_id=device_id)
|
|
|
- if socket_schedule_qs.exists():
|
|
|
- socket_schedule_qs.delete()
|
|
|
+ socket_power_qs = SocketPowerStatistics.objects.filter(device_id=device_id)
|
|
|
+ if socket_power_qs.exists():
|
|
|
+ socket_power_qs.delete()
|
|
|
+ socket_schedule_qs = SocketSchedule.objects.filter(device_id=device_id)
|
|
|
+ if socket_schedule_qs.exists():
|
|
|
+ socket_schedule_qs.delete()
|
|
|
|
|
|
# 如果有子设备,删除子设备和关联的场景数据
|
|
|
gateway_qs = GatewaySubDevice.objects.filter(device_id=device_id)
|
|
@@ -253,6 +257,18 @@ class GatewayDeviceView(View):
|
|
|
print(e)
|
|
|
return response.json(177, repr(e))
|
|
|
|
|
|
+ @staticmethod
|
|
|
+ def reset_device(serial_number):
|
|
|
+ # 下发设备进行重置
|
|
|
+ LOGGER = logging.getLogger('info')
|
|
|
+ SOCKET_TOPIC_NAME = 'loocam/smart-socket/{}' # 插座发布消息主题(因设备当前版本只能订阅一个主题)
|
|
|
+ topic_name = SOCKET_TOPIC_NAME.format(serial_number)
|
|
|
+ # 发布消息内容
|
|
|
+ msg = {'type': 6, 'data': {'device_reset': 1}}
|
|
|
+ result = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
|
|
|
+ LOGGER.info('重置{}智能插座设备,发布MQTT消息结果{}'.format(serial_number, result))
|
|
|
+ return True
|
|
|
+
|
|
|
@classmethod
|
|
|
def gateway_device_list(cls, request_dict, response):
|
|
|
"""
|