Dostęp do urządzeń w internecie

Wybierz odpowiedni interfejs API do komunikacji z wybranym urządzeniem.

Anna Beaufort
François Beaufort

Ten przewodnik pomoże Ci wybrać najlepszy interfejs API do komunikacji z urządzeniem (np. kamerą internetową, mikrofonem itp.) w internecie. Mówiąc „najlepszy”, oznacza to, że aplikacja oferuje wszystko, czego potrzebujesz, przy jak najmniejszym nakładzie pracy. Innymi słowy, znasz ogólny przypadek użycia, który chcesz rozwiązać (np. uzyskiwanie dostępu do filmów), ale nie wiesz, którego interfejsu API użyć, lub nie wiesz, czy można to osiągnąć w inny sposób.

Jednym z problemów, z jakimi borykają się programiści stron internetowych, jest przechodzenie do niskopoziomowych interfejsów API bez poznawania interfejsów API wyższego poziomu, które są łatwiejsze do wdrożenia i zapewniają lepsze wrażenia. Dlatego w tym przewodniku najpierw polecamy interfejsy API wyższego poziomu, ale wspomniano też o interfejsach API niższego poziomu, na wypadek gdyby okaże się, że interfejs API wyższego poziomu nie spełnia Twoich wymagań.

🕹 Odbieraj zdarzenia wejściowe z tego urządzenia

Spróbuj nasłuchiwać zdarzeń Klawiatura i Wskaźnik. Jeśli to urządzenie jest kontrolerem do gier, użyj interfejsu Gamepad API, aby wiedzieć, które przyciski są naciśnięte i które osie są przesuwane.

Jeśli żadna z tych opcji nie działa w Twoim przypadku, rozwiązaniem może być niskopoziomowy interfejs API. Na początek zapoznaj się z artykułem Dowiedz się, jak komunikować się z urządzeniem.

📸 Uzyskaj dostęp do dźwięku i obrazu z tego urządzenia

Użyj metody MediaDevices.getUserMedia(), aby odbierać strumienie wideo i dźwięk na żywo z tego urządzenia. Dowiedz się, jak rejestrować dźwięk i obraz. Możesz też sterować przesuwaniem, przechylaniem i powiększaniem w kamerze oraz innymi ustawieniami aparatu, takimi jak jasność i kontrast, a nawet robić zdjęcia. Usługi Web Audio możesz używać, aby dodawać efekty do dźwięku, tworzyć wizualizacje dźwiękowe lub stosować efekty przestrzenne (np. panoramiczne). Zobacz też, jak profilować wydajność aplikacji Web Audio w Chrome.

Jeśli żadna z tych opcji nie działa w Twoim przypadku, rozwiązaniem może być niskopoziomowy interfejs API. Na początek zapoznaj się z artykułem Dowiedz się, jak komunikować się z urządzeniem.

🖨 Drukuj na tym urządzeniu

Użyj funkcji window.print(), aby otworzyć okno przeglądarki, w którym użytkownik będzie mógł wybrać to urządzenie jako miejsce docelowe, w którym będzie mógł wydrukować bieżący dokument.

Jeśli to nie pomoże, dobrym rozwiązaniem może być niskopoziomowy interfejs API. Na początek sprawdź, jak komunikować się z urządzeniem.

🔐 Uwierzytelnij za pomocą tego urządzenia

Użyj WebAuthn, aby utworzyć silne, atestowane dane logowania klucza publicznego ograniczone do źródła za pomocą tego urządzenia zabezpieczającego do uwierzytelniania użytkowników. Obsługuje korzystanie z mechanizmów uwierzytelniających Bluetooth, NFC i roamingu U2F lub FIDO2 przez USB (nazywanych też kluczami bezpieczeństwa), a także uwierzytelnianie platformy, które umożliwia użytkownikom uwierzytelnianie za pomocą odcisku palca lub blokady ekranu. Przeczytaj artykuł o tworzeniu pierwszej aplikacji WebAuthn.

Jeśli jest to inny rodzaj sprzętowego urządzenia zabezpieczającego (np. portfel kryptowalutowy), rozwiązaniem może być niskopoziomowy interfejs API. Na początek zapoznaj się z artykułem Dowiedz się, jak komunikować się z urządzeniem.

🗄 Uzyskaj dostęp do plików na tym urządzeniu

Interfejs File System Access API umożliwia odczytywanie i zapisywanie zmian bezpośrednio w plikach i folderach na urządzeniu użytkownika. Jeśli nie jest dostępny, użyj interfejsu File API, aby poprosić użytkownika o wybranie plików lokalnych w oknie przeglądarki, a następnie odczytanie ich zawartości.

Jeśli żadna z tych opcji nie działa w Twoim przypadku, rozwiązaniem może być niskopoziomowy interfejs API. Na początek zapoznaj się z artykułem Dowiedz się, jak komunikować się z urządzeniem.

🧲 Dostęp do czujników na tym urządzeniu

Do odczytywania nieprzetworzonych wartości z czujników ruchu (np. akcelerometru lub żyroskopu) i czujników środowiskowych (np. jasności otoczenia czy magnetometru) używaj interfejsu General Sensor API. Jeśli nie są dostępne, użyj zdarzeń DeviceMotion i DeviceOrientation, aby uzyskać dostęp do wbudowanych akcelerometrów, żyroskopów i kompasów na urządzeniach mobilnych.

Jeśli to nie pomoże, rozwiązaniem może być niskopoziomowy interfejs API. Na początek sprawdź, jak komunikować się z urządzeniem.

