שליטה מרחוק (Remote Device Control)
מודול זה מאפשר למנהלים לבצע פעולות על המסכים בזמן אמת, ללא צורך בגישה פיזית למכשיר. התקשורת מתבצעת באמצעות WebSocket ו-MQTT להבטחת מהירות (Low Latency).
ארכיטקטורה
- Admin Client שולח בקשת HTTP (
POST /remote-control/:deviceId). - Server מוודא הרשאות ושומר את הפקודה ב-DB (
CommandHistory). - EventsService מפיץ את הפקודה למכשיר המחובר ב-Socket.
- Device מבצע את הפקודה (לדוגמה, באמצעות Accessibility Service באנדרואיד).
- Device מחזיר תשובה (ACK/תוצאה) לשרת.
- Server מעדכן את הסטטוס ב-DB ומחזיר תשובה ללקוח.
פקודות נתמכות
| פקודה | פרמטרים | תיאור |
|---|---|---|
RELOAD | - | רענון האפליקציה (Reload JS Bundle). |
RESTART | - | אתחול האפליקציה מחדש. |
SCREENSHOT | - | צילום מסך ושליחתו לשרת. |
WAKE_UP | - | הדלקת המסך (Wake Lock). |
SET_VOLUME | level: number | שינוי עוצמת שמע (0-100). |
INSTALL_UPDATE | version: string | עדכון גרסת אפליקציה מרחוק (OTA). |
פתרון תקלות
שגיאת Accessibility
אם הפקודה נכשלת עם שגיאת Accessibility Service, יש לוודא ששירות הנגישות מופעל במכשיר האנדרואיד עבור אפליקציית GabaiSmart.
השירות נדרש עבור פעולות כמו swipe, tap, וצילום מסך במכשירים מסוימים.
Timeout
השרת מחכה לתשובה מהמכשיר עד 30 שניות. אם המכשיר לא עונה (למשל, מנותק רשתית), הבקשה תיכשל עם RequestTimeoutException.
ניתן לבדוק את סטטוס החיבור ב-Device Monitoring.