На чём лучше сделать СКУД?

Всем доброго времени суток! Я работаю в сфере безопасности (СКУД, видеонаблюдение) и обучаюсь программированию. Изучать программирование конечно интересно, но просто сортировать массивы это не дело.
Существует много различных ПО для контроля и управления доступом: Perco, Sigur, Elecra-AC, Epicur, 3V, и т.д., но! В каждой есть свои плюсы и соответственно минусы. Вот так и пришла идея связать работу с обучением и создать собственную СКУД . Первые мысли:
- ПО для настройки оборудования и клиентское
- нужен какой-то контроллер(железо) для управления замком и т.д.
За основу решил взять Raspberri Pi, т.к. к нему можно подключать оборудование, а ещё прямо на нём сделать web сервер, что бы не делать приложения под разные ОС.
К сути вопроса:
Эта сфера может и узкая, но не стоит на месте. Если раньше это были карточки как идентификаторы, то сейчас это карточки, отпечаток пальца, распознавание лица (автомобильных номеров). Со временем ко всему этому добавилось алкотестирование, сканирование документов и т.д. Т.е. придется постоянно добавлять какие-то фишечки и\или что-то менять под конкретного заказчика.
1. Какую БД лучше выбрать под такую задачу? Обращений к ней будет очень много, таких как запись событий и соответственно их просмотр оператором( а может и не одним, в одно время)
2. Если это веб-сервер то какие технологии лучше подойдут под такое? Django? Node.js?
3. Приоритеты - возможность конфигурировать работу с bluetooth, nfc, onvif, wiegand, usb и бла-бла-бла(допустим у python'a для такого есть много библиотек), масштабируемость и конечно же скорость работы xD
Перечитав свой текст - понимаю что очень мыльно, но надеюсь донёс суть..
Предложите пожалуйста варианты для реализации и\или подскажите в чём я ошибаюсь.
Спасибо!
  • Вопрос задан
  • 1092 просмотра
Пригласить эксперта
Ответы на вопрос 4
gbg
@gbg
Любые ответы на любые вопросы
0) Во "взрослой" промышленности применение разного рода макетов-малинок экономически не оправданно. Главная причина - у них не промышленное исполнение. Они не защищены от ЭМИ, от статического электричества, от иголок по питанию, от грозы. Это все придется добавлять сверху - иначе вашу хваленую БИЗОПАСНОСТЬ можно будет поломать вспышкой от фотика.

1) МНОГО запросов - понятие сильно растяжимое. Эту задачу нужно решать на самом раннем этапе разработки архитектуры, однако, для этого нужен опыт. Поэтому, на этапе обучения, от этой задачи можно отказаться. Поверьте, инсталляции постгреса с дефолтными настройками (кроме одной) хватает на обслуживание 200-500 одновременных соединений. которые валят запросы каждую секунду. Как по вашему, это "много"?

2)На этапе изучения, пока опыта нет, проще всего взять то, что знаете лучше всего.

3) Скорость работы + работа с железом. Что-то я слышал такое про C++. Однако, если вы его не знаете, вы просто добавите себе проблем.

Вывод - такая система будет вам по зубам, при условии, что вы знаете, как сделать каждую ее часть в отдельности. Вот вы делали хотя бы простой замок, открываемый через интернетик? SSL к нему привязывали? Двухфакторную авторизацию? fail2ban?

Задачи, которые вы себе ставите, умещаются в нескольких разрабов, и то с трудом - тут и фронт, и бэк, и devops, раз про нагрузки речь пошла, и разработка железа.
Ответ написан
Комментировать
dark_tke
@dark_tke
Помогли? Отметь решением!
Как домашний проект в принципе неплохая идея, слишком уж муторная, и фактически нереальная для одного разработчика. Вы задолбаетесь писать драйвера для апаратной совместимости с чем то из СКУД оборудования, там очень много нюансов, тот же NFC протокол если описывать нормально, это очень и очень много строк кода. Даже используя ACR122U и его SDK. Второе вы хотите сделать эдакий комбаин со всем на свете, и бедная малинка такого надругательства просто не переживет, не для нее это. То же распознавание чего бы то не было, крайне ресурсоемкая задача.

Если по теме:
1. Используйте базы данных, которые будут совершать как можно меньше запросов к SD карточке. Например Redis, которая будет жить в оперативной памяти.
2. Без разницы. Изначально нужно определиться со стеком для бекэнда, а учитывая вашу идею это крайне нетривиальная задача, а там хоть html и js чистый используйте.
3. Как я писал выше, вы хотите комбаин, а это уж извините, бред. Не на таком оборудовании. Реализовать что-то одно. Например распознавание, или биометрию, или карточки, еще куда не шло, если делать все сразу будет нерабочий франкенштейн
Ответ написан
Комментировать
@d-stream
Готовые решения - не подаю, но...
1. Какую БД лучше выбрать под такую задачу? Обращений к ней будет очень много, таких как запись событий и соответственно их просмотр оператором( а может и не одним, в одно время)
Много, это когда надо отследить чипированных болельщиков на стадионе во время чемпионата мира при пожаре)
А так - любая СУБД осилит.
2. Если это веб-сервер то какие технологии лучше подойдут под такое? Django? Node.js?
Можно конечно построить web-сервер со свистелками-перделками, в каждый контроллер посадить на всякий случай селениум и нехай контроллер парсит сайт со свистелками-перделками и влупляет туда свой запрос, а потом распознает картинку "можно" или "нельзя" открыть замок))

Думаю начать надо с осознания, что СКУД - это многоуровневая модель, начиная от аппаратки (weigand, touchmemory и т.п.), через транспорт нижнего уровня (RS232/422/etc) до "более верхнего" типа ethernet, wifi, bt....
Ну или в другом ракурсе - модель реалтаймовых и оффлайновых событий.
Чутка повыше - расписания, табели, штрафы

p.s. Кстати транспортом может быть пользователь СКУД: проходит он через центральную проходную основного корпуса, предъявив смарткарту, а ему на карту подливается список свежих разрешений для удаленного автономного здания рабочего общежития... а обратно - он тащит на карте журнал событий с общежития в центр)
Ответ написан
Комментировать
@Dmtm
Android
>- нужен какой-то контроллер(железо) для управления замком и т.д.
на али полно реле с управлением по rs-232/485
сервер для управления - обычный десктоп
зажечь лапочку удаленно для начала вполне достаточно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы