|
@@ -223,7 +223,6 @@ class oa2RtspStartView(TemplateView):
|
|
|
def post(self, request, *args, **kwargs):
|
|
|
request.encoding = 'utf-8'
|
|
|
request_dict = request.POST
|
|
|
- # request_dict = json.loads(request.body.decode('utf-8'))
|
|
|
return self.validate(request_dict)
|
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
@@ -232,141 +231,74 @@ class oa2RtspStartView(TemplateView):
|
|
|
return self.validate(request_dict)
|
|
|
|
|
|
def validate(self, request_dict):
|
|
|
- '''
|
|
|
- VVDHCVBYDKFMJRWA111A
|
|
|
- '''
|
|
|
+ st = request_dict.get("st", 0)
|
|
|
+ uid = request_dict.get("id", '')
|
|
|
access_token = request_dict.get("access_token", '')
|
|
|
app_name = request_dict.get("app_name", 'zosi smart')
|
|
|
- st = request_dict.get("st", 0)
|
|
|
- id = request_dict.get("id", '')
|
|
|
-
|
|
|
- # redisObj = RedisObject(db=9)
|
|
|
- # key = '{UID}_rtsp_key'.format(UID=id)
|
|
|
- # redis_data = redisObj.get_data(key=key)
|
|
|
- # #redis_data = redisObj.del_data(key=key)
|
|
|
- # print(st)
|
|
|
- # if redis_data and st == 0:
|
|
|
- # #if redis_data:
|
|
|
- # print('select by redis data')
|
|
|
- # # time.sleep(3)
|
|
|
- # res_json = eval(redis_data)
|
|
|
- # return JsonResponse(res_json, safe=False)
|
|
|
-
|
|
|
- # user_qs = UserModel.objects.filter(access_token=access_token)
|
|
|
- user_qs = UserModel.objects.filter(access_token=access_token)
|
|
|
|
|
|
- if user_qs.exists():
|
|
|
- print('select by mysql data')
|
|
|
- ur_qs = UidRtspModel.objects.filter(uid=id).values('uid', 'nick', 'rtsp_url', 'password', 'region')
|
|
|
- # ur_qs = UidRtspModel.objects.filter(usermodel__userID=userID,uid=)
|
|
|
- UID = ur_qs[0]['uid']
|
|
|
- region = ur_qs[0]['region']
|
|
|
- PWD = ur_qs[0]['password']
|
|
|
- stream_name = ur_qs[0]['rtsp_url']
|
|
|
- nick = ur_qs[0]['nick']
|
|
|
- #RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA[region]
|
|
|
- # RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA['CN']
|
|
|
- RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA['EN']
|
|
|
- #如果是美国,则进行负载均衡
|
|
|
- # if RESP_SERVER_DOMAIN == RESP_SERVER_DOMAIN_DATA['EN']:
|
|
|
- # redisObj1 = RedisObject(db=1)
|
|
|
- # key1 = RESP_SERVER_DOMAIN_DATA['EN']
|
|
|
- # key2 = RESP_SERVER_DOMAIN_DATA['EN1']
|
|
|
- # redis_data1 = redisObj1.get_data(key1)
|
|
|
- # redis_data2 = redisObj1.get_data(key2)
|
|
|
- # mm=min(redis_data1,redis_data2)
|
|
|
- # if redis_data1 == mm and redis_data1 != -1:
|
|
|
- # RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA['EN']
|
|
|
- # elif redis_data2 == mm and redis_data2 != -1:
|
|
|
- # RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA['EN1']
|
|
|
- MSG = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:{PORT_PREFIX}/{stream_name}'. \
|
|
|
- format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN,
|
|
|
- stream_name=stream_name,
|
|
|
- PORT_PREFIX=PORT_PREFIX,
|
|
|
- RTSP_PREFIX=RTSP_PREFIX)
|
|
|
- #zlm
|
|
|
- # MSG = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:{PORT_PREFIX}/live/{stream_name}'. \
|
|
|
- # format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN,
|
|
|
- # stream_name=stream_name,
|
|
|
- # PORT_PREFIX=PORT_PREFIX,
|
|
|
- # RTSP_PREFIX=RTSP_PREFIX)
|
|
|
- # po = Pool(10)
|
|
|
- # po.apply_async(self.runSendRtspMsg, (UID, PWD, MSG))
|
|
|
- print(UID)
|
|
|
- print(PWD)
|
|
|
- print(MSG)
|
|
|
-
|
|
|
-
|
|
|
- logger = logging.getLogger('django')
|
|
|
- # logger.info('开始打印---------------------------')
|
|
|
- # logger.info(MSG)
|
|
|
- # logger.info(st)
|
|
|
- # send_flag = self.runSendStop(UID, PWD, MSG)
|
|
|
- # logger.info(send_flag)
|
|
|
- # if send_flag:
|
|
|
- # return JsonResponse({'msg': 'stop yes', 'code': 0})
|
|
|
-
|
|
|
- # 此处后续应该用异步去发送指令
|
|
|
- if int(st) == 1:
|
|
|
- send_flag = self.runSendStop(UID, PWD, MSG)
|
|
|
- logger.info('----------send_flag---st=1-----------------')
|
|
|
- if send_flag:
|
|
|
- return JsonResponse({'msg': 'stop yes', 'code': 0})
|
|
|
- else:
|
|
|
- return JsonResponse({'msg': 'stop no', 'code': 0})
|
|
|
- # threading.Thread(target=runSendRtspMsg_thread, args=(UID, PWD, MSG)).start()
|
|
|
- # send_flag = self.runReqRtspMsg(UID, PWD, MSG)
|
|
|
- send_flag = self.runSendRtspMsg(UID, PWD, MSG)
|
|
|
- logger.info('开始打印----------send_flag3.0-----------------')
|
|
|
- logger.info(send_flag)
|
|
|
- #E
|
|
|
- #拉流地址
|
|
|
- rtsp_uri = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:443/{stream_name}'. \
|
|
|
- format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN,
|
|
|
- stream_name=stream_name,
|
|
|
- RTSP_PREFIX=RTSP_PREFIX)
|
|
|
- #zlm443
|
|
|
- # rtsp_uri = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:443/live/{stream_name}'. \
|
|
|
- # format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN,
|
|
|
- # stream_name=stream_name,
|
|
|
- # RTSP_PREFIX=RTSP_PREFIX)
|
|
|
- #----------新增关闭流的线程
|
|
|
- # stream_name = threading.Thread(target=self.runSendStop,args=(UID, PWD, MSG))
|
|
|
- # stream_name.start()
|
|
|
- #----------/新增关闭流的线程
|
|
|
- stop_time = int(time.time()) + 2*60
|
|
|
- expirationTime = time.strftime('%Y-%m-%dT%H:%MZ',time.localtime(stop_time))
|
|
|
- logger.info('app_name:', app_name)
|
|
|
- res_json = {
|
|
|
- 'endpointId': id,
|
|
|
- 'manufacturerName': app_name,
|
|
|
- 'manufacturerId': 'zosi-ACCC8E5E7513',
|
|
|
- 'modelName': 'P1425-LE',
|
|
|
- 'friendlyName': nick,
|
|
|
- 'description': 'Camera connected via {}'.format(app_name),
|
|
|
- "expirationTime": expirationTime,
|
|
|
- "idleTimeoutSeconds": 5,
|
|
|
- #'resolutions': [{'width': 1280, 'height': 720}],
|
|
|
- 'resolutions': {'width': 640, 'height': 360},
|
|
|
- 'videoCodecs': 'H264',
|
|
|
- 'audioCodecs': 'ACC',
|
|
|
- # 'audioCodecs': ['G711'],
|
|
|
- 'protocols': ['RTSP'],
|
|
|
- 'authorizationTypes': ['NONE'],
|
|
|
- 'uri': rtsp_uri,
|
|
|
- # 'msg': send_flag,
|
|
|
- 'uid':UID,
|
|
|
- 'pwd':PWD,
|
|
|
- 'msg':MSG
|
|
|
- }
|
|
|
- logger.info('开始打印------------返回控制摄像头的结果2.0---------------')
|
|
|
- logger.info(res_json)
|
|
|
+ user_qs = UserModel.objects.filter(access_token=access_token)
|
|
|
|
|
|
- # redisObj.set_data(key=key, val=str(res_json), expire=15)
|
|
|
- return JsonResponse(res_json, safe=False)
|
|
|
- else:
|
|
|
+ if not user_qs.exists():
|
|
|
return JsonResponse({'msg': 'wrong'})
|
|
|
|
|
|
+ ur_qs = UidRtspModel.objects.filter(uid=uid).values('uid', 'nick', 'rtsp_url', 'password', 'region')
|
|
|
+ UID = ur_qs[0]['uid']
|
|
|
+ nick = ur_qs[0]['nick']
|
|
|
+ PWD = ur_qs[0]['password']
|
|
|
+ region = ur_qs[0]['region']
|
|
|
+ stream_name = ur_qs[0]['rtsp_url']
|
|
|
+
|
|
|
+ RESP_SERVER_DOMAIN = RESP_SERVER_DOMAIN_DATA['EN']
|
|
|
+ MSG = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:{PORT_PREFIX}/{stream_name}'. \
|
|
|
+ format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN, stream_name=stream_name, PORT_PREFIX=PORT_PREFIX,RTSP_PREFIX=RTSP_PREFIX)
|
|
|
+
|
|
|
+ logger = logging.getLogger('django')
|
|
|
+ logger.info('技能名称: {}'.format(app_name))
|
|
|
+ # 此处后续应该用异步去发送指令
|
|
|
+ if int(st) == 1:
|
|
|
+ send_flag = self.runSendStop(UID, PWD, MSG)
|
|
|
+ logger.info('----------send_flag---st=1-----------------')
|
|
|
+ if send_flag:
|
|
|
+ return JsonResponse({'msg': 'stop yes', 'code': 0})
|
|
|
+ else:
|
|
|
+ return JsonResponse({'msg': 'stop no', 'code': 0})
|
|
|
+ # threading.Thread(target=runSendRtspMsg_thread, args=(UID, PWD, MSG)).start()
|
|
|
+ # send_flag = self.runReqRtspMsg(UID, PWD, MSG)
|
|
|
+ send_flag = self.runSendRtspMsg(UID, PWD, MSG)
|
|
|
+ logger.info('开始打印----------send_flag3.0-----------------')
|
|
|
+ logger.info(send_flag)
|
|
|
+ #拉流地址
|
|
|
+ rtsp_uri = '{RTSP_PREFIX}://{RESP_SERVER_DOMAIN}:443/{stream_name}'. \
|
|
|
+ format(RESP_SERVER_DOMAIN=RESP_SERVER_DOMAIN, stream_name=stream_name, RTSP_PREFIX=RTSP_PREFIX)
|
|
|
+ stop_time = int(time.time()) + 2*60
|
|
|
+ expirationTime = time.strftime('%Y-%m-%dT%H:%MZ',time.localtime(stop_time))
|
|
|
+
|
|
|
+ res_json = {
|
|
|
+ 'endpointId': uid,
|
|
|
+ 'manufacturerName': app_name,
|
|
|
+ 'manufacturerId': 'zosi-ACCC8E5E7513',
|
|
|
+ 'modelName': 'P1425-LE',
|
|
|
+ 'friendlyName': nick,
|
|
|
+ 'description': 'Camera connected via {}'.format(app_name),
|
|
|
+ "expirationTime": expirationTime,
|
|
|
+ "idleTimeoutSeconds": 5,
|
|
|
+ #'resolutions': [{'width': 1280, 'height': 720}],
|
|
|
+ 'resolutions': {'width': 640, 'height': 360},
|
|
|
+ 'videoCodecs': 'H264',
|
|
|
+ 'audioCodecs': 'ACC',
|
|
|
+ # 'audioCodecs': ['G711'],
|
|
|
+ 'protocols': ['RTSP'],
|
|
|
+ 'authorizationTypes': ['NONE'],
|
|
|
+ 'uri': rtsp_uri,
|
|
|
+ # 'msg': send_flag,
|
|
|
+ 'uid': UID,
|
|
|
+ 'pwd': PWD,
|
|
|
+ 'msg': MSG
|
|
|
+ }
|
|
|
+ logger.info('开始打印------------返回控制摄像头的结果2.0---------------')
|
|
|
+ logger.info(res_json)
|
|
|
+ return JsonResponse(res_json, safe=False)
|
|
|
+
|
|
|
def runReqRtspMsg(self, UID, PWD, MSG):
|
|
|
request_url = 'http://localhost:5000/?UID={UID}&MSG={MSG}&CMD=1&PWD={PWD}'. \
|
|
|
format(UID=UID, PWD=PWD, MSG=MSG)
|
|
@@ -385,7 +317,8 @@ class oa2RtspStartView(TemplateView):
|
|
|
|
|
|
if region == 'CN':
|
|
|
logger.info('------------国内发送推流指令---------------')
|
|
|
- command_url = "http://47.115.134.251/index.php?command={command}".format(command=command)
|
|
|
+ # command_url = "http://47.115.134.251/index.php?command={command}".format(command=command)
|
|
|
+ command_url = "http://52.83.252.41:7880/alexa/command?command={command}".format(command=command)
|
|
|
logger.info("-----------command_url={command_url}".format(command_url=command_url))
|
|
|
try:
|
|
|
logger.info("-----------------开始调用接口")
|
|
@@ -452,7 +385,7 @@ class oa2DiscoveryDevice(TemplateView):
|
|
|
logger = logging.getLogger('django')
|
|
|
logger.info('-----access_token')
|
|
|
logger.info(access_token)
|
|
|
- logger.info('app_name:', app_name)
|
|
|
+ logger.info('技能名称: {}'.format(app_name))
|
|
|
try:
|
|
|
user_qs = UserModel.objects.get(access_token=access_token)
|
|
|
except Exception as e:
|