Bläddra i källkod

智能插座上报接口

zhangdongming 1 år sedan
förälder
incheckning
9247b58469
1 ändrade filer med 30 tillägg och 1 borttagningar
  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))