Web'deki donanım cihazlarına erişme

İstediğiniz bir donanım cihazıyla iletişim kurmak için uygun API'yı seçin.

Faruk Mercan
François Beaufort

Bu kılavuzun amacı, web'deki bir donanım cihazıyla (ör. web kamerası, mikrofon vb.) iletişim kuracak en iyi API'yi seçmenize yardımcı olmaktır. "En iyi" derken aslında ihtiyacınız olan her şeyi en kısa sürede sağlıyor. Diğer bir deyişle, çözmek istediğiniz genel kullanım alanını (ör. videoya erişim) biliyorsunuz ancak hangi API'yi kullanacağınızı bilmiyor veya bunu başarmanın başka bir yolu olup olmadığını merak ediyorsunuz.

Web geliştiricilerinin sıklıkla karşılaştığı sorunlardan biri, uygulanması daha kolay olan ve daha iyi bir kullanıcı deneyimi sunan üst düzey API'leri öğrenmeden alt seviye API'lere atlamaktır. Bu nedenle, bu kılavuz önce üst düzey API'lerin önerilmesiyle başlar ancak daha üst düzey API'nin ihtiyaçlarınızı karşılamadığını tespit ettiyseniz alt düzey API'lerden de bahsedilir.

🕹 Bu cihazdan giriş etkinliklerini al

Klavye ve İşaretçi etkinliklerini dinlemeyi deneyin. Bu cihaz bir oyun denetleyicisiyse hangi düğmelere basıldığını ve hangi eksenlerin hareket ettiğini öğrenmek için Gamepad API'sini kullanın.

Bu seçeneklerden hiçbiri işinize yaramıyorsa düşük seviye bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

📸 Bu cihazdan ses ve videoya erişin

Bu cihazdan canlı ses ve video akışları almak ve ses ve video yakalama hakkında bilgi edinmek için MediaDevices.getUserMedia() yöntemini kullanın. Ayrıca kameranın kaydırma, yatırma ve yakınlaştırma işlevinin yanı sıra parlaklık ve kontrast gibi diğer kamera ayarlarını kontrol edebilir, hatta sabit resimler çekebilirsiniz. Web Sesi, sese efekt eklemek, sesli görselleştirmeler oluşturmak veya üç boyutlu efektler (ör. kaydırma) uygulamak için kullanılabilir. Chrome'da Web Audio uygulamalarının performansının nasıl profilleneceğine de göz atın.

Bu seçeneklerden hiçbiri işinize yaramıyorsa düşük seviye bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🖨 Bu cihaza yazdır

Kullanıcının geçerli dokümanı yazdırmak amacıyla bu cihazı hedef olarak seçmesine olanak tanıyan bir tarayıcı iletişim kutusu açmak için window.print() kullanın.

Bu işe yaramazsa çözüm düşük seviyeli bir API olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🔐 Kimliğinizi bu cihazla doğrulayın

Kullanıcıların kimliğini doğrulamak amacıyla bu donanım güvenliği cihazıyla güçlü, onaylanmış ve kaynak kapsamlı bir ortak anahtar kimlik bilgisi oluşturmak için WebAuthn'u kullanın. Bluetooth, NFC ve USB ile dolaşan U2F veya FIDO2 kimlik doğrulayıcılarının (güvenlik anahtarları olarak da bilinir) yanı sıra kullanıcıların parmak izleriyle veya ekran kilitleriyle kimlik doğrulamalarına olanak tanıyan platform kimlik doğrulayıcının kullanımını destekler. İlk WebAuthn uygulamanızı oluşturma sayfasına göz atın.

Bu cihaz başka türde bir donanım güvenlik cihazıysa (ör. kripto para cüzdanı) alt seviye bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🗄 Bu cihazdaki dosyalara erişin

Kullanıcının cihazındaki dosya ve klasörlerden okuma yapmak ve değişiklikleri doğrudan bu dosyalarda ve klasörlerde kaydetmek için File System Access API'yi kullanın. Kullanılabilir değilse kullanıcıdan tarayıcı iletişim kutusundan yerel dosyaları seçmesini ve ardından bu dosyaların içeriğini okumasını istemek için File API'yi kullanın.

Bu seçeneklerden hiçbiri işinize yaramıyorsa düşük seviye bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🧲 Bu cihazdaki sensörlere erişebilir

Hareket sensörlerinden (ör. ivme ölçer veya jiroskop) ve çevre sensörlerinden (ör. ortam ışığı, manyetometre) ham sensör değerlerini okumak için Genel Sensör API'sini kullanın. Mevcut değilse mobil cihazlarda yerleşik ivme ölçer, jiroskop ve pusulaya erişmek için DeviceMotion and DeviceOrientation etkinliklerini kullanın.

Sizin için uygun değilse düşük seviyeli bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🛰 Bu cihazda GPS koordinatlarına eriş

Kullanıcının bu cihazdaki geçerli konumunun enlem ve boylamını almak için Coğrafi Konum API'sini kullanın.

Sizin için uygun değilse düşük seviyeli bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

🔋 Bu cihazın pilini kontrol edin

