zhangdongming 1 year ago
parent
commit
16a765f0ad
1 changed files with 30 additions and 1 deletions
  1. 30 1
      Controller/SensorGateway/SmartSocketController.py

+ 30 - 1
Controller/SensorGateway/SmartSocketController.py

@@ -13,7 +13,7 @@ import time
 
 
 import requests
 import requests
 from dateutil.parser import parse
 from dateutil.parser import parse
-from django.db import transaction, connection, connections
+from django.db import transaction, connections
 from django.db.models import Sum, Count
 from django.db.models import Sum, Count
 from django.http import QueryDict
 from django.http import QueryDict
 from django.views import View
 from django.views import View
@@ -62,6 +62,8 @@ class SmartSocketView(View):
             return self.alexa_socket_switch(request_dict, ResponseObject('cn'))
             return self.alexa_socket_switch(request_dict, ResponseObject('cn'))
         elif operation == 'getSocketState':  # 获取alexa智能开关状态
         elif operation == 'getSocketState':  # 获取alexa智能开关状态
             return self.get_socket_state(request_dict, ResponseObject('cn'))
             return self.get_socket_state(request_dict, ResponseObject('cn'))
+        elif operation == 'socketPush':  # 插座推送
+            return self.socket_msg_push(request_dict, ResponseObject('cn'))
         token_code, user_id, response = CommonService \
         token_code, user_id, response = CommonService \
             .verify_token_get_user_id(request_dict, request)
             .verify_token_get_user_id(request_dict, request)
         if token_code != 0:
         if token_code != 0:
@@ -902,3 +904,30 @@ class SmartSocketView(View):
             requests.post(url=url, data=data, timeout=5)
             requests.post(url=url, data=data, timeout=5)
         except Exception as e:
         except Exception as e:
             print(repr(e))
             print(repr(e))
+
+    @classmethod
+    def socket_msg_push(cls, request_dict, response):
+        """
+        智能插座开关状态推送
+        """
+        try:
+            serial_number = request_dict.get('serialNumber', None)
+            device_time = request_dict.get('deviceTime', None)
+            status = request_dict.get('status', None)
+            if not all([serial_number, status, device_time]):
+                return response.json(444)
+            status = int(status)
+            now_time = int(device_time) if device_time else int(time.time())
+            # 获取主用户设备id
+            log_dict = {
+                'status': status,
+                'device_id': serial_number,
+                'created_time': now_time,
+            }
+            SceneLog.objects.create(**log_dict)
+            LOGGER.info('成功接收并保存,插座序列号{},状态:{}'.format(serial_number, status))
+            return response.json(0)
+        except Exception as e:
+            print(repr(e))
+            LOGGER.info('---插座开关日志推送接口异常--- {}'.format(repr(e)))
+            return response.json(500, repr(e))