Browse Source

修改摄像头快照接口

locky 3 weeks ago
parent
commit
691538f81f
2 changed files with 24 additions and 25 deletions
  1. 1 1
      azoauth/urls.py
  2. 23 24
      controller/index.py

+ 1 - 1
azoauth/urls.py

@@ -33,7 +33,7 @@ urlpatterns = [
 
     path('oa2/rtspStart', index.oa2RtspStartView.as_view()),            # 通知摄像头设备推流
     path('oa2/powerController', index.powerController.as_view()),       # 控制智能插座开关
-    path('oa2/getSnapshot', index.GetSnapshotView.as_view()),
+    path('oa2/getSnapshot', index.GetSnapshotView.as_view()),           # 摄像头快照
 
     re_path('device/(?P<operation>.*)', DeviceController.DeviceView.as_view()),
 

+ 23 - 24
controller/index.py

@@ -1007,15 +1007,15 @@ class GetSnapshotView(View):
         try:
             uid = request_dict.get("uid", None)
             access_token = request_dict.get("access_token", None)
-            correlation_token = request_dict.get('correlation_token', '')
+            correlation_token = request_dict.get('correlation_token', None)
 
-            if not uid or not access_token:
-                raise ValueError("endpoint_id or access_token is empty")
+            if not all([uid, access_token, correlation_token]):
+                return JsonResponse({'result_code': '444', '错误': '参数错误'})
 
             # 2. 验证用户和设备
             user = UserModel.objects.get(access_token=access_token)
             if not user.uid_rtsp.filter(uid=uid).exists():
-                raise PermissionError("Device not belong to user")
+                return JsonResponse({'result_code': '500', '错误': '用户数据不存在'})
 
             device = user.uid_rtsp.get(uid=uid)
             region = getattr(device, 'region', 'US')
@@ -1049,45 +1049,44 @@ class GetSnapshotView(View):
             return JsonResponse({'error': 'INTERNAL_ERROR'}, status=500)
 
     @staticmethod
-    def _send_mqtt_snapshot_command(uid,region):
+    def _send_mqtt_snapshot_command(uid, region):
         thing_name = CommonService.query_serial_with_uid(uid)
-        topic_name='ansjer/generic/{}'.format(thing_name)
+        topic_name = 'ansjer/generic/{}'.format(thing_name)
 
         msg = {
             "commandType": "alexaSnapshot",
         }
 
-        result = CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg,qos=1)
-        logger.info('快照指令下发结果 {}: {}'.format(uid, result))
+        try:
+            result = CommonService.req_publish_mqtt_msg(thing_name, topic_name, msg, qos=1)
+            logger.info('快照指令下发结果 {}: {}'.format(uid, result))
 
-        if result:
-            return True
+            if result:
+                return True
 
-        if region == 'EU':
-            domain_name = SERVER_PREFIX_EU
-        elif region == 'CN':
-            domain_name = SERVER_PREFIX_TEST
-        else:
-            domain_name = SERVER_PREFIX
+            if region == 'EU':
+                domain_name = SERVER_PREFIX_EU
+            elif region == 'CN':
+                domain_name = SERVER_PREFIX_TEST
+            else:
+                domain_name = SERVER_PREFIX
 
-        url = '{}/iot/requestPublishMessage'.format(domain_name)
-        request_data = {'UID': uid, 'commandType': 'alexaSnapshot'}
+            url = '{}/iot/requestPublishMessage'.format(domain_name)
+            request_data = {'UID': uid, 'commandType': 'alexaSnapshot'}
 
-        try:
             response = requests.post(url, data=request_data, timeout=10)
             if response.status_code == 200:
                 result = response.json()
-                logger.info('远程MQTT接口返回: %s', result)
                 if result.get('result_code') == 0:
+                    logger.info('快照远程MQTT接口成功')
                     return True
                 else:
-                    logger.error('远程MQTT接口业务失败, result_code=%s, reason=%s',
-                                 result.get('result_code'), result.get('reason'))
+                    logger.info('快照远程MQTT接口失败, res:{}'.format(result))
                     return False
             else:
-                logger.error('远程MQTT接口调用失败, HTTP status=%s', response.status_code)
+                logger.info('快照远程MQTT接口失败, 状态码: {}', response.status_code)
                 return False
 
         except Exception as e:
-            logger.error('调用远程MQTT接口异常: %s', e)
+            logger.info('快照MQTT函数异常: error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
             return False