Эх сурвалжийг харах

智能开关普通操作日志

peng 1 жил өмнө
parent
commit
668c671d47

+ 56 - 8
Controller/SensorGateway/SmartSwitchController.py

@@ -11,7 +11,8 @@ import threading
 import time
 from django.views import View
 
-from Model.models import SwitchInfo, SwitchDimmingSettings, SwitchChronopher, Device_Info, SceneLog, FamilyRoomDevice
+from Model.models import SwitchDimmingSettings, SwitchChronopher, Device_Info, SceneLog, FamilyRoomDevice, \
+    SwitchOperateLog
 from Service.CommonService import CommonService
 from Object.ApschedulerObject import ApschedulerObject
 from django.db import transaction
@@ -34,8 +35,10 @@ class SmartSwitchView(View):
 
     def validation(self, request_dict, request, operation):
         token_code, user_id, response = CommonService.verify_token_get_user_id(request_dict, request)
-        if operation == 'switch-report-log':  # 设备上报执行日志
-            return self.create_log(request_dict, response)
+        if operation == 'switch-chronopher-log':  # 设备上报排程日志
+            return self.create_chronopher_log(request_dict, response)
+        if operation == 'switch-operate-log':  # 设备上报操作日志
+            return self.create_operate_log(request_dict, response)
         elif operation == 'reset':  # 设备重置
             return self.reset(request_dict, response)
         else:
@@ -386,13 +389,15 @@ class SmartSwitchView(View):
         @param task_id: 任务id
         @return: response
         """
+        now_time = int(time.time())
+        msg['implementTime'] = now_time
         result = CommonService.req_publish_mqtt_msg(serial_number, topic_name, msg)
         LOGGER.info('定时发送mqtt结果:{},参数:{},{},{},{},{},线程:{},进程:{}'.format(result, serial_number, topic_name, msg,
-                                                                         int(time.time()), task_id,
+                                                                         now_time, task_id,
                                                                          threading.get_ident(), os.getpid()))
 
     @staticmethod
-    def create_log(request_dict, response):
+    def create_chronopher_log(request_dict, response):
         """
         生成执行日志
         @param request_dict: 请求参数
@@ -404,10 +409,11 @@ class SmartSwitchView(View):
         """
         serial_number = request_dict.get('serialNumber', None)
         chronopher_id = request_dict.get('taskId', None)
-        status = request_dict.get('status', None)
+        operate_status = request_dict.get('status', None)
+        switch_status = request_dict.get('switchStatus', None)
         implement_time = request_dict.get('implementTime', None)
 
-        if not all([serial_number, chronopher_id, status, implement_time]):
+        if not all([serial_number, chronopher_id, operate_status, switch_status, implement_time]):
             return response.json(444, {'error param': 'deviceId or chronopherId'})
         device_qs = Device_Info.objects.filter(serial_number=serial_number).values('id')
         if not device_qs.exists():
@@ -423,13 +429,21 @@ class SmartSwitchView(View):
                 'scene_id': chronopher_id,
                 'device_id': device_id,
                 'tasks': json.dumps(chronopher_qs[0]),
-                'status': status,
+                'status': operate_status,
                 'created_time': implement_time,
             }
             scene_qs = SceneLog.objects.filter(created_time=implement_time, device_id=device_id,
                                                scene_id=chronopher_id)
             if not scene_qs.exists():
                 SceneLog.objects.create(**scene_log)
+            operate_log = {
+                'device_id': device_id,
+                'status': switch_status,
+                'created_time': implement_time
+            }
+            operate_qs = SwitchOperateLog.objects.filter(**operate_log)
+            if not operate_qs.exists():
+                SwitchOperateLog.objects.create(**operate_log)
             return response.json(0)
         except Exception as e:
             print(e)
@@ -524,3 +538,37 @@ class SmartSwitchView(View):
         except Exception as e:
             print(e)
             LOGGER.info('error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
+
+    @staticmethod
+    def create_operate_log(request_dict, response):
+        """
+        设备上报排程日志
+        @param request_dict: 请求参数
+        @request_dict serialNumber: 设备序列号
+        @param response: 响应对象
+        @return: response
+        """
+        serial_number = request_dict.get('serialNumber', None)
+        status = request_dict.get('switchStatus', None)
+        implement_time = request_dict.get('implementTime', None)
+
+        if not all([serial_number, status, implement_time]):
+            return response.json(444, {'error param': 'deviceId or chronopherId'})
+        device_qs = Device_Info.objects.filter(serial_number=serial_number).values('id')
+        if not device_qs.exists():
+            return response.json(173)
+        device_id = device_qs[0]['id']
+
+        try:
+            scene_log = {
+                'device_id': device_id,
+                'status': status,
+                'created_time': implement_time,
+            }
+            operate_qs = SwitchOperateLog.objects.filter(**scene_log)
+            if not operate_qs.exists():
+                SwitchOperateLog.objects.create(**scene_log)
+            return response.json(0)
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 5 - 7
Model/models.py

@@ -4139,17 +4139,15 @@ class SocketSchedule(models.Model):
         verbose_name_plural = verbose_name
 
 
-class SwitchInfo(models.Model):
+class SwitchOperateLog(models.Model):
     id = models.AutoField(primary_key=True, verbose_name='自增id')
     device_id = models.CharField(max_length=32, default='', verbose_name='设备id')
-    model = models.CharField(max_length=32, default='', verbose_name='型号')
-    hardware_version = models.CharField(max_length=32, default='', verbose_name='硬件版本')
-    firmware_version = models.CharField(max_length=32, default='', verbose_name='固件版本')
-    mac = models.CharField(max_length=32, default='', verbose_name='mac地址')
+    status = models.SmallIntegerField(default=0, verbose_name='开关状态')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
 
     class Meta:
-        db_table = 'switch_info'
-        verbose_name = '智能开关信息'
+        db_table = 'switch_operate_log'
+        verbose_name = '智能开关普通操作日志'
         verbose_name_plural = verbose_name