צירוף מכשירים למערכת
תהליך צירוף המכשירים הוא השלב הראשון בחיבור מסך אנדרואיד TV למערכת BT Management. התהליך מאובטח ומבטיח שרק מכשירים מורשים יוכלו לגשת לנתונים.
שלבי הצירוף
1. רישום אוטומטי (Auto-Registration)
כאשר אפליקציית GabaiSmart מותקנת ומופעלת לראשונה:
- האפליקציה מזהה את המכשיר באמצעות מזהה חומרה ייחודי (
Device ID). - היא שולחת בקשה ל-
/api/devices/auto-registerעם הפרטים הבאים:deviceId: מזהה ייחודי של המכשיר (IMEI, Serial Number, או UUID מיוצר).deviceName: שם המכשיר (למשל: "Android TV - Lobby").deviceType: סוג המכשיר (android,ios,web).
{
"deviceId": "ABC123DEF456",
"deviceName": "TV Hall Main",
"deviceType": "android"
}
2. יצירת קוד צירוף (Pairing Code)
השרת מקבל את הבקשה ומבצע:
- בדיקה אם המכשיר כבר רשום במערכת.
- אם לא, הוא יוצר קוד צירוף זמני בן 6 ספרות (למשל:
123456). - הקוד נשמר במסד הנתונים עם תוקף של 10 דקות.
- השרת מחזיר את הקוד לאפליקציה.
{
"pairingCode": "123456",
"expiresAt": "2026-01-15T14:30:00Z"
}
3. אישור משתמש (User Confirmation)
המשתמש (בדרך כלל גבאי בית הכנסת) צריך לאשר את הצירוף:
- באפליקציית הניהול (Web Client), נווט אל מכשירים > הוסף מכשיר חדש.
- הזן את קוד הצירוף שמוצג על המסך.
- לחץ על אישור.
4. השלמת הצירוף
לאחר האישור, השרת:
- מצמיד את המכשיר לחשבון המשתמש (
userId). - מנפיק אסימון גישה (Access Token) או תעודת MQTT למכשיר.
- שולח אישור דרך Socket.IO או MQTT למכשיר שהצירוף הצליח.
- האפליקציה שומרת את האסימון ב-
AsyncStorageועוברת למסך התצוגה הראשי.
אבטחת התהליך
הצפנה
כל התקשורת מתבצעת דרך HTTPS (TLS/SSL).
פג תוקף
קודי הצירוף תקפים ל-10 דקות בלבד. לאחר מכן הם נמחקים אוטומטית.
מניעת שימוש חוזר
כל קוד צירוף יכול לשמש פעם אחת בלבד. לאחר השימוש הוא מושבת.
ביקורת (Audit)
כל פעולת צירוף נרשמת ב-AuditLog עם פרטי המשתמש, המכשיר והזמן.
ניטור מכשירים (Device Monitoring)
לאחר הצירוף המוצלח, המכשיר נכנס למצב ניטור:
דגלי סטטוס (Status Flags)
| דגל | משמעות |
|---|---|
online | המכשיר מחובר ושולח Heartbeat. |
offline | לא התקבל Heartbeat במשך 5 דקות. |
error | שגיאה קריטית במכשיר (Crash, Battery Low). |
updating | המכשיר מתעדכן (OTA). |
rebooting | המכשיר בתהליך אתחול. |
Heartbeat
המכשיר שולח הודעת Heartbeat כל דקה ל-Topic:
device/{deviceId}/status
דוגמה לפורמט:
{
"state": "online",
"version": "1.2.3",
"ip": "192.168.1.100",
"lastSeen": "2026-01-15T12:34:56Z"
}
פתרון בעיות נפוצות
בעיה: קוד הצירוף לא עובד
פתרון:
- וודא שהקוד הוזן תוך 10 דקות מיצירתו.
- בדוק שהקוד נכתב נכון (6 ספרות).
- נסה ליצור קוד חדש באפליקציה.
בעיה: המכשיר לא מופיע כ-Online
פתרון:
- בדוק חיבור אינטרנט במכשיר.
- וודא ש-MQTT Broker פעיל:
docker ps | grep mosquitto - בדוק לוגים של האפליקציה:
adb logcat | grep GabaiSmart
בעיה: המכשיר מתנתק לעיתים קרובות
פתרון:
- בדוק יציבות הרשת.
- הגדר Keep-Alive ארוך יותר בהגדרות MQTT.
- בדוק אם יש בעיית חסכון באנרגיה (Doze Mode) באנדרואיד:
adb shell dumpsys battery unplug
adb shell am set-inactive <package.name> false
יצירת תעודת מכשיר (Optional)
במערכות מתקדמות, ניתן ליצור תעודת SSL/TLS ייעודית לכל מכשיר:
cd server-nest/certificates/devices
openssl genrsa -out device-{deviceId}.key 2048
openssl req -new -key device-{deviceId}.key -out device-{deviceId}.csr
openssl x509 -req -in device-{deviceId}.csr -CA ca.crt -CAkey ca.key -out device-{deviceId}.crt
התעודה מוזרקת למכשיר דרך ממשק הניהול.