Ana makineye pil şarj seviyesi hakkında bilgi almak ve pil seviyesi ya da şarj durumu değiştiğinde bildirim almak için Battery API'yi kullanın.

Sizin için uygun değilse düşük seviyeli bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı öğrenme başlıklı makaleye göz atın.

💡 Bu cihazla ağ üzerinden iletişim kur

Yerel ağda, uzaktan oynatma cihazında (ör. akıllı TV veya kablosuz hoparlör) ses ve/veya video yayınlamak için Remote Playback API'yi ya da bir web sayfasını ikinci bir ekranda (ör. HDMI kablosuyla bağlanmış ikincil bir ekran veya kablosuz olarak bağlanan bir akıllı TV) oluşturmak için Presentation API'yi kullanın.

Bu cihaz bir web sunucusunu açığa çıkarsa uygun uç noktaları kullanarak bu cihazdan bazı verileri getirmek için Fetch API ve/veya WebSockets'i kullanın. TCP ve UDP soketleri web'de kullanılamaz ancak etkileşimli, çift yönlü ve çok yönlü ağ bağlantılarını işlemek için WebTransport'a göz atın. Eşler arası protokol kullanarak diğer tarayıcılarla gerçek zamanlı veri iletişim kurmak için WebRTC'nin de kullanılabileceğini unutmayın.

🧱 Cihazınızla nasıl iletişim kuracağınızı keşfedin

Hangi alt düzey API'yi kullanacağınıza karar, cihazınızla fiziksel bağlantınızın niteliğine göre belirlenir. Kablosuzsa, çok kısa mesafeli kablosuz bağlantılar için Web NFC'ye, yakındaki kablosuz cihazlar için Web Bluetooth'a göz atın.

  • Web NFC ile, kullanıcının cihazına yakın bir yerde (genellikle 5-10 cm, 2-4 inç) bu cihazda veri okuyup yazabilirsiniz. NXP'nin NFC TagInfo aracı gibi araçlar, tersine mühendislik amacıyla bu cihazın içeriğine göz atmanıza olanak tanır.

  • Web Bluetooth ile bu cihaza Bluetooth Düşük Enerji bağlantısı üzerinden bağlanın. Standartlaştırılmış Bluetooth GATT hizmetleri (pil hizmeti gibi) kullanıldığında, davranışları düzgün şekilde belgelenmiş olduğundan, iletişim kurması oldukça kolay olacaktır. Aksi halde, bu noktada bu cihaz için bazı donanım dokümanları bulmanız veya cihazda tersine mühendislik yapmanız gerekecektir. Bunun için nRF Connect for Mobile gibi harici araçları ve Chromium tabanlı tarayıcılardaki about://bluetooth-internals dahili sayfası gibi yerleşik tarayıcı araçlarını kullanabilirsiniz. Uri Shaked'ın Reverse-Engineering a Bluetooth Lightamping sayfasına göz atın. Bluetooth cihazlarının da HID veya seri protokollerini okuyabileceğini unutmayın.

Kabloluysa şu API'leri sırasıyla kontrol edin:

  1. WebHID ile koleksiyonlar aracılığıyla HID raporlarını ve rapor tanımlayıcılarını anlamanız bu cihazı anlamanızın anahtarıdır. Bu cihaz için satıcı belgeleri olmadığında bu zorlu bir iş olabilir. Wireshark gibi araçlar, ters mühendislik işlemi yapmanıza yardımcı olabilir. Ayrıca, HID cihaz bilgilerini kullanıcıların okuyabileceği bir biçime dönüştürmek için HID Gezgin web uygulamasını da kullanabilirsiniz.

  2. Web Serial ile, bu cihazla ilgili satıcı dokümanları ve bu cihazın desteklediği komutlar olmadan bu işi başarmak zor ama şanslı tahminlerle yine de mümkündür. Bu cihazda tersine mühendislik işlemi, Wireshark gibi araçlar yardımıyla ham USB trafiği yakalanarak yapılabilir. Ayrıca, kullanıcılar tarafından okunabilir bir protokol kullanılıyorsa bu cihazla denemeler yapmak için Seri Terminal web uygulamasını da kullanabilirsiniz.

  3. WebUSB ile bu cihaz için açık dokümanlar ve bu cihazın hangi USB komutlarını desteklediğini tahmin edemiyorsanız bunu başarmak zor olsa da şans eseri düşünün. Suz Hyton'dan WebUSB ve heyecan verici potansiyelini keşfetme videosunu izleyin. Ayrıca, ham USB trafiğini yakalayıp USB tanımlayıcılarını Wireshark gibi harici araçlarla ve Chromium tabanlı tarayıcılardaki dahili sayfa about://usb-internals gibi yerleşik tarayıcı araçlarıyla inceleyerek bu cihazda tersine mühendislik yapabilirsiniz.

Teşekkür

Bu makaleyi inceledikleri için Reilly Grant, Thomas Steiner ve Kayce Basques'e teşekkür ederiz.

Fotoğraf: Darya Trifanava tarafından Unsplash'ta.