Реалізація управління системою контролю доступу (СКУД) через мобільний застосунок
Інтеграція мобільного застосунку з СКУД — завдання, яке впирається в несумісність протоколів. Контролери Suprema BioStar, HID OSDP, Ironlogic Z-5R, RusGuard — у кожного свій API та формат даних. Ми вирішуємо цю проблему, створюючи єдиний інтерфейс поверх REST або OSDP v2, який однаково зручний для iOS та Android. Завдяки такому підходу замовники економлять до 40% часу на впровадження, уникаючи переписування логіки під кожен контролер.
Мобільний застосунок бере на себе три критичні функції: моніторинг подій проходу в реальному часі, віддалене управління дверима та гнучке управління правами доступу. Без цього охорона змушена чергувати біля пульта, а HR — заповнювати паперові бланки. З нашим застосунком всі операції виконуються за кілька дотиків, а економія на інцидентах безпеки сягає 50% завдяки миттєвій реакції.
Проблеми, які ми вирішуємо
Затримки подій. Стандартний опит REST API кожні 2-5 секунд призводить до пропуску подій при штурмі турнікета. Ми використовуємо WebSocket (BioStar 2 підтримує /ws/events) для стрічки в реальному часі. У нас затримка між проходом і появою події в застосунку — менше 500 мс. Це в 4 рази швидше, ніж при опиті.
Безпека віддаленого відкриття. Відкрити двері по кнопці в застосунку — зручно, але небезпечно без захисту. Перехоплений запит може бути використаний для replay-атаки. Ми впроваджуємо підпис HMAC-SHA256 з timestamp, що виключає повторне використання запиту після 30 секунд. Кожне відкриття логується на сервері.
Управління картками та правами. Вручну вводити 10-значний номер картки Mifare — джерело помилок. Ми додаємо NFC-зчитування: охоронець прикладає картку до телефону, номер підхоплюється автоматично. Далі — вибір дверей та часового розкладу через інтуїтивну форму. Час додавання картки скорочується з 30 до 5 секунд, а кількість помилок введення падає до нуля.
Як ми це робимо: стек та інтеграція
Для інтеграції з контролерами використовуємо REST API (Suprema BioStar 2, HID Mercury) або OSDP v2 через TCP. У проекті на Kotlin Multiplatform структура події проходу виглядає так:
data class AccessEvent( val id: Long, val timestamp: Instant, val deviceId: Long, val doorId: Long, val userId: Long?, val cardNumber: String?, val eventCode: Int, val temperature: Double?, val imageData: String? ) Жива стрічка через WebSocket — стандартний компонент. Код на Kotlin для OkHttp:
class AcsEventStream(private val url: String, private val token: String) { fun observe(): Flow<AccessEvent> = callbackFlow { val client = OkHttpClient.Builder() .readTimeout(0, TimeUnit.MILLISECONDS) .build() val ws = client.newWebSocket( Request.Builder().url(url) .header("Authorization", "Bearer $token").build(), object : WebSocketListener() { override fun onMessage(webSocket: WebSocket, text: String) { val event = Json.decodeFromString<AccessEvent>(text) trySend(event) } override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) { close(t) } } ) awaitClose { ws.close(1000, null) } } } Чому безпека віддаленого відкриття критична?
Будь-який запит на відкриття дверей повинен бути підписаний і перевірений сервером. Наша реалізація на Android/iOS:
suspend fun unlockDoor(doorId: Long) { val timestamp = System.currentTimeMillis() val payload = "$timestamp:$doorId:${authService.userId}" val signature = hmacSha256(payload, authService.apiSecret) api.unlockDoor(DoorUnlockRequest( doorId = doorId, timestamp = timestamp, signature = signature, reason = "manual_unlock_mobile" )) } Сервер перевіряє: timestamp ≤ 30 секунд, підпис збігається, у користувача є дозвіл door:unlock. Без цих перевірок зловмисник, перехопивши трафік, може відкрити двері повторно.
Як інтегрувати NFC для зчитування карток?
На Android використовуємо NfcAdapter, на iOS — CoreNFC. Прикладаєте картку до телефону, застосунок зчитує UID картки та відправляє на сервер для прив'язки до користувача. Це скорочує час додавання картки з 30 до 5 секунд і виключає помилки введення.
Що входить в роботу?
Ми постачаємо не просто застосунок, а повний комплект: вихідний код, документацію по API інтеграції, доступи до серверної частини (якщо потрібно), навчання адміністраторів, а також підтримку протягом 3 місяців після запуску. Все це фіксується в договорі та дозволяє вам самостійно розвивати систему.
Процес роботи
| Етап | Що робимо | Результат |
|---|---|---|
| Аналітика | Вивчаємо API СКУД, погоджуємо функції | ТЗ на розробку |
| Проектування | Архітектура застосунку, дизайн екранів | Figma-макети, діаграми |
| Реалізація | Розробка мобільного клієнта, інтеграція з API | Працюючий прототип |
| Тестування | Функціональне, навантажувальне, безпека | Звіт про тестування |
| Деплой | Публікація в App Store / Google Play, налаштування моніторингу | Застосунок в сторах |
Терміни орієнтовно
Розробка MVP з базовим функціоналом: стрічка подій, віддалене відкриття, управління картками через NFC — від 4 до 7 тижнів. Вартість розраховується індивідуально після вивчення API конкретної системи та вимог до безпеки.
Типові помилки при розробці СКУД-застосунку
- Відсутність захисту від replay-атак на запити відкриття дверей.
- Ігнорування перевірки прав доступу на стороні сервера (коли клієнт вирішує, що можна, а що ні).
- Використання довгих інтервалів опиту REST API замість WebSocket.
- Ручне введення номерів карток без NFC.
Додаткові деталі щодо безпеки
Згідно з [OSDP v2](https://en.wikipedia.org/wiki/Open_Supervised_Device_Protocol), рекомендується використовувати шифрування AES-128. У реалізаціях з REST API ми завжди вимагаємо HTTPS та валідацію сертифікатів на клієнті.У нас за плечима 5+ років досвіду розробки мобільних застосунків для СКУД, понад 20 впроваджених проектів для замовників в Україні та СНД. Ми гарантуємо коректну інтеграцію з будь-яким API та безпеку на рівні App Store Review Guidelines.
| Порівняння способів введення карток | Час | Помилки |
|---|---|---|
| Ручне введення | 30 с | 1 на 100 |
| NFC зчитування | 5 с | 0 на 100 |
Зацікавлені? Отримайте консультацію по вашому проекту — ми оцінимо складність інтеграції та запропонуємо рішення. Зв'яжіться з нами, щоб обговорити деталі.
Зверніть увагу: наша команда має сертифікати з розробки під iOS та Android, а також досвід роботи з Suprema BioStar, HID та RusGuard.







