דלג לתוכן הראשי

צירוף מכשירים למערכת

תהליך צירוף המכשירים הוא השלב הראשון בחיבור מסך אנדרואיד TV למערכת BT Management. התהליך מאובטח ומבטיח שרק מכשירים מורשים יוכלו לגשת לנתונים.

שלבי הצירוף

1. רישום אוטומטי (Auto-Registration)

כאשר אפליקציית GabaiSmart מותקנת ומופעלת לראשונה:

  1. האפליקציה מזהה את המכשיר באמצעות מזהה חומרה ייחודי (Device ID).
  2. היא שולחת בקשה ל-/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)

השרת מקבל את הבקשה ומבצע:

  1. בדיקה אם המכשיר כבר רשום במערכת.
  2. אם לא, הוא יוצר קוד צירוף זמני בן 6 ספרות (למשל: 123456).
  3. הקוד נשמר במסד הנתונים עם תוקף של 10 דקות.
  4. השרת מחזיר את הקוד לאפליקציה.
{
"pairingCode": "123456",
"expiresAt": "2026-01-15T14:30:00Z"
}

3. אישור משתמש (User Confirmation)

המשתמש (בדרך כלל גבאי בית הכנסת) צריך לאשר את הצירוף:

  1. באפליקציית הניהול (Web Client), נווט אל מכשירים > הוסף מכשיר חדש.
  2. הזן את קוד הצירוף שמוצג על המסך.
  3. לחץ על אישור.

4. השלמת הצירוף

לאחר האישור, השרת:

  1. מצמיד את המכשיר לחשבון המשתמש (userId).
  2. מנפיק אסימון גישה (Access Token) או תעודת MQTT למכשיר.
  3. שולח אישור דרך Socket.IO או MQTT למכשיר שהצירוף הצליח.
  4. האפליקציה שומרת את האסימון ב-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

התעודה מוזרקת למכשיר דרך ממשק הניהול.