虚心使人进步

虚心学习,天天向上......
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如何通过互联网(公网)快速集成设备并开发应用?

如果需要在互联网(公网)集成设备实现视频预览回放、语音、配置控制、报警事件等功能,当前的集成方法有:

 

1)推荐使用我司云曜开放平台,云曜平台支持GB/T28181国标协议、部标协议、萤石协议、NB-IoT协议以及第三方私有协议等各种协议和类型的设备接入,同时直接提供云端API接口(例如H5、小程序视频直播)供三方集成,集成简便快捷。云曜平台的对接文档地址:

https://help.hikyun.com/index

服务专用热线是0571-87006061或者进入云曜官网https://www.hikyun.com/index直接留言咨询。

 

2)可以使用设备网关,资料详见:

https://open.hikvision.com/osp#%E8%AE%BE%E5%A4%87%E9%9B%86%E6%88%90%E7%BD%91%E5%85%B3

有固定IP地址的Windows或者Linux服务器上直接安装运行网关,设备使用ISUP5.0协议注册添加到网关,然后三方平台或者应用可以使用HTTP/HTTPS协议和RTSP协议对接网关,集成方便快捷。

 

3)如果不使用我司平台软件或者网关,自己开发所有接入和转发服务,则可以使用设备网络SDK(设备有固定IP或者域名的情况)或者ISUP SDK(设备无固定IP或者域名的情况)动态库接口和硬件设备对接,SDK包含服务器和设备之间交互的接口,设备管理、流媒体转发等均需要自行实现,具有一定的开发工作量。资料详见:

https://open.hikvision.com/osp#%E8%AE%BE%E5%A4%87%E9%9B%86%E6%88%90SDK

1、确定对接方式用

监控设备里启用:使用ISUP协议,填写服务端的网关IP,端口(这里比较坑,默认是7660,实际是7661,导致设备一直没法注册成功。)

 

服务器端:安装海康的Gateway网关

2、服务端Linux系统里安装海康的Gateway网关(官网下载)

./install.sh --port=81
Checking ports completed. Port 81 will be used.
hpr tls index{0}
schina GetAdapterInfo_Inter_Posix link: 1 iterface: eth0
schina GetAdapterInfo_Inter_Posix link: 1 iterface: lo
recvfrom end. len [1348]
mac[0:0:0:0:0:0] index[1]
mac[0:16:3e:26:f4:aa] index[2]
recvfrom end. len [20]
recvfrom end. len [144]
ipv6[00::00:00:00:00] index[1]
ipv6[fe80::00:00:00:216] index[2]
recvfrom end. len [20]
loop[2] find 2 mac and 2 ip
schina get ipv6[0000] index[1]
schina get ipv6[fe80] index[2]
/proc/16163/cmdline
./DeviceGatewayService-install
please wait, install DeviceGatewayService service may take a few minutes...
0+1 records in
0+1 records out
14 bytes (14 B) copied, 5.9667e-05 s, 235 kB/s
setenforce: SELinux is disabled
install DeviceGatewayService service successfully.
Port rules are added to firewalld by default.
FirewallD is not running

2、设备注册成功后,按开发文档调试

 打开服务端的管理界面,添加设备

 

常见问题:

设备离线:等待设备注册到网关

        如为isup5.0登陆密钥错误请修改密钥后重试

        如为等待设备注册到网关请检查:

            ①如果使用ISUP5.0添加设备,部署网关的服务器防火墙是否关闭

            ②如果涉及端口映射本地测试,设备是否能正常注册上线

    3. 收集网关日志后,收集相关信息发送到SDK邮箱进行排查.

 

 

常见问题:

1、视频web查看,wss协议如何访问。

做域名video.aa.com解析到DVR所在主机的IP(没有公网,做公网映射,443接口,因为80端口运营商早就封掉了,所以在路由器端做81端口映射,443正常)

jssdk里用video.aa.com访问各通道信息。

完整nginx配置如下

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#pid        logs/nginx.pid;

