Seçtiğiniz bir donanım cihazıyla iletişim kurmak için uygun API'yi seçin.
Bu kılavuzun amacı, web'deki bir donanım cihazıyla (ör. web kamerası, mikrofon vb.) iletişim kurmak için en iyi API'yi seçmenize yardımcı olmaktır. "En iyi" derken, en az çabayla ihtiyacınız olan her şeyi sunmasını kastediyorum. Başka bir deyişle, çözmek istediğiniz genel kullanım alanını (ör. videoya erişme) biliyorsunuz ancak hangi API'yi kullanacağınızı bilmiyorsunuz veya bunu başarmanın başka bir yolu olup olmadığını merak ediyorsunuz.
Web geliştiricilerinin sıkça düştüğü bir hata, daha kolay uygulanabilen ve daha iyi bir kullanıcı deneyimi sunan üst düzey API'leri öğrenmeden alt düzey API'leri kullanmaya başlamaktır. Bu nedenle, bu kılavuzda öncelikle daha üst düzey API'ler önerilir ancak daha üst düzey API'nin ihtiyaçlarınızı karşılamadığını belirlediyseniz daha alt düzey API'lerden de bahsedilir.
🕹 Bu cihazdan giriş etkinlikleri alma
Klavye ve İşaretçi etkinliklerini dinlemeyi deneyin. Bu cihaz bir oyun kumandasıysa hangi düğmelere basıldığını ve hangi eksenlerin hareket ettirildiğini öğrenmek için Gamepad API'yi kullanın.
Bu seçeneklerden hiçbiri işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
📸 Bu cihazdaki ses ve videolara erişme
Bu cihazdan canlı ses ve video akışları almak için MediaDevices.getUserMedia() yöntemini kullanın ve ses ve video yakalama hakkında bilgi edinin. Ayrıca kameranın kaydırma, eğme ve yakınlaştırma özelliklerini ve parlaklık ve kontrast gibi diğer kamera ayarlarını kontrol edebilir, hatta fotoğraf çekebilirsiniz. Web Audio, sese efekt eklemek, ses görselleştirmeleri oluşturmak veya uzamsal efektler (ör. kaydırma) uygulamak için kullanılabilir. Chrome'da Web Audio uygulamalarının performansını nasıl profillendireceğinizi de inceleyin.
Bu seçeneklerden hiçbiri işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
🖨 Bu cihazda yazdırın
Kullanıcının geçerli dokümanı yazdırmak için bu cihazı hedef olarak seçmesine olanak tanıyan bir tarayıcı iletişim kutusu açmak için window.print() işlevini kullanın.
Bu yöntem işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
🔐 Bu cihazla kimlik doğrulama
Kullanıcıların kimliğini doğrulamak için bu donanım güvenlik cihazıyla güçlü, onaylı ve kaynak kapsamlı bir ortak anahtar kimlik bilgisi oluşturmak üzere WebAuthn'i kullanın. Bluetooth, NFC ve USB dolaşım U2F veya FIDO2 kimlik doğrulayıcıların (güvenlik anahtarları olarak da bilinir) yanı sıra kullanıcıların parmak izleri veya ekran kilitleriyle kimlik doğrulaması yapmasına olanak tanıyan bir platform kimlik doğrulayıcının kullanımını destekler. İlk WebAuthn uygulamanızı oluşturma başlıklı makaleyi inceleyin.
Bu cihaz başka bir donanım güvenlik cihazı türüyse (ör. kripto para cüzdanı) çözüm, düşük seviyeli bir API olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin başlıklı makaleyi inceleyin.
🗄 Bu cihazdaki dosyalara erişme
Kullanıcının cihazındaki dosya sistemindeki dosya ve klasörleri okumak ve değişiklikleri doğrudan bunlara kaydetmek için File System Access API'yi kullanın. Mevcut değilse kullanıcıdan bir 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 yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
🧲 Bu cihazdaki sensörlere erişme
Hareket sensörlerinden (ör. ivme ölçer veya jiroskop) ve ortam sensörlerinden (ör. ambiyans ışığı, manyetometre) ham sensör değerlerini okumak için Generic Sensor API'yi kullanın. Mevcut değilse mobil cihazlardaki yerleşik ivme ölçer, jiroskop ve pusulaya erişmek için DeviceMotion ve DeviceOrientation etkinliklerini kullanın.
Bu yöntem işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
🛰 Bu cihazdaki GPS koordinatlarına erişme
Kullanıcının bu cihazdaki mevcut konumunun enlem ve boylamını almak için Geolocation API'yi kullanın.
Bu yöntem işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
🔋 Bu cihazın pilini kontrol edin
Pil şarj seviyesiyle ilgili ana makine bilgilerini almak ve pil seviyesi veya şarj durumu değiştiğinde bildirim almak için Battery API'yi kullanın.
Bu yöntem işinize yaramazsa alt düzey bir API çözüm olabilir. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin bölümüne göz atın.
📞 Bu cihazla ağ üzerinden iletişim kurma
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 kullanın ya da bir web sayfasını ikinci bir ekranda (ör. HDMI kablosuyla bağlı ikincil ekran veya kablosuz olarak bağlı akıllı TV) oluşturmak için Presentation API'yi kullanın.
Bu cihaz bir web sunucusu kullanıyorsa uygun uç noktalara erişerek bu cihazdan veri almak için Fetch API ve/veya WebSockets'i kullanın. TCP ve UDP soketleri web'de kullanılamaz. Etkileşimli, çift yönlü ve çoklu ağ bağlantılarını yönetmek için WebTransport'u inceleyin. WebRTC'nin, eşler arası protokol kullanarak diğer tarayıcılarla gerçek zamanlı veri iletişimi için de kullanılabileceğini unutmayın.
🧱 Cihazınızla nasıl iletişim kuracağınızı öğrenin
Hangi alt düzey API'yi kullanmanız gerektiği, cihazla fiziksel bağlantınızın niteliğine göre belirlenir. Kablosuzsa çok kısa mesafeli kablosuz bağlantılar için Web NFC'yi, yakındaki kablosuz cihazlar için Web Bluetooth veya Web Serial'ı inceleyin.
Web NFC ile, kullanıcının cihazına yakın olduğunda (genellikle 5-10 cm, 2-4 inç) bu cihazı okuyun ve cihaza yazın. NFC TagInfo by NXP 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ğlanabilirsiniz. Standart Bluetooth GATT hizmetlerini (ör. pil hizmeti) kullandığında iletişim kurmak oldukça kolaydır. Bu hizmetlerin davranışları iyi belgelenmiştir. Aksi takdirde, bu noktada bu cihaz için donanım belgeleri bulmanız veya tersine mühendislik yapmanız gerekir. Bunun için nRF Connect for Mobile gibi harici araçları ve Chromium tabanlı tarayıcılardaki
about://bluetooth-internalsdahili sayfası gibi yerleşik tarayıcı araçlarını kullanabilirsiniz. Uri Shaked'in Bluetooth Ampulünde Tersine Mühendislik başlıklı makalesine göz atın. Bluetooth cihazların HID veya seri protokolleri de kullanabileceğini unutmayın.Bluetooth üzerinden seri ile, standartlaştırılmış Seri Bağlantı Noktası Profili (SPP) gibi eşlenmiş Bluetooth Klasik cihazlardaki RFCOMM hizmetleriyle iletişim kurun. Ancak özel RFCOMM tabanlı hizmetler için
requestPort()yöntemine iletilecek hizmet UUID'sini öğrenmek üzere cihazın tedarikçi dokümanlarına bakmanız gerekir.
Kabloluysa bu API'leri şu sırayla kontrol edin:
WebHID ile HID raporlarını ve rapor tanımlayıcılarını koleksiyonlar aracılığıyla anlamak, bu cihazı anlamanız açısından önemlidir. Bu cihazın tedarikçi dokümanları yoksa bu işlem zor olabilir. Wireshark gibi araçlar, tersine mühendislik yapmanıza yardımcı olabilir. HID cihaz bilgilerini okunabilir bir biçime dönüştürmek için HID Explorer web uygulamasını da kullanabilirsiniz.
Web Serial ile bu cihaz için tedarikçi dokümanları ve bu cihazın desteklediği komutlar olmadan bu işlem zordur ancak şanslı tahminlerle yine de mümkündür. Bu cihazda tersine mühendislik işlemi, Wireshark gibi araçlarla ham USB trafiği yakalanarak yapılabilir. Cihaz, kullanıcı tarafından okunabilen bir protokol kullanıyorsa cihazı denemek için Serial Terminal web uygulamasını da kullanabilirsiniz.
WebUSB ile, bu cihaz ve desteklediği USB komutları hakkında net bir doküman olmadan bu işlem zordur ancak şanslı tahminlerle yine de mümkündür. Suz Hinton'ın Exploring WebUSB and its exciting potential (WebUSB'yi ve heyecan verici potansiyelini keşfetme) videosunu izleyin. Ayrıca, ham USB trafiğini yakalayarak ve Wireshark gibi harici araçlar ve Chromium tabanlı tarayıcılardaki dahili sayfa
about://usb-internalsgibi yerleşik tarayıcı araçlarıyla USB tanımlayıcılarını inceleyerek bu cihazda tersine mühendislik uygulayabilirsiniz.
Onaylar
Bu makaleyi inceledikleri için Reilly Grant, Thomas Steiner ve Kayce Basques'a teşekkür ederiz.