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 Controller.SensorGateway.SmartSocketController import SmartSocketView
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
 from Model.models import Device_Info, UID_Bucket, UID_Preview, UidSetModel, UidChannelSetModel, \
     iotdeviceInfoModel, UIDModel, Device_User, UserFamily, FamilyMember, FamilyMemberPermission, \
     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.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
 from Service.CommonService import CommonService
@@ -220,6 +220,8 @@ class EquipmentFamilyView(View):
                     UidSetModel.objects.create(**uid_set_create_dict)
                     UidSetModel.objects.create(**uid_set_create_dict)
                 if int(device_type) == 201:  # 添加插座信息
                 if int(device_type) == 201:  # 添加插座信息
                     SmartSocketView.save_socket_switch(device_id, serial_number, 0)
                     SmartSocketView.save_socket_switch(device_id, serial_number, 0)
+                if int(device_type) == 202:  # 添加开关信息
+                    SwitchDimmingSettings.objects.create(device_id=device_id)
                 res = {
                 res = {
                     'deviceId': device_id,
                     'deviceId': device_id,
                     'nickName': nick_name,
                     '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 Ansjer.config import LOGGER
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.EquipmentFamilyController import EquipmentFamilyView
 from Controller.SensorGateway.SmartSocketController import SmartSocketView
 from Controller.SensorGateway.SmartSocketController import SmartSocketView
+from Controller.SensorGateway.SmartSwitchController import SmartSwitchView
 from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
 from Model.models import FamilyRoomDevice, FamilyRoom, GatewaySubDevice, Device_Info, UserFamily, FamilyMember, \
     UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics, SocketSchedule, \
     UidSetModel, iotdeviceInfoModel, SmartScene, SceneLog, SocketInfo, SocketPowerStatistics, SocketSchedule, \
     CountryModel, SensorRecord
     CountryModel, SensorRecord
@@ -184,6 +185,7 @@ class GatewayDeviceView(View):
                     device_qs = Device_Info.objects.filter(id=device_id)
                     device_qs = Device_Info.objects.filter(id=device_id)
                     if device_qs.exists():
                     if device_qs.exists():
                         serial_number = device_qs.first().serial_number
                         serial_number = device_qs.first().serial_number
+                        device_type = device_qs.first().Type
                         FamilyRoomDevice.objects.filter(device_id=device_id).delete()
                         FamilyRoomDevice.objects.filter(device_id=device_id).delete()
                         UidSetModel.objects.filter(uid=device_qs.first().UID).delete()
                         UidSetModel.objects.filter(uid=device_qs.first().UID).delete()
                         socket_info_qs = SocketInfo.objects.filter(device_id=device_id)
                         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()
                             SocketSchedule.objects.filter(device_id=device_id).delete()
                             SceneLog.objects.filter(device_id=serial_number).delete()
                             SceneLog.objects.filter(device_id=serial_number).delete()
                             SmartSocketView.delete_alexa_socket(serial_number)
                             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)
                         topic_name = SUB_DEVICE_TOPIC.format(serial_number)
                         msg = {
                         msg = {

+ 32 - 8
Controller/SensorGateway/SmartSwitchController.py

@@ -9,13 +9,14 @@ import time
 
 
 from django.views import View
 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 Service.CommonService import CommonService
 from Object.ApschedulerObject import ApschedulerObject
 from Object.ApschedulerObject import ApschedulerObject
 from django.db import transaction
 from django.db import transaction
 from Ansjer.config import LOGGER
 from Ansjer.config import LOGGER
 
 
 APSCHEDULER_TOPIC_NAME = 'loocam/switch/time_scheduling/{}'  # 排程主题
 APSCHEDULER_TOPIC_NAME = 'loocam/switch/time_scheduling/{}'  # 排程主题
+RESET_SWITCH_TOPIC_NAME = 'loocam/smart-switch/{}'  # 重置设备
 
 
 
 
 class SmartSwitchView(View):
 class SmartSwitchView(View):
@@ -86,7 +87,6 @@ class SmartSwitchView(View):
         """
         """
         获取智能开关调光设置信息
         获取智能开关调光设置信息
         @param request_dict: 请求参数
         @param request_dict: 请求参数
-        @param user_id: 用戶user_id
         @request_dict deviceId: 设备id
         @request_dict deviceId: 设备id
         @param response: 响应对象
         @param response: 响应对象
         @return: response
         @return: response
@@ -458,15 +458,39 @@ class SmartSwitchView(View):
         serial_number = request_dict.get('serialNumber', None)
         serial_number = request_dict.get('serialNumber', None)
         if not serial_number:
         if not serial_number:
             return response.json(444, {'error param': 'serialNumber'})
             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():
         if not device_qs.exists():
             return response.json(173)
             return response.json(173)
-        device_id_list = list(device_qs.values_list('id', flat=True))
+        device_id = device_qs[0]['device_id']
         try:
         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:
         except Exception as e:
             print(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')
     device_id = models.CharField(max_length=32, default='', verbose_name='设备id')
     click_turn_on_speed = models.SmallIntegerField(default=0, verbose_name='单击开启速度')
     click_turn_on_speed = models.SmallIntegerField(default=0, verbose_name='单击开启速度')
     click_turn_off_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_on_speed = models.SmallIntegerField(default=0, verbose_name='双击/长按开启速度')
     double_press_click_turn_off_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='调光校正')
     dimming_correction = models.CharField(max_length=8, default='', verbose_name='调光校正')