events {
    worker_connections  2000;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
	server_tokens off;
    access_log  off;
    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  300;
	client_max_body_size 20M;
	proxy_connect_timeout       300s;
	proxy_send_timeout          300s;
	proxy_read_timeout          300s;
	send_timeout                300s;
    #gzip  on;
	
	upstream gateway_server{
			server 127.0.0.1:8081;
			keepalive 1024;
		}
	upstream websocket_server{
			server 127.0.0.1:9081;
			keepalive 1024;
		}	
	upstream wsStream_server{
	server 127.0.0.1:7314;


			keepalive 1024;
		}	
	upstream picture_server{
			server 127.0.0.1:10081;
		}	
	
	upstream download_server{
			server 127.0.0.1:11081;
		}
	# HTTP server
    server {
        listen       81;
		listen       443 ssl default;
		
        server_name  0.0.0.0;
		
		if ($request_method !~* GET|POST|PUT|DELETE) {
			return 444;
		}
		
         ssl_certificate 	cert.pem;
         ssl_certificate_key cert.key;
		 ssl_password_file 	  key.pass;
         ssl_session_cache     shared:SSL:1m;
         ssl_session_timeout  5m;
         ssl_ciphers  AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;
         ssl_prefer_server_ciphers  on;

        add_header X-Content-Type-Options 'nosniff';
		add_header X-Frame-Options SAMEORIGIN;
		add_header X-Xss-Protection '1; mode=block';
		location / {
			proxy_http_version 1.1;
			proxy_set_header Host $host;
			proxy_set_header Upgrade 'websocket';
			proxy_set_header Connection 'Upgrade';
			
			if ($query_string ~ "cipherSuites=0"){
				proxy_pass http://wsStream_server;
				break;
			}
			
			try_files $uri $uri/ /index.html;
			root   html;
			index  index.html;
			
			if ($request_filename ~* ^.*?\.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
				add_header Content-Disposition: 'attachment;';				
			}
        }				
		
		location /ISAPI {
			proxy_pass http://gateway_server/ISAPI;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
		}
		
		location /ISAPI/Event/notification/subscribeDeviceMgmt {
			proxy_pass http://gateway_server/ISAPI/Event/notification/subscribeDeviceMgmt;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location /ISAPI/Event/notification/alertStream {
			proxy_pass http://gateway_server/ISAPI/Event/notification/alertStream;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location /ISAPI/ContentMgmt/download {
			proxy_pass http://download_server/ISAPI/ContentMgmt/download;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
				
		location /SDK {
			proxy_pass http://gateway_server/SDK;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location /daf {
			proxy_pass http://gateway_server/daf;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location ~* /ISAPI/System/TwoWayAudio/channels/.*/audioData {
			audiotalk_serveraddr 127.0.0.1;
			audiotalk_serverport 12081;
			audiotalk_put;
		}
		
		location ~* /ISAPI/System/TwoWayAudio/channels/.*/(open|close) {
			proxy_pass http://download_server;
			proxy_http_version 1.1;
			proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';	
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location /Streaming {
			proxy_pass http://gateway_server/Streaming;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
		}
		
		location /HikGatewayStorage/ {
			proxy_pass http://picture_server/;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host:$server_port;
			proxy_set_header X-Forwarded-For $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header X-Real-Port $remote_port;
			proxy_set_header Connection 'Keep-Alive';
			proxy_buffering off;
			chunked_transfer_encoding       off;
		}
		
		location /ISAPI/System/ProtocolMgmt/SurGard/eventMonitor {
			proxy_pass http://websocket_server/ISAPI/System/ProtocolMgmt/SurGard/eventMonitor;
			proxy_http_version 1.1;
		   	proxy_set_header Host $host;
			proxy_set_header Upgrade 'websocket';
			proxy_set_header Connection 'Upgrade';
		}
    }

}

 2、device-gateway里的nginx启动报错

OpenEvent(“Global\ngx_stop_1676“)failed (2: The system cannot find the file specified

删除nginx下的nginx.pid,error.log,右下角deviceguard服务先stop service,再start service.

也有可能是权限问题,因为ssl证书到期,更换了cert和key文件,给这个2个文件,安全里几个角色,都给完全控制。