校园-智慧门禁(卡码脸)解决方案

 前言

入职新公司也已经一年有余,入职后主要从事的是门禁项目,公司设计的项目是偏saas化的智慧门禁系统,目前已经在多所大学上线,以下是对该项目的个人总结复盘。

一、系统主要功能和扩展功能

  • 可实现学校统一门禁设备管理
  • 可实现人员管理,人员可通行场所管理(宿舍楼,食堂,图书馆)
  • 记录下学生的通行信息,可供大数据分析,例如宿管系统,可提供学生归宿情况。
  • 第三方平台支持功能,例如学生预约几点到几点图书馆,图书馆门禁设备自动开启

二、实现方案

1.开门方式

扫脸开门。(我们是用的本地鉴权,名单是写进设备本地人脸库的,线上门禁系统down机也不影响客户使用)

面板机选品注意事项。

  • 识别成功率,这也是我们关心的最重要的。建议还是测试一下在阳光下、下雨环境、阴天、晚上等多情境。
  • 设备的兼容性,设备控制可闸机的闸机类型有哪些。
  • 支持和第三方系统对接,而不是单纯的使用厂家提供的一个面板机管理界面,类似写死在机器中的一个路由器界面。
  • 功能方面。
    • 设备可支持策略模式,例如哪些人每周一可进、周二不可进等个性化功能,部分学校有这个需求。
    • 设备支持测温功能、增加广告等等,具体看客户需求。
  • 技术方面。
    • 如果提供类似服务包的,要咨询服务包的并发量。
    • 设备是否支持覆盖去新增人员,没有的话我们对接起来如果想去修改照片,只能先删除在新增,但是我们和设备异步通信,你编码难度会提高很多,等待删除成功的通知,再去下发人员。
  • 面板机品牌1:巨龙创视

 对接协议:http协议。厂家提供一个服务包,服务包和现场面板机进行通信,门禁系统可以直接和厂家提供的服务包进行通信。(猜测可能觉得让客户对接mqtt协议比较困难,提供了一个较为简单版本的http协议包对接)

API接口列表(部分):

对接缺点:

1. 由于所有的设备共享一个服务包,开学高峰期下发人员并发高,服务包并发非常严重,导致门禁系统和服务包交互大量超时,由于服务包厂家提供,其中此服务包对门禁系统提供http协议接口,对设备通信猜测使用的是UDP通信,我们这边也不好对服务包做集群处理,后续改为单线程下发人员,导致下发人员速度非常慢。

2. 对接是base64流传递给服务包,服务包传递给设备下发人员,可想而知,设备是不支持批量下发的,流批量汇聚太大了,我们的门禁系统也会内存溢出。

  • 面板机品牌2:海清面板机

对接协议:mqtt协议。

API接口列表(部分):

对接优点:

该设备支持传递URL下发,意味着可支持批量下发。

对接缺点:mqtt协议对接设备有一个很大的缺点,下发名单的时候不支持并发操作,可能你下发人员过程中会给你反馈设备繁忙中,厂家文档中对此表示,建议下发人员之前查询下当前指令是否执行完成,或者当前设备状态,建议批量下发人员。我们下发人员过程要的就是一个最终一致性,所以我们在编码方面就十分苛刻。

方案1:下发人员名单首先都会进入到一个队列中去,每次进行完一个命令,根据名单数量预估下发时间进行阻塞,在执行下一条指令。

方案2:下发人员名单首先都会进入到一个队列中去,每次进行完一个命令,等待上一条执行执行完成设备通知你,在进行下一条指令执行,注意等待的超时时长。

扫码开门

公司自有嵌入式开发工程师,其原理也非常简单,网购一台二维码门禁读头,和嵌入式开发工程师沟通,我们在最开始会往设备中写入一个序列号在第几位,当用户打开自己的二维码时,我们会往二维码中写入是否可以开启闸机。例如序列号是2,0代表不可以开门,1代表可以,用户二维码内容是01,可以开闸机,10不可以,当然我们为了安全考虑,其中还加了二维码加密等内容。

