소스 검색

优化插座重复上报记录

zhangdongming 2 년 전
부모
커밋
c89d0845e0
1개의 변경된 파일11개의 추가작업 그리고 6개의 파일을 삭제
  1. 11 6
      Controller/gatewayController.py

+ 11 - 6
Controller/gatewayController.py

@@ -11,6 +11,7 @@ from django.views.generic.base import View
 
 from AnsjerPush.Config.gatewaySensorConfig import SENSOR_TYPE, EVENT_TYPE
 from Model.models import SensorRecord, GatewaySubDevice, GatewayPush, Device_Info, SceneLog, SmartScene
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.utils import LocalDateTimeUtil
 from Service.CommonService import CommonService
@@ -307,25 +308,29 @@ class GatewayView(View):
         """
         智能插座开关状态推送
         """
-        t = time.time()
         logger = logging.getLogger('info')
         try:
+            switch_key = 'LOOCAM:SOCKET:SERIAL:NUMBER:{}'
+            redis_obj = RedisObject(db=7)
             serial_number = request_dict.get('serialNumber', None)
             status = request_dict.get('status', None)
             if not all([serial_number, status]):
                 return response.json(444)
+            status = int(status)
+            switch_key = switch_key.format(serial_number)
+            switch = redis_obj.get_data(switch_key)
+            if switch and int(switch) == status:
+                return response.json(0, "电源开关状态重复上报")
             now_time = int(time.time())
-            logger.info('已订阅成功接收:事件类型{},状态:{}'.format(serial_number, status))
-            # socket_info_qs = SocketInfo.objects.filter(serial_number=serial_number).values('device_id')
-            # if not socket_info_qs.exists():
-            #     return response.json(173)
+            LOGGER.info('已订阅成功接收:事件类型{},状态:{}'.format(serial_number, status))
             # 获取主用户设备id
             log_dict = {
-                'status': int(status),
+                'status': status,
                 'device_id': serial_number,
                 'created_time': now_time,
             }
             SceneLog.objects.create(**log_dict)
+            redis_obj.set_data(switch_key, status, 60 * 3)
             return response.json(0)
         except Exception as e:
             logger.info('---插座开关日志推送接口异常--- {}'.format(repr(e)))