הטמעת בקרת גישה מבוססת RFID באפליקציה ניידת
תארו לעצמכם: מאבטח במחסום רואה באפליקציה שכרטיס של עובד חסום, בעוד שבמחסן מרוחק מתרחש ניסיון כניסה מחוץ לשעות הפעילות. בקרת גישה מבוססת RFID דרך אפליקציה ניידת מספקת יומן ביקורת לכל אירוע, ניהול הרשאות גישה לכל משתמש ואזור, טיפול בתרחישי עבודה ללא רשת כאשר בקר הדלת אינו זמין, ואינטגרציה עם קוראי RFID של HID/Wiegand. הניסיון שלנו בתחום זה עולה על 5 שנים ו-15 פרויקטים למתקנים תעשייתיים ומרכזים עסקיים. אנו מיישמים אפליקציות ניידות למערכות בקרת כניסה (ACS) במתכונת turnkey, כולל הגדרת בקרים והדרכת צוות. עלות פרויקט טיפוסית: $15,000–$30,000.
כיצד האפליקציה הניידת מתקשרת עם בקר הדלת?
האפליקציה הניידת היא כלי ניהול למערכת ACS ומציגה יומן ביקורת. הלוגיקה של "פתוח או לא" לעולם לא צריכה להיות רק בטלפון—בקר הדלת (לדוגמה, HID VertX, Honeywell Pro-Watch) מקבל את ההחלטה על סמך מסד הנתונים שלו. תהליך טיפוסי:
Мобильное приложение → REST API СКУД → Контроллер двери → Считыватель → Электромагнитный замок האפליקציה הניידת מנהלת:
- מסד נתונים של בעלי כרטיסים (הוספה, חסימה, מחיקה)
- לוחות זמנים לכניסה (מתי, מי, ולאילו אזורים)
- ניטור אירועים בזמן אמת (עד 10,000 אירועים/דקה)
- פתיחת דלת מרחוק
קריאת כרטיסי RFID עם סמארטפון
הטלפון עצמו יכול לשמש כקורא RFID באמצעות NFC (לכרטיסי MIFARE Classic/DESFire) או באמצעות קורא BLE חיצוני (לכרטיסי HF 13.56 MHz או LF 125 kHz). MIFARE הוא סימן מסחרי של NXP Semiconductors(ויקיפדיה).
NFC ב-iOS (CoreNFC) עבור MIFARE:
import CoreNFC
class AccessCardReader: NSObject, NFCTagReaderSessionDelegate {
var session: NFCTagReaderSession?
func startReading() {
session = NFCTagReaderSession(pollingOption: [.iso14443], delegate: self)
session?.alertMessage = "Приложите карту доступа"
session?.begin()
}
func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) {
guard let tag = tags.first, case .miFare(let mifareTag) = tag else { return }
session.connect(to: tag) { error in
if error != nil {
session.invalidate(errorMessage: "Ошибка подключения")
return
}
let uid = mifareTag.identifier.map { String(format: "%02X", $0) }.joined()
self.onCardDetected(uid: uid)
session.invalidate()
}
}
}ה-UID של כרטיס MIFARE הוא פשוט מספר ייחודי. עבור HID ProxCard 125 kHz, הסמארטפון לא יכול לקרוא אותו פיזית—נדרש קורא BLE חיצוני.
MIFARE DESFire EV2 — קריאה מאובטחת: כרטיסי DESFire משמשים במערכות ACS רציניות. קריאת סקטורים דורשת אימות AES-128:
let selectCmd = Data([0x90, 0x5A, 0x00, 0x00, 0x03]) + applicationId + Data([0x00])
mifareTag.sendMiFareCommand(commandPacket: selectCmd) { response, error in
// Далее Authenticate с AES ключом приложения
} היכן מאוחסנים המפתחות?
המפתחות מאוחסנים ב-Secure Enclave—לא בקוד האפליקציה. `SecKeyCreateRandomKey` עם מאפיין `.secureEnclaveBound`.יומן ביקורת וניטור
ניטור אירועים בזמן אמת באמצעות WebSocket או Server-Sent Events (SSE):
class AccessEventMonitor(private val accessApi: AccessControlApi) {
private val _events = MutableSharedFlow<AccessEvent>(replay = 50)
val events: SharedFlow<AccessEvent> = _events.asSharedFlow()
fun startMonitoring(zoneIds: List<String>) {
scope.launch {
accessApi.streamEvents(zoneIds).collect { event ->
_events.emit(event)
if (event.accessResult == AccessResult.DENIED) {
sendDeniedAlert(event)
}
}
}
}
}
data class AccessEvent(
val cardholderName: String,
val cardUid: String,
val doorName: String,
val timestamp: Long,
val accessResult: AccessResult,
val deniedReason: String?
)Мобильное приложение → REST API СКУД → Контроллер двери → Считыватель → Электромагнитный замок מספק פרטים על הסירוב. המאבטח צריך לדעת: האם הכרטיס חסום, או שהאדם פשוט הגיע מחוץ לשעות הפעילות? פעולות שונות דורשות תגובות שונות.
מה לעשות כשהרשת נופלת?
בקר הדלת פועל באופן עצמאי באמצעות מסד הנתונים המקומי של בעלי הכרטיסים. כאשר החיבור משוחזר, האפליקציה הניידת מסנכרנת אירועים שהוחמצו באמצעות REST API. מצב עבודה ללא רשת אינו קריטי לאבטחה, אך יומן הביקורת חייב להיות מלא. אנו מבטיחים סנכרון נכון באמצעות תבנית Outbox ובקשות אידמפוטנטיות.
שליטה מרחוק בדלת
Remote Unlock—פתיחת דלת ללא נוכחות פיזית:
suspend fun remoteUnlock(doorId: String, durationSeconds: Int = 5) {
val result = accessApi.unlockDoor(
doorId = doorId,
unlockDuration = durationSeconds,
operatorId = currentUser.id,
reason = "remote_unlock_mobile"
)
if (result.isSuccess) {
logAuditEvent(AuditAction.REMOTE_UNLOCK, doorId)
}
}כל פתיחה מרחוק מתועדת עם import CoreNFC class AccessCardReader: NSObject, NFCTagReaderSessionDelegate { var session: NFCTagReaderSession? func startReading() { session = NFCTagReaderSession(pollingOption: [.iso14443], delegate: self) session?.alertMessage = "Приложите карту доступа" session?.begin() } func tagReaderSession(_ session: NFCTagReaderSession, didDetect tags: [NFCTag]) { guard let tag = tags.first, case .miFare(let mifareTag) = tag else { return } session.connect(to: tag) { error in if error != nil { session.invalidate(errorMessage: "Ошибка подключения"); return } let uid = mifareTag.identifier.map { String(format: "%02X", $0) }.joined() self.onCardDetected(uid: uid) session.invalidate() } } } . ללא זה, חקירת אירועים בלתי אפשרית.
השוואת טכנולוגיות: NFC לעומת קורא BLE
| פרמטר | NFC (מובנה) | קורא BLE (חיצוני) |
|---|---|---|
| תדר | 13.56 MHz | LF 125 kHz / HF 13.56 MHz |
| כרטיסים נתמכים | MIFARE Classic, DESFire | HID Prox, iClass, LEGIC |
| אבטחה | גבוהה (AES ב-Secure Enclave) | בינונית (מפתחות על הקורא) |
| מהירות קריאה | < 0.3 שניות | 0.1–0.5 שניות |
| צורך לשאת קורא | לא | כן |
עבור מתקנים עם תשתית קיימת של HID ProxCard, קורא BLE הוא האפשרות היחידה. עבור מערכות חדשות, אנו בוחרים ב-MIFARE DESFire—אמין ומהיר יותר. הצפנת AES-128 של DESFire מאובטחת פי 256 מהצפנת 40-bit של HID ProxCard.
לוח זמנים לשלבי הפיתוח
| שלב | משך | היקף העבודה |
|---|---|---|
| ניתוח | 1–2 ימים | בחינת מערכת ACS, סכמות אזורים, פרוטוקולי Wiegand/OSDP |
| עיצוב | 2–3 ימים | REST API, מודל יומן ביקורת, סכמת הרשאות |
| יישום | 5–10 ימים | אפליקציה ניידת, backend, אינטגרציה עם בקר |
| בדיקות | 2–3 ימים | פונקציונליות, עומס (עד 10,000 אירועים/דקה), מצב ללא רשת |
| פריסה | 1–2 ימים | פרסום בחנות, הגדרת push, הדרכה |
תהליך העבודה
- ניתוח — בחינת מערכת ACS קיימת, פרוטוקולים (Wiegand, OSDP), סכמות אזורים.
- עיצוב — ארכיטקטורת REST API, מודל נתונים ליומן ביקורת, סכמות הרשאות.
- יישום — אפליקציה ניידת (iOS/Android/Flutter), שירות backend, אינטגרציה עם בקר.
- בדיקות — פונקציונליות, עומס (עד 10,000 אירועים/דקה), תרחישי עבודה ללא רשת.
- פריסה — פרסום ב-App Store/Google Play, הגדרת push (APNs/FCM), הדרכת מנהלים.
מה כלול בעבודה
- קוד מקור של האפליקציה הניידת וה-backend
- תיעוד: מפרט API (OpenAPI), מדריך למנהל
- אינטגרציה עם מערכות ACS קיימות (HID, Honeywell, ZKTeco)
- הגדרת התראות push (APNs/FCM) וסביבת בדיקות (TestFlight, Firebase Distribution)
- אחריות לשנה על תקלות באפליקציה
- 3 חודשי תמיכה לאחר ההשקה (ייעוץ, שינויים)
לוח זמנים וכיצד להזמין
אנו מעריכים את הפרויקט תוך יום אחד לאחר מילוי הבריף. לוחות זמנים:
- מסד נתונים של בעלי כרטיסים, יומן ביקורת, Remote Unlock: מ-5 ימים
- הוספת קריאת NFC MIFARE: +3 ימים
- אינטגרציה מלאה עם HID/Honeywell: 2–4 שבועות
אם אתם זקוקים למערכת ACS אמינה עם שליטה ניידת, קבלו ייעוץ או הזמינו פיתוח. אנו מתכננים ומיישמים במתכונת turnkey, עם אישורי תאימות וניסיון אמיתי בעשרות מתקנים.
עלות פרויקט טיפוסית: $15,000–$30,000. פתיחת דלת מרחוק דרך אפליקציה ניידת מהירה פי 5 מעקיפה ידנית.