🛰 Uzyskuj dostęp do współrzędnych GPS na tym urządzeniu

Interfejs Geolocation API umożliwia uzyskanie szerokości i długości geograficznej bieżącej pozycji użytkownika na tym urządzeniu.

Jeśli to nie pomoże, rozwiązaniem może być niskopoziomowy interfejs API. Na początek sprawdź, jak komunikować się z urządzeniem.

🔋 Sprawdź baterię w tym urządzeniu

Używaj interfejsu Battery API, aby uzyskiwać informacje o stanie naładowania baterii i otrzymywać powiadomienia o zmianie poziomu lub stanu ładowania.

Jeśli to nie pomoże, rozwiązaniem może być niskopoziomowy interfejs API. Na początek sprawdź, jak komunikować się z urządzeniem.

📲 Komunikuj się z tym urządzeniem przez sieć

W sieci lokalnej użyj interfejsu API odtwarzania zdalnego, aby transmitować dźwięk lub obraz za pomocą zdalnego urządzenia odtwarzającego (np. telewizora smart TV lub głośnika bezprzewodowego), albo użyj interfejsu Presentation API, aby wyrenderować stronę internetową na drugim ekranie (np. dodatkowy ekran podłączony kablem HDMI lub telewizor smart TV podłączony bezprzewodowo).

Jeśli urządzenie udostępnia serwer WWW, użyj interfejsu Fetch API lub WebSockets, aby pobrać z niego dane przez połączenie z odpowiednimi punktami końcowymi. Chociaż gniazda TCP i UDP nie są dostępne w internecie, sprawdź WebTransport, aby obsługiwać interaktywne, dwukierunkowe i multipleksowane połączenia sieciowe. Pamiętaj, że WebRTC może też służyć do przesyłania danych w czasie rzeczywistym z innymi przeglądarkami za pomocą protokołu peer-to-peer.

🧱 Dowiedz się, jak komunikować się z urządzeniem

Decyzja o tym, którego interfejsu API niskiego poziomu należy użyć, zależy od charakteru fizycznego połączenia z urządzeniem. Jeśli jest to sieć bezprzewodowa, sprawdź NFC, by uzyskać bezprzewodowe połączenia bardzo krótkiego zasięgu, lub Web Bluetooth w przypadku pobliskich urządzeń bezprzewodowych.

  • Za pomocą Web NFC możesz odczytywać i zapisywać dane na tym urządzeniu, które znajduje się w pobliżu urządzenia użytkownika (zwykle w odległości 5–10 cm lub 2–4 cali). Narzędzia takie jak NFC TagInfo firmy NXP pozwalają przeglądać zawartość urządzenia na potrzeby inżynierii wstecznej.

  • Za pomocą funkcji Web Bluetooth możesz połączyć się z urządzeniem przez Bluetooth Low Energy. Komunikacja w przypadku ustandaryzowanych usług GATT Bluetooth (np. usługi baterii) powinna być łatwa, ponieważ ich działanie jest dobrze udokumentowane. Jeśli nie, na tym etapie musisz znaleźć dokumentację tego urządzenia lub przygotować ją do odtworzenia. Możesz w tym celu skorzystać z zewnętrznych narzędzi, takich jak nRF Connect na urządzenia mobilne, oraz wbudowanych narzędzi w przeglądarkach, takich jak strona wewnętrzna about://bluetooth-internals w przeglądarkach opartych na Chromium. Obejrzyj film Uri Shaked o technologii wstecznej żarówki Bluetooth. Pamiętaj, że urządzenia Bluetooth mogą też odczytywać protokoły HID lub szeregowe.

Jeśli połączenie jest przewodowe, sprawdź te interfejsy API w tej kolejności:

  1. Dzięki WebHID zrozumienie raportów HID i deskryptorów raportów na podstawie kolekcji ma kluczowe znaczenie dla zrozumienia działania urządzenia. Może to być trudne, jeśli nie masz dokumentacji od dostawcy tego urządzenia. Narzędzia takie jak Wireshark mogą pomóc w analizowaniu wstecznych wyników. Możesz też użyć aplikacji internetowej HID Explorer, aby zapisać informacje o urządzeniach HID w formacie zrozumiałym dla człowieka.

  2. W przypadku Web Serial bez dokumentacji dostawcy urządzenia i obsługiwanych poleceń jest to trudne, ale możliwe, że się udało. Przetwarzanie wsteczne tego urządzenia można przeprowadzić, przechwytując nieprzetworzony ruch USB przy użyciu takich narzędzi jak Wireshark. Możesz też użyć aplikacji internetowej Terminal szeregowy, aby poeksperymentować z tym urządzeniem, jeśli korzysta ono z protokołu zrozumiałego dla człowieka.

  3. Dzięki WebUSB bez wyraźnej dokumentacji urządzenia i obsługiwanych przez nie poleceń USB jest to trudne, choć możliwe, ale mimo to może się to udać. Obejrzyj film o eksploracji WebUSB i jego ekscytującym potencjału autorstwa Suz Hinton. Możesz też przetworzyć wstecznie urządzenie, przechwytując nieprzetworzony ruch USB i sprawdzając deskryptory USB przy użyciu zewnętrznych narzędzi, takich jak Wireshark, oraz wbudowanych narzędzi, takich jak strona wewnętrzna about://usb-internals w przeglądarkach opartych na Chromium.

Podziękowania

Dziękujemy Reilly Grant, Thomas Steiner i Kayce Basques za przeczytanie tego artykułu.

Zdjęcie: Darya Tryfanava w serwisie Unsplash.