גישה להתקני חומרה באינטרנט

בוחרים את ממשק ה-API המתאים לצורך תקשורת עם התקן חומרה לבחירתכם.

פרנסואה בופורט
פרנסואה בופורט

מטרת המדריך הזה היא לעזור לכם לבחור את ה-API הטוב ביותר לתקשורת עם מכשירי חומרה (למשל: מצלמת אינטרנט, מיקרופון וכו') באינטרנט. במילה "הטוב ביותר" הכוונה היא לתת לכם את כל מה שאתם צריכים, תוך כדי עבודה הקצרה ביותר. במילים אחרות, אתם מכירים את התרחיש הכללי לדוגמה שאתם רוצים לפתור (למשל, גישה לווידאו), אבל לא יודעים באיזה API להשתמש או תוהים אם יש דרך אחרת להשיג אותו.

אחת הבעיות הנפוצות אצל מפתחי אתרים היא מעבר לממשקי API ברמה נמוכה, בלי ללמוד על ממשקי ה-API ברמה גבוהה יותר שקל יותר להטמיע ולספק חוויית משתמש טובה יותר. לכן, המדריך מתחיל בהמלצה על ממשקי API ברמה גבוהה יותר, אבל מופיע בו גם ממשקי API ברמה נמוכה יותר, למקרה שהבנתם שה-API ברמה הגבוהה יותר לא עונה על הצרכים שלכם.

🕹 קבלת אירועי קלט מהמכשיר הזה

כדאי לנסות להאזין לאירועי מקלדת ומצביע. אם המכשיר הזה משמש לשליטה בגיימינג, תוכלו להשתמש ב-Gamepad API כדי לדעת על אילו לחצנים צריך ללחוץ ואילו צירים זזים.

אם אף אחת מהאפשרויות האלה לא פותרת את הבעיה, יכול להיות שממשק API ברמה נמוכה הוא הפתרון. כדאי לעיין במאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🎂 גישה לאודיו ולווידאו מהמכשיר הזה

אפשר להשתמש ב-MediaDevices.getUserMedia() כדי לקבל שידורי אודיו ווידאו בשידור חי מהמכשיר הזה כדי ללמוד על צילום וידאו ואודיו. אפשר גם לשלוט בתנועה, בהטיה ובזום במצלמה ובהגדרות נוספות של המצלמה, כמו בהירות וניגודיות, ואפילו לצלם תמונות סטילס. אפשר להשתמש ב-Web Audio כדי להוסיף אפקטים לאודיו, ליצור רכיבים חזותיים של אודיו או להשתמש באפקטים מרחביים (כמו הזזה). למידע נוסף על פרופיל הביצועים של אפליקציות Web Audio ב-Chrome.

אם אף אחת מהאפשרויות האלה לא פותרת את הבעיה, יכול להיות שממשק API ברמה נמוכה הוא הפתרון. כדאי לעיין במאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🖨 כדאי להדפיס במכשיר הזה

באמצעות window.print() ניתן לפתוח תיבת דו-שיח בדפדפן שמאפשרת למשתמש לבחור את המכשיר הזה כיעד להדפסה של המסמך הנוכחי.

אם אפשרות זו לא מתאימה לכם, ייתכן שהפתרון יהיה API ברמה נמוכה. כדאי לקרוא את המאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🔐 אימות באמצעות המכשיר הזה

כדי לאמת משתמשים, משתמשים ב-WebAuthn כדי ליצור פרטי כניסה חזקה, מאומתת וברמת המקור ברמת המקור. הוא תומך בשימוש במאמתי Bluetooth, NFC ו-USB, הידועים גם כמפתחות אבטחה, וכן במאמת פלטפורמה, שמאפשר למשתמשים לבצע אימות באמצעות טביעות האצבע או נעילת המסך שלהם. מומלץ לקרוא את המאמר איך יוצרים את אפליקציית WebAuthn הראשונה שלכם.

אם המכשיר הזה הוא מכשיר מסוג אחר לאבטחת חומרה (למשל, ארנק של מטבעות וירטואליים), יכול להיות ש-API ברמה נמוכה הוא הפתרון. לקבלת מידע שיעזור לכם להתחיל, כדאי לקרוא את המאמר איך לתקשר עם המכשיר.

🗄 גישה לקבצים במכשיר הזה

משתמשים ב-File System Access API כדי לקרוא ולשמור את השינויים ישירות בקבצים ובתיקיות במכשיר של המשתמש. אם האפשרות לא זמינה, משתמשים ב-File API כדי לבקש מהמשתמש לבחור קבצים מקומיים מתיבת דו-שיח של דפדפן, ולאחר מכן לקרוא את תוכן הקבצים האלה.

אם אף אחת מהאפשרויות האלה לא פותרת את הבעיה, יכול להיות שממשק API ברמה נמוכה הוא הפתרון. כדאי לעיין במאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🧲 גישה לחיישנים במכשיר הזה

אפשר להשתמש ב-General Sensor API כדי לקרוא ערכי חיישנים גולמיים מחיישני תנועה (למשל מד תאוצה או ג'ירוסקופ) ומחיישנים סביבתיים (למשל אור מהסביבה, מגנטומטר). אם האפשרות הזו לא זמינה, השתמשו באירועים DeviceMotion ו-DeviceOrientation כדי לקבל גישה למד התאוצה, לג'ירוסקופ ולמצפן המובנים במכשירים ניידים.

אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדאי לקרוא את המאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🛰 גישה לקואורדינטות של GPS במכשיר הזה

השתמשו ב-Geolocation API על מנת לקבל את קווי האורך והרוחב של המיקום הנוכחי של המשתמש במכשיר הזה.

אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדאי לקרוא את המאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

🔋 בדיקת הסוללה במכשיר זה

עליכם להשתמש ב-סוללה API כדי לקבל מידע על המארח לגבי רמת הטעינה של הסוללה ולקבל הודעה כשרמת הסוללה או סטטוס הטעינה משתנים.

אם זה לא עובד, יכול להיות שהפתרון הוא API ברמה נמוכה. כדאי לקרוא את המאמר איך לתקשר עם המכשיר כדי להתחיל במסע.

📲 תקשורת עם המכשיר הזה דרך הרשת

ברשת המקומית, השתמשו ב-Remote Playback API כדי לשדר אודיו או וידאו במכשיר הפעלה מרוחק (למשל, טלוויזיה חכמה או רמקול אלחוטי), או להשתמש ב-presentation API כדי לעבד דף אינטרנט במסך שני (למשל, מסך משני המחובר באמצעות כבל HDMI או טלוויזיה חכמה שמחוברת באופן אלחוטי).

אם המכשיר הזה חושף שרת אינטרנט, צריך להשתמש ב-Fetch API או ב-WebSockets כדי לאחזר נתונים מהמכשיר הזה על ידי הגעה לנקודות הקצה המתאימות. אמנם שקעי TCP ו-UDP לא זמינים באינטרנט, אבל תוכלו להשתמש ב-WebTransport כדי לטפל בחיבורים לרשת אינטראקטיביים, דו-כיווניים ומרובים. שימו לב שאפשר להשתמש ב-WebRTC גם כדי להעביר נתונים בזמן אמת עם דפדפנים אחרים באמצעות פרוטוקול מקצה לקצה (P2P).

🧱 כדאי לגלות איך לתקשר עם המכשיר שלך

ההחלטה באיזה API להשתמש ברמה נמוכה נקבעת לפי אופי החיבור הפיזי שלכם למכשיר. אם זה אלחוטי, כדאי להשתמש ב-Web NFC כדי למצוא חיבורים אלחוטיים לטווח קצר מאוד ו-Bluetooth באינטרנט למכשירים אלחוטיים בקרבת מקום.

  • באמצעות NFC באינטרנט, צריך לקרוא ולכתוב במכשיר הזה כשהוא קרוב למכשיר של המשתמש (בדרך כלל 5 עד 10 ס"מ או 2 עד 4 אינץ'). כלים כמו NFC TagInfo של NXP מאפשרים לעיין בתוכן של המכשיר למטרות של הנדסה הפוכה.

  • מתחברים למכשיר באמצעות Bluetooth באינטרנט באמצעות חיבור Bluetooth עם צריכת אנרגיה נמוכה. צריך שיהיה קל לתקשר איתה אם נעשה שימוש בשירותי GATT סטנדרטיים של Bluetooth (כמו שירות הסוללות), כי ההתנהגות שלהם מתועדת היטב. אם לא, בשלב הזה תצטרכו למצוא מסמכי תיעוד חומרה של המכשיר הזה או לבצע הנדסה הפוכה. לשם כך אפשר להשתמש בכלים חיצוניים כמו nRF Connect לנייד ובכלים מובנים בדפדפן, כמו הדף הפנימי about://bluetooth-internals בדפדפנים המבוססים על Chromium. מומלץ לקרוא את המאמר Reverse-Engineering a Bluetooth Lightload מאת אורי שקד. שימו לב שמכשירי Bluetooth עשויים גם לדבר עם הפרוטוקולים הטוריים או ה-HID.

אם החיבור קווי, כדאי לבדוק את ממשקי ה-API האלה בסדר הספציפי הבא:

  1. שימוש ב-WebHID יעזור לכם להבין דוחות HID ומתארי דוחות באמצעות אוספים כדי להבין את המכשיר הזה. יכול להיות שזה מאתגר בלי מסמכי תיעוד של הספק עבור המכשיר הזה. כלים כמו Wireshark יכולים לעזור לך לבצע הנדסה הפוכה. אפשר גם להשתמש באפליקציית האינטרנט HID Explorer כדי להוסיף את הפרטים של מכשירי ממשק אנושי (HID) לפורמט קריא (לבני אדם).

  2. באמצעות Web Serial, בלי תיעוד הספק של המכשיר הזה ובלי הפקודות שנתמכות במכשיר הזה, קשה אבל עדיין אפשרי עם ניחושים. ניתן לבצע הנדסה הפוכה במכשיר על ידי תיעוד תעבורת הנתונים הגולמית של ה-USB באמצעות כלים כמו Wireshark. אפשר גם להשתמש באפליקציית האינטרנט של מסוף טורי כדי לערוך ניסויים במכשיר הזה אם הוא משתמש בפרוטוקול קריא לאנשים.

  3. באמצעות WebUSB, ללא תיעוד ברור של המכשיר ופקודות ה-USB שנתמכות במכשיר הזה, זה קשה, אבל עדיין אפשרי עם ניחושים. כדאי לצפות בסרטון מה חדש ב-WebUSB ומה הפוטנציאל המרגש שלו מאת סוז הינטון. אפשר גם לבצע הנדסה הפוכה למכשיר הזה על ידי תיעוד תעבורת הנתונים גולמית של USB ובדיקת תיאורי USB באמצעות כלים חיצוניים כמו Wireshark וכלים מובנים בדפדפן, כמו הדף הפנימי about://usb-internals בדפדפנים מבוססי Chromium.

אישורים

תודה ל-Reilly Grant , תומאס סטיינר וקייס באקס שכתבו את המאמר הזה.

תמונה מאת Darya Tryfanava ב-UnFlood.