1.初识SDK
海康威视的SDK分为网络SDK和EhomeSDK两种。
1.1 网络SDK简介
其中网络SDK适用于基于局域网的人脸识别场景,相关服务端可以通过局域网特定IP对设备进行管理,例
如小区或者办公楼的人脸门禁。
1.2 Ehome SDK简介
EhomeSDK适用于4G/5G等基于移动通信的网络场景,一般海康威视会提供相关SDK对接流程与介绍文档,Ehome SDK的服务端需要自己实现注册服务(CMS)/告警服务(AMS)/图片服务(SS)三类基础服务。
1.3 Ehome SDK与Java集成
1.3.1 初识JNA
Ehome底层已封装为动态链接库文件,在调用相关API时需要使用JNA框架进行调用。
相关样例在海康给出的Demo中可以看到具体用法。
这里的JNA框架最好使用海康官方提供的demo里面的,JNA的相关介绍可以移步=>传送
1.3.2 Windows Ehome集成
win版本的dll函数库与java进行集成时,在调用JNA进行库文件初始化的时候,相关路径必须为全路径。
例如:
Native.loadLibrary("C:/java/HCISUPSS.dll",,HCISUPSS.class))
1.3.3 Linux Ehome集成
Linux版本的so函数库与java进行集成时,为了方便使用,需要修改相关环境变量。
Docker 写法:
ENV LD_LIBRARY_PATH $LD_LIBRARY_PATH:/usr/lib
将海康的相关so文件copy到/usr/lib目录下即可。
然后在使用JNA调用相关函数库时,只需要写相关函数库名称即可,例如:
Native.loadLibrary("HCISUPSS",,HCISUPSS.class))
注:此处需要注意的是,使用32位的JDK就必须使用32位的海康SDK。
1.3.4 Ehome基础镜像
作者已经基于Centos7和openjdk1.8 构建了可以支持Ehome直接调用的基础镜像,
有需要的可以使用。
FROM countrythink/open-jdk-hk-ehome:7.0-1.8-v20200901
2.初识明眸
2.1 通信协议
海康明眸使用UDP协议进行设备注册,告警消息推送,使用TCP协议进行告警图片和设备图片的文件上传。因此,在开放端口的时候,需要注意其相关协议。
CMS开放端口:UDP协议开放
AMS开放端口:UDP协议开放
SS开放端口:TCP协议开放
其中SS的类型只能为KMS类型,且KMS不能启用安全模式,无需设置KMS密码(本身有漏洞,所以只接收数据,不开放数据下载)。
2.2 图片下发设备
由于海康的KMS机制本身存在安全隐患(KMS设置密码后图片无法下载),因此需要自行实现一个普通的文件下载服务即可。相关下载的安全性,由自己设置相关机制来保证即可。
2.3 图片上传安全加固
KMS可以进行任意文件类型的上传,安全性就不用说了。因此,在保存相关文件时,需要
自己对相关文件进行安全校验后再存储,可以在下述的回调函数中实现类型校验。
HCISUPSS.EHomeSSStorageCallBack
3.服务端集群方案
由于明眸本身使用场景常见于小区或者办公楼,无集群化使用场景,因此相关SDK在设计的时候
没有考虑到集群方案的具体实现。
3.1 CMS/AMS集群搭建
使用Nginx进行UDP代理,参考配置如下:
upstream cms-cluster-udp {
hash $remote_addr;
server 191.2.3.19:7660;
}
server {
listen 17660 udp reuseport;
proxy_responses 0;#1代表需要回应,并将回应转发;0代表不需要回应
proxy_timeout 20s;#回应超时时间,超时未回应暂停转发
proxy_pass cms-cluster-udp;
}
注: 如果需要逆向向设备发送控制命令,需要自己实现设备寻址方法,建议设备注册时全局存储设备注册信息。
3.2 SS集群搭建
SS在这里只做文件上传功能,开放文件上传接口,可以使用反向代理。
文件下载接口由于安全性欠佳,屏蔽掉文件下载接口。
文件可以使用共享存储来完成文件上传的分布式存储。
注:
在AMS接收的告警消息,里面存储的有SS自动生成的地址,需要替换为自己的API服务映射信息。
标题:海康威视Ehome开发指南(明眸)
作者:TravelEngineers
地址:https://www.mycitymemory.com/articles/2020/09/07/1599468491378.html
版权声明:转载请注明博文地址,尊重作者劳动成果。
作者简介:坐标魔都,一枚爱旅行爱摄影的攻城狮。愿攻城拔寨的路上,你不用996,也不再孤单,加油。