|
@@ -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))
|