Browse Source

添加删除智能开关

peng 1 year ago
parent
commit
2adde9c274

+ 3 - 1
Controller/SensorGateway/EquipmentFamilyController.py

@@ -20,7 +20,7 @@ from Controller.DeviceConfirmRegion import Device_Region
 from Controller.SensorGateway.SmartSocketController import SmartSocketView
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
     iotdeviceInfoModel, UIDModel, Device_User, UserFamily, FamilyMember, FamilyMemberPermission, \
-    FamilyRoomDevice, FamilyRoom, FamilyMemberJoin, GatewaySubDevice, CountryModel, SocketInfo
+    FamilyRoomDevice, FamilyRoom, FamilyMemberJoin, GatewaySubDevice, CountryModel, SocketInfo, SwitchDimmingSettings
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -220,6 +220,8 @@ class EquipmentFamilyView(View):
                     UidSetModel.objects.create(**uid_set_create_dict)
                 if int(device_type) == 201:  # 添加插座信息
                     SmartSocketView.save_socket_switch(device_id, serial_number, 0)
+                if int(device_type) == 202:  # 添加开关信息
+                    SwitchDimmingSettings.objects.create(device_id=device_id)
                 res = {
                     'deviceId': device_id,
                     'nickName': nick_name,

+ 4 - 0
Controller/SensorGateway/GatewayDeviceController.py

@@ -22,6 +22,7 @@ from Ansjer.config import CONFIG_INFO, AWS_IOT_SES_ACCESS_CHINA_ID, AWS_IOT_SES_
 from Ansjer.config import LOGGER
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.SmartSocketController import SmartSocketView
+from Controller.SensorGateway.SmartSwitchController import SmartSwitchView
 from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
     UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics, SocketSchedule, \
     CountryModel, SensorRecord
@@ -184,6 +185,7 @@ class GatewayDeviceView(View):
                     device_qs = Device_Info.objects.filter(id=device_id)
                     if device_qs.exists():
                         serial_number = device_qs.first().serial_number
+                        device_type = device_qs.first().Type
                         FamilyRoomDevice.objects.filter(device_id=device_id).delete()
                         UidSetModel.objects.filter(uid=device_qs.first().UID).delete()
                         socket_info_qs = SocketInfo.objects.filter(device_id=device_id)
@@ -195,6 +197,8 @@ 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)
+                        if device_type == 202:  # 删除开关信息
+                            SmartSwitchView.del_switch(device_id, serial_number)
                         # 重置设备
                         topic_name = SUB_DEVICE_TOPIC.format(serial_number)
                         msg = {

+ 32 - 8
Controller/SensorGateway/SmartSwitchController.py

@@ -9,13 +9,14 @@ import time
 
 from django.views import View
 
-from Model.models import SwitchInfo, SwitchDimmingSettings, SwitchChronopher, Device_Info, SceneLog
+from Model.models import SwitchInfo, SwitchDimmingSettings, SwitchChronopher, Device_Info, SceneLog, FamilyRoomDevice
 from Service.CommonService import CommonService
 from Object.ApschedulerObject import ApschedulerObject
 from django.db import transaction
 from Ansjer.config import LOGGER
 
 APSCHEDULER_TOPIC_NAME = 'loocam/switch/time_scheduling/{}'  # 排程主题
+RESET_SWITCH_TOPIC_NAME = 'loocam/smart-switch/{}'  # 重置设备
 
 
 class SmartSwitchView(View):
@@ -86,7 +87,6 @@ class SmartSwitchView(View):
         """
         获取智能开关调光设置信息
         @param request_dict: 请求参数
-        @param user_id: 用戶user_id
         @request_dict deviceId: 设备id
         @param response: 响应对象
         @return: response
@@ -458,15 +458,39 @@ class SmartSwitchView(View):
         serial_number = request_dict.get('serialNumber', None)
         if not serial_number:
             return response.json(444, {'error param': 'serialNumber'})
-        device_qs = Device_Info.objects.filter(serial_number=serial_number)
+        device_qs = Device_Info.objects.filter(serial_number=serial_number).values('id')
         if not device_qs.exists():
             return response.json(173)
-        device_id_list = list(device_qs.values_list('id', flat=True))
+        device_id = device_qs[0]['device_id']
         try:
             # 删除智能开关数据
-            SwitchDimmingSettings.objects.filter(device_id__in=device_id_list).delete()
-            SwitchChronopher.objects.filter(device_id__in=device_id_list).delete()
-            SceneLog.objects.filter(device_id__in=device_id_list).delete()
+            SwitchDimmingSettings.objects.filter(device_id=device_id).delete()
+            SwitchChronopher.objects.filter(device_id=device_id).delete()
+            SceneLog.objects.filter(device_id=device_id).delete()
+            FamilyRoomDevice.objects.filter(device_id=device_id).delete()
+            Device_Info.objects.filter(id=device_id).delete()
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def del_switch(device_id, serial_number):
+        """
+        删除开关
+        @param device_id: 设备id
+        @param serial_number: 设备序列号
+        @return: response
+        """
+        try:
+            SwitchDimmingSettings.objects.filter(device_id=device_id).delete()
+            SwitchChronopher.objects.filter(device_id=device_id).delete()
+            SceneLog.objects.filter(device_id=device_id).delete()
+            msg = {
+                "device_reset": 1  # 重置智能开关
+            }
+            topic_name = RESET_SWITCH_TOPIC_NAME.format(serial_number)
+            result = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
+            LOGGER.info('执行重置开关mqtt结果:{}'.format(result))
         except Exception as e:
             print(e)
-            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+            LOGGER.info('error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 2 - 2
Model/models.py

@@ -4158,8 +4158,8 @@ class SwitchDimmingSettings(models.Model):
     device_id = models.CharField(max_length=32, default='', verbose_name='设备id')
     click_turn_on_speed = models.SmallIntegerField(default=0, verbose_name='单击开启速度')
     click_turn_off_speed = models.SmallIntegerField(default=0, verbose_name='单击关闭速度')
-    double_click = models.CharField(max_length=8, default='', verbose_name='双击')  # 0: 无, 1: 缓慢开/关, x%: 预设亮度
-    press = models.CharField(max_length=8, default='', verbose_name='长按')  # 0: 无, 1: 缓慢开/关, x%: 预设亮度
+    double_click = models.CharField(max_length=8, default=0, verbose_name='双击')  # 0: 无, 1: 缓慢开/关, x%: 预设亮度
+    press = models.CharField(max_length=8, default=0, verbose_name='长按')  # 0: 无, 1: 缓慢开/关, x%: 预设亮度
     double_press_click_turn_on_speed = models.SmallIntegerField(default=0, verbose_name='双击/长按开启速度')
     double_press_click_turn_off_speed = models.SmallIntegerField(default=0, verbose_name='双击/长按关闭速度')
     dimming_correction = models.CharField(max_length=8, default='', verbose_name='调光校正')