Sfoglia il codice sorgente

上报插座状态

peng 2 anni fa
parent
commit
48ff1fc107
3 ha cambiato i file con 65 aggiunte e 4 eliminazioni
  1. 1 1
      azoauth/urls.py
  2. 64 1
      controller/deviceStatus.py
  3. 0 2
      controller/index.py

+ 1 - 1
azoauth/urls.py

@@ -41,7 +41,7 @@ urlpatterns = [
     # 查询存储alexa连接数
     path('distribution/select', distribution.selectConnectNum.as_view()),       # 查询连接数并返回url
     path('distribution/storage', distribution.storageConnectNum.as_view()),     # 存储连接数
-    path('oa2/powerController', index.powerController.as_view()),       # 唤醒/休眠设备
+    path('oa2/powerController', index.powerController.as_view()),       # 控制智能插座开关
 
     # 更新设备状态到alexa网关.
     url(r'^deviceStatus/(?P<operation>.*)$', deviceStatus.deviceStatus.as_view()),

+ 64 - 1
controller/deviceStatus.py

@@ -15,7 +15,7 @@ from urllib.parse import urlencode
 from object.ResObject import ResObject
 import subprocess
 # from gevent.pool import Pool
-from model.models import UserModel,UidRtspModel
+from model.models import UserModel, UidRtspModel, SwitchModel
 from object.ResponseObject import ResponseObject
 from object.tkObject import tkObject
 from service.CommonService import CommonService
@@ -61,6 +61,9 @@ class deviceStatus(TemplateView):
             return self.delete(request_dict)
         if operation == 'stopPush':
             return self.notifiesDeviceStopPush(request_dict, response)
+        if operation == 'stateReport':
+            return self.StateReport(request_dict)
+
 
     def saveAccessToken(self, request_dict):
         token = request_dict.get("token", '')
@@ -329,6 +332,66 @@ class deviceStatus(TemplateView):
         except Exception as e:
             logger.info('--------添加/更新设备信息V2异常--------: {}'.format(repr(e)))
 
+    # 向alexa事件网关发送更新设备操作V2接口
+    def StateReport(self, request_dict):
+        logger = logging.getLogger('django')
+        logger.info('--------alexa智能插座状态上报--------')
+
+        serial_number = request_dict.get("serial_number", None)
+        access_token = request_dict.get("access_token", None)
+        logger.info('请求参数: {}'.format(request_dict))
+
+        response = ResObject()
+        if not all([serial_number, access_token]):
+            return response.json(10, res={'msg': 'Parameter error'})
+        user_qs = UserModel.objects.filter(access_token=access_token)
+        if not user_qs.exists():
+            return response.json(10, res={'msg': '用户数据不存在'})
+        user_id = user_qs.first().userID
+        now_time = int(time.time())
+        try:
+            auth_request_url = '{}/oalexa/stateReport'.format(SERVER_PREFIX)
+            requests_data = {'serial_number': serial_number, 'alexa_user_id': user_id}
+            res = requests.post(url=auth_request_url, data=requests_data)
+            res_json = res.json()
+            logger.info('正式服务器响应: {}'.format(res_json))
+
+            # 添加测试服务器测试
+            if res_json['result_code'] != 0:
+                auth_request_url = '{}/oalexa/stateReport'.format(SERVER_PREFIX_TEST)
+                res = requests.post(url=auth_request_url, data=requests_data)
+                res_json = res.json()
+
+            logger.info('请求服务器url: {}'.format(auth_request_url))
+            logger.info('服务器响应: {}'.format(res_json))
+            if res_json['result_code'] != 0:
+                return response.json(10, res={'msg': 'error'})
+            nick_name = res_json['nick_name']
+            power_state = res_json['power_state']
+            region = res_json['region']
+            switch_qs = SwitchModel.objects.filter(serial_number=serial_number, userID=user_id)
+            if switch_qs.exists():
+                switch_qs.update(nick=nick_name, updTime=now_time, region=region)
+            else:
+                switch = {
+                    'nick': nick_name,
+                    'serial_number': serial_number,
+                    'userID': user_id,
+                    'addTime': now_time,
+                    'updTime': now_time,
+
+                }
+                SwitchModel.objects.create(**switch)
+            if power_state == 0:
+                res = {'state': 'OFF'}
+            else:
+                res = {'state': 'ON'}
+            return response.json(0, res=res)
+        except Exception as e:
+            logger.info('--------上传插座状态异常--------: {}'.format(repr(e)))
+            return response.json(10, res={'msg': '上报状态异常'})
+
+
     def append_endpoint(self, data_list, channel):
         # 组织 endpoints 数据
         endpoints = []

+ 0 - 2
controller/index.py

@@ -601,13 +601,11 @@ class oa2DiscoverySwitch(TemplateView):
         res_json = res.json()
         logger.info('正式服务器响应: {}'.format(res_json))
 
-        test_flag = False  # 用来区分测试服务器,后面删掉
         # 添加测试服务器测试
         if res_json['result_code'] != 0:
             auth_request_url = '{}/oalexa/discoveryswitch'.format(SERVER_PREFIX_TEST)
             res = requests.post(url=auth_request_url, data=requests_data)
             res_json = res.json()
-            test_flag = True
 
         logger.info('请求服务器url: {}'.format(auth_request_url))
         logger.info('服务器响应: {}'.format(res_json))