zhangdongming 1 tahun lalu
induk
melakukan
16a765f0ad
1 mengubah file dengan 30 tambahan dan 1 penghapusan
  1. 30 1
      Controller/SensorGateway/SmartSocketController.py

+ 30 - 1
Controller/SensorGateway/SmartSocketController.py

@@ -13,7 +13,7 @@ import time
 
 import requests
 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.http import QueryDict
 from django.views import View
@@ -62,6 +62,8 @@ class SmartSocketView(View):
             return self.alexa_socket_switch(request_dict, ResponseObject('cn'))
         elif operation == 'getSocketState':  # 获取alexa智能开关状态
             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 \
             .verify_token_get_user_id(request_dict, request)
         if token_code != 0:
@@ -902,3 +904,30 @@ class SmartSocketView(View):
             requests.post(url=url, data=data, timeout=5)
         except Exception as 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))