בוחרים את ה-API המתאים כדי לתקשר עם מכשיר החומרה הרצוי.
מטרת המדריך הזה היא לעזור לכם לבחור את ה-API הטוב ביותר לתקשורת עם מכשיר חומרה (למשל מצלמת אינטרנט, מיקרופון וכו') באינטרנט. במילה "הכי טוב" אני מתכוון שהוא נותן לכם את כל מה שאתם צריכים במינימום עבודה. במילים אחרות, אתם יודעים מה תרחיש השימוש הכללי שאתם רוצים לפתור (למשל, גישה לסרטון), אבל אתם לא יודעים באיזה API להשתמש או תוהים אם יש דרך אחרת להשיג את המטרה.
אחת הבעיות הנפוצות שאני רואה אצל מפתחי אתרים היא שהם מתחילים להשתמש בממשקי API ברמה נמוכה בלי ללמוד על ממשקי API ברמה גבוהה יותר, שקל יותר להטמיע ומספקים חוויית משתמש טובה יותר. לכן, המדריך הזה מתחיל בהמלצה על ממשקי API ברמה גבוהה יותר, אבל גם מזכיר ממשקי API ברמה נמוכה יותר למקרה שקבעתם שממשק ה-API ברמה הגבוהה יותר לא עונה על הצרכים שלכם.
🕹 קבלת אירועי קלט מהמכשיר הזה
נסו להאזין לאירועים של מקלדת ומצביע. אם המכשיר הוא שלט משחק, משתמשים ב-Gamepad API כדי לדעת על אילו כפתורים לוחצים ואילו צירים זזים.
אם אף אחת מהאפשרויות האלה לא מתאימה לכם, יכול להיות ש-API ברמה נמוכה הוא הפתרון. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
📸 גישה לאודיו ולווידאו מהמכשיר הזה
משתמשים ב-MediaDevices.getUserMedia() כדי לקבל שידורי אודיו ווידאו חיים מהמכשיר הזה, וקוראים מידע נוסף על צילום וידאו והקלטת אודיו. אתם יכולים גם לשלוט בהזזה, בהטיה ובזום של המצלמה, ובהגדרות אחרות של המצלמה כמו בהירות וניגודיות, ואפילו לצלם תמונות סטילס. אפשר להשתמש ב-Web Audio כדי להוסיף אפקטים לאודיו, ליצור תצוגות חזותיות של אודיו או להחיל אפקטים מרחביים (כמו הזזה). בנוסף, כדאי לבדוק איך ליצור פרופיל של ביצועי אפליקציות Web Audio ב-Chrome.
אם אף אחת מהאפשרויות האלה לא מתאימה לכם, יכול להיות ש-API ברמה נמוכה הוא הפתרון. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🖨 הדפסה במכשיר הזה
משתמשים ב-window.print() כדי לפתוח תיבת דו-שיח בדפדפן שמאפשרת למשתמש לבחור את המכשיר הזה כיעד להדפסת המסמך הנוכחי.
אם זה לא עובד, יכול להיות ש-API ברמה נמוכה הוא הפתרון. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🔐 אימות באמצעות המכשיר הזה
משתמשים ב-WebAuthn כדי ליצור פרטי כניסה חזקים, מאומתים ומוגבלים למקור של מפתח ציבורי באמצעות מכשיר אבטחת החומרה הזה, כדי לאמת משתמשים. הוא תומך בשימוש במאמתי U2F או FIDO2 בנדידה באמצעות Bluetooth, NFC ו-USB – שנקראים גם מפתחות אבטחה – וגם במאמת פלטפורמה, שמאפשר למשתמשים לאמת את הזהות שלהם באמצעות טביעות אצבע או נעילות מסך. איך מפתחים את אפליקציית WebAuthn הראשונה
אם המכשיר הזה הוא סוג אחר של מכשיר אבטחה פיזי (למשל, ארנק למטבעות וירטואליים), יכול להיות שהפתרון הוא API ברמה נמוכה. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🗄 גישה לקבצים במכשיר הזה
משתמשים ב-File System Access API כדי לקרוא קבצים ותיקיות במכשיר של המשתמש ולשמור בהם שינויים ישירות. אם הוא לא זמין, משתמשים ב-File API כדי לבקש מהמשתמש לבחור קבצים מקומיים מתיבת דו-שיח בדפדפן, ואז קוראים את התוכן של הקבצים האלה.
אם אף אחת מהאפשרויות האלה לא מתאימה לכם, יכול להיות ש-API ברמה נמוכה הוא הפתרון. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🧲 גישה לחיישנים במכשיר הזה
אפשר להשתמש ב-Generic Sensor API כדי לקרוא ערכי חיישנים גולמיים מחיישני תנועה (למשל מד תאוצה או ג'ירוסקופ) ומחיישני סביבה (למשל אור מהסביבה, מגנטומטר). אם הוא לא זמין, משתמשים באירועים DeviceMotion ו-DeviceOrientation כדי לקבל גישה למד התאוצה, לג'ירוסקופ ולמצפן המובנים במכשירים ניידים.
אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🛰 גישה לקואורדינטות של GPS במכשיר הזה
משתמשים ב-Geolocation API כדי לקבל את קו הרוחב וקו האורך של המיקום הנוכחי של המשתמש במכשיר הזה.
אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
🔋 בדיקת הסוללה במכשיר הזה
אפשר להשתמש ב-Battery API כדי לקבל מידע על רמת הטעינה של הסוללה במארח, ולקבל התראה כשרמת הטעינה או סטטוס הטעינה משתנים.
אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדי להתחיל, כדאי לעיין במאמר איך לתקשר עם המכשיר.
📞 לתקשר עם המכשיר הזה דרך הרשת
ברשת המקומית, משתמשים ב-Remote Playback API כדי לשדר אודיו ו/או וידאו במכשיר הפעלה מרחוק (למשל, טלוויזיה חכמה או רמקול אלחוטי) או משתמשים ב-Presentation API כדי להציג דף אינטרנט במסך שני (למשל, מסך משני שמחובר באמצעות כבל HDMI או טלוויזיה חכמה שמחוברת באופן אלחוטי).
אם המכשיר הזה חושף שרת אינטרנט, משתמשים ב-Fetch API או ב-WebSockets כדי לאחזר נתונים מהמכשיר הזה על ידי פנייה לנקודות הקצה המתאימות. שקעי TCP ו-UDP לא זמינים באינטרנט, אבל אפשר להשתמש ב-WebTransport כדי לטפל בחיבורי רשת אינטראקטיביים, דו-כיווניים ומרובי-ערוצים. שימו לב שאתם יכולים להשתמש ב-WebRTC גם כדי להעביר נתונים בזמן אמת לדפדפנים אחרים באמצעות פרוטוקול P2P.
🧱 איך לתקשר עם המכשיר
ההחלטה באיזה API ברמה נמוכה להשתמש נקבעת לפי אופי החיבור הפיזי למכשיר. אם הוא אלחוטי, כדאי לבדוק את Web NFC לחיבורים אלחוטיים בטווח קצר מאוד, ואת Web Bluetooth או Web Serial למכשירים אלחוטיים בקרבת מקום.
באמצעות Web NFC, אפשר לקרוא ולכתוב במכשיר הזה כשהוא נמצא בקרבת המכשיר של המשתמש (בדרך כלל 5-10 ס"מ). כלים כמו NFC TagInfo by NXP מאפשרים לכם לעיין בתוכן של המכשיר הזה למטרות הנדסה הפוכה.
באמצעות Web Bluetooth, אתם יכולים להתחבר למכשיר הזה דרך חיבור Bluetooth עם צריכת אנרגיה נמוכה (BLE). קל יחסית לתקשר עם מכשיר כזה אם הוא משתמש בשירותי Bluetooth GATT סטנדרטיים (כמו שירות הסוללה), כי ההתנהגות שלהם מתועדת היטב. אם לא, בשלב הזה תצטרכו למצוא תיעוד חומרה למכשיר הזה או לבצע הנדסה הפוכה. אתם יכולים להשתמש בכלים חיצוניים כמו nRF Connect for Mobile ובכלים מובנים בדפדפן, כמו הדף הפנימי
about://bluetooth-internalsבדפדפנים שמבוססים על Chromium. כדאי לעיין במאמר Reverse-Engineering a Bluetooth Lightbulb (הנדסה הפוכה של נורת Bluetooth) של אורי שקד. חשוב לדעת שמכשירי Bluetooth יכולים גם להשתמש בפרוטוקולים של HID או של יציאה טורית.יציאה טורית דרך Bluetooth: תקשורת עם שירותי RFCOMM במכשירי Bluetooth Classic מותאמים, כמו פרופיל היציאה הטורית (SPP) הסטנדרטי. אבל בשביל שירותים מותאמים אישית שמבוססים על RFCOMM, תצטרכו לעיין במסמכי התיעוד של ספק המכשיר כדי למצוא את ה-UUID של השירות שצריך להעביר אל
requestPort().
אם אתם משתמשים בחיבור קווי, כדאי לבדוק את ממשקי ה-API האלה בסדר הספציפי הזה:
כדי להבין את דוחות ה-HID ואת מתארי הדוחות באמצעות אוספים ב-WebHID, חשוב להבין את המכשיר הזה. זה יכול להיות מאתגר בלי התיעוד של הספק למכשיר הזה. כלים כמו Wireshark יכולים לעזור לכם לבצע הנדסה הפוכה. אתם יכולים גם להשתמש באפליקציית האינטרנט HID Explorer כדי להעביר את המידע של מכשירי HID לפורמט קריא לאנשים.
עם Web Serial, בלי תיעוד של הספק למכשיר הזה ולפקודות שהמכשיר הזה תומך בהן, זה קשה אבל עדיין אפשרי אם מנחשים נכון. כדי לבצע הנדסה הפוכה של המכשיר הזה, אפשר לתעד תעבורת נתונים גולמית ב-USB באמצעות כלים כמו Wireshark. אפשר גם להשתמש באפליקציית האינטרנט Serial Terminal כדי להתנסות במכשיר הזה אם הוא משתמש בפרוטוקול קריא לאנשים.
עם WebUSB, בלי תיעוד ברור של המכשיר הזה ושל פקודות ה-USB שנתמכות בו, זה קשה אבל עדיין אפשרי אם מנחשים נכון. Exploring WebUSB and its exciting potential (בחינת WebUSB והפוטנציאל המלהיב שלו) מאת Suz Hinton. אפשר גם לבצע הנדסה הפוכה של המכשיר הזה על ידי תיעוד תעבורת נתונים גולמית ב-USB ובדיקת מתארי USB באמצעות כלים חיצוניים כמו Wireshark וכלים מובנים בדפדפן, כמו הדף הפנימי
about://usb-internalsבדפדפנים שמבוססים על Chromium.
תודות
תודה ל-Reilly Grant, ל-Thomas Steiner ול-Kayce Basques על בדיקת המאמר הזה.