这是我们目前使用过程中最方面的一种开门方式,对云端的依赖程度非常高,二维码需要实时去生成,

刷卡开门

刷卡开门也是使用二维码门禁读头,将十二进制8位卡内码下进读头中,实现本地鉴权。

PS:其实面板机也有这个功能,至于为什么单独增加此设备,估计是为了问学校单独增加设备增加sh。

2.安装注意事项

1.  再给设备分配IP的时候,一定要分配静态IP,提前把网络环境都搞好,防止后期IP冲突的情况。

2.  面板机调试一些忽略点。

  • 安装注意人脸的扫描距离,防止出现距离2m以外,路过就能开门,还有就是站在两台面板机中间,两个通道都开门的情况。
  • 注意面板机的时间问题,面板机一般都带此功能,网络计时。
  • 调整面板机下发名单后,要测试能够正常的开门,无权限进行,白名单通行,防止接线错误。
  • 注意厂家发送的面板机版本问题,不同面板机可能会出现协议不同。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/299989.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第14届蓝桥杯省赛scratch真题+解题思路+详细解析

一、选择题 一共有5道选择题,每题10分,共50分,严禁使用程序验证,选择题不答和答错不得分。 1. 运行以下程序,舞台上能看到几只小猫?( ) A. 4 B. 5 C. 6 D. 7 答案&#xff…

软件测试|Linux三剑客之grep命令详解

简介 grep是一款在 Linux 和类 Unix 系统中广泛使用的文本搜索工具。它的名字来源于 Global Regular Expression Print(全局正则表达式打印),它的主要功能是根据指定的模式(正则表达式)在文本文件中搜索并打印匹配的行…

reiserfs文件系统的磁盘布局

reiserfs文件系统的磁盘布局比较简单,它把整块分区分成相同大小的block块,一个block块的大小默认是4K,而最大块数未2^32次方,即一个分区最大大小为16TB。 reiserfs文件系统分区的前64KB总是为分区标签(partition labe…

推荐收藏!万字长文带入快速使用 keras

这些年,有很多感悟:一个人精力是有限的,一个人视野也有有限的,你总会不经意间发现优秀人的就在身边。 看我文章的小伙伴应该经常听我说过的一句话:技术要学会交流、分享,不建议闭门造车。一个人可以走的很…

CSS基础笔记-03选择器

CSS基础笔记系列 《CSS基础笔记-01CSS概述》《CSS基础笔记-02动画》 前言 在前面两篇博客中,我实际上已经使用过了选择器。但到底什么是选择器、有什么作用,我反而不能表达出来。因此,决定记录了我的学习和思考。 什么是选择器 selector…

基于 HTTPS 协议配置 Git 连接 GitHub

文章目录 0.安装 Git1.注册 GitHub 账号2.配置 Git 的用户名和邮箱3.远程连接 GitHub 有两种传输协议4.基于 SSH 协议配置 Git 连接 GitHub5.基于 HTTPS 协议配置 Git 连接 GitHub5.1 创建 GitHub 个人访问令牌5.2 有两种方法将本地仓库和远程仓库关联起来5.2.1 第一种方法&…

【大数据】基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL

基于 Flink CDC 构建 MySQL 和 Postgres 的 Streaming ETL 1.准备阶段1.1 准备教程所需要的组件1.2 下载 Flink 和所需要的依赖包1.3 准备数据1.3.1 在 MySQL 数据库中准备数据1.3.2 在 Postgres 数据库中准备数据 2.启动 Flink 集群和 Flink SQL CLI3.在 Flink SQL CLI 中使用…

x-cmd pkg | norwegianblue - 软件生命周期查询工具

目录 简介首次用户功能特点进一步探索 简介 norwegianblue 由 Hugo van Kemenade 使用 Python 开发,于 2021 年推出。用于显示多种产品的生命周期终止(EOL)日期的 CLI 工具。基于 endoflife.date 网站的接口,提供有关各种产品的最…

new和delete表达式的工作步骤

new表达式工作步骤 调用一个operator new库函数开辟未类型化的空间 void *operator new(size_t); 在为类型化的空间上调用构造函数,初始化对象的成员 返回相应类型的指针 delete表达式工作步骤 调用相应类型的析构函数,但析构函数并不能删除对象所在的空间&…

处cp社交类微信小程序前端开源(二)

在上一篇文章介绍如何用SpringBoot整合websocket实现在线聊天,这篇文章介绍如何将uniapp社交类前端源码打包部署微信小程序,和如何上线微信小程序,上线需要的资料,并且介绍我是如何获取用户,如何变现,现在的…

nginx下upstream模块详解

目录 一:介绍 二:特性介绍 一:介绍 Nginx的upstream模块用于定义后端服务器组,以及与这些服务器进行通信的方式。它是Nginx负载均衡功能的核心部分,允许将请求转发到多个后端服务器,并平衡负载。 在upst…

前端-基础 常用标签-超链接标签( 锚点链接 )

锚点链接 : 点击链接,可以快速定位到 页面中的某个位置 如果不好理解,讲一个例子,您就马上明白了 >>> 这个是 刘德华的百度百科 ,可以看到,页面里面有很多内容,那就得有个目录了 …

RabbitMQ高级

文章目录 一.消息可靠性1.生产者消息确认2.消息持久化3.消费者确认4.消费者失败重试 MQ的一些常见问题 1.消息可靠性问题:如何确保发送的消息至少被消费一次 2.延迟消息问题:如何实现消息的延迟投递 3.高可用问题:如何避免单点的MQ故障而导致的不可用问题 4.消息堆积问题:如…

狂肝100小时,各大厂20W字面试真题分享

有很多童靴问我,有没有大厂的面试集合,可以针对性备考一下,我说面试题网络上有很多,随便搜索一下,就一大把吧。他们回复说,都是针对各个知识点的题目,想要吃透,至少要1-3个月的时间&…

NCC基础开发技能培训

YonBuilder for NCC 是一个带插件的eclipse工具,跟eclipse没什么区别 NC Cloud2021.11版本开发环境搭建改动 https://nccdev.yonyou.com/article/detail/495 不管是NC Cloud 新手还是老NC开发,在开发NC Cloud时开发环境搭建必看!&#xff…

命令行模式的rancher如何安装?

在学习kubectl操作的时候,发现rancher也有命令行模式,学习整理记录此文。 说明 rancher 命令是 Rancher 平台提供的命令行工具,用于管理 Rancher 平台及其服务。 前提 已经参照前文安装过了rancher环境了,拥有了自己的k8s集群…

腾讯云代金券介绍及领取教程分享

腾讯云为了吸引用户经常推出各种优惠活动,其中就包括腾讯云代金券,领取之后可用于抵扣腾讯云平台上购买的部分产品或服务的费用。以下是腾讯云代金券的详细介绍及领取教程。 一、腾讯云代金券介绍 腾讯云代金券是腾讯云优惠券的一种,代金券是…

IMU用于无人机故障诊断

最近,来自韩国的研究团队通过开发以IMU为中心的数据驱动诊断方法,旨在多旋翼飞行器可以自我评估其性能,即时识别和解决推进故障。该方法从单纯的常规目视检查跃升为复杂的诊断细微差别,标志着无人机维护的范式转变。 与依赖额外传…

深入理解并解析Flutter Widget

文章目录 完整代码程序入口构建 Widget 结构定义 widget 状态定义 widget UI获取上下文关于build()build() 常用使用 完整代码 import package:english_words/english_words.dart; import package:flutter/material.dart; import package:provider/provider.dart;void main() …

软件工程专业毕业设计题目怎么选?

文章目录 0 简介1 如何选题2 最新软件工程毕设选题3 最后 0 简介 学长搜集分享最新的软件工程业专业毕设选题,难度适中,适合作为毕业设计,大家参考。 学长整理的题目标准: 相对容易工作量达标题目新颖 1 如何选题 最近非常多的…