Browse Source

发布重置智能插座设备

guanhailong 2 years ago
parent
commit
643f7f4256
1 changed files with 22 additions and 6 deletions
  1. 22 6
      Controller/SensorGateway/GatewayDeviceController.py

+ 22 - 6
Controller/SensorGateway/GatewayDeviceController.py

@@ -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):
         """