Seçtiğiniz donanım cihazıyla iletişim kurmak için uygun API'yi seçin.
Bu kılavuzun amacı, web'de 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 çalışmayla ihtiyacınız olan her şeyi sunduğunu kastediyoruz. Diğer 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 yapmanın başka bir yolu olup olmadığını merak ediyorsunuz.
Web geliştiricilerinin sıklıkla düştüğü bir sorun, uygulaması daha kolay ve daha iyi bir kullanıcı deneyimi sunan üst düzey API'ler hakkında bilgi edinmeden düşük düzey API'lere atlamasıdır. Bu nedenle, bu kılavuzda öncelikle daha yüksek düzeyli API'ler önerilir ancak daha yüksek düzeyli API'nin ihtiyaçlarınızı karşılamadığını belirlemeniz durumunda daha düşük düzeyli 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 ettiğini öğrenmek için Gamepad API'yi kullanın.
Bu seçeneklerden hiçbiri işinize yaramıyorsa çözüm, düşük düzey 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 ses ve görüntüye erişme
Bu cihazdan canlı ses ve video akışları almak için MediaDevices.getUserMedia() işlevini kullanın ve ses ve video yakalama hakkında bilgi edinin. Ayrıca kameranın kaydırma, yatırma ve yakınlaştırma gibi ayarlarını 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. pan) uygulamak için kullanılabilir. Chrome'da Web Audio uygulamalarının performansını nasıl profilleyeceğinize de göz atın.
Bu seçeneklerden hiçbiri işinize yaramıyorsa çözüm, düşük düzey 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 cihazda yazdırma
Kullanıcının mevcut dokümanı yazdırmak için hedef olarak bu cihazı seçmesine olanak tanıyan bir tarayıcı iletişim kutusu açmak için window.print() işlevini kullanın.
Bu yöntem sizin için uygun değilse çözüm, düşük düzey 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 cihazla kimlik doğrulama
Kullanıcıların kimliğini doğrulamak için bu donanım güvenlik cihazıyla güçlü, onaylanmış ve kaynak kapsamlı bir ortak anahtar kimlik bilgisi oluşturmak üzere WebAuthn'ı kullanın. API; Bluetooth, NFC ve USB ile dolaşan ve güvenlik anahtarları olarak da bilinen U2F veya FIDO2 kimlik doğrulayıcılarının yanı sıra kullanıcıların parmak izlerini veya ekran kilitlerini kullanarak kimlik doğrulaması yapabilmelerini sağlayan platform kimlik doğrulayıcı kullanımını destekler. İlk WebAuthn uygulamanızı oluşturma başlıklı makaleyi inceleyin.
Bu cihaz başka bir tür donanım güvenlik cihazıysa (ör. kripto para cüzdanı) çözüm düşük düzey bir API olabilir. Cihazınızla nasıl iletişim kuracağınızı öğrenin başlıklı makaleyi inceleyerek yolculuğunuza başlayın.
🗄 Bu cihazdaki dosyalara erişme
Değişiklikleri doğrudan kullanıcının cihazındaki dosya ve klasörlere okumak ve kaydetmek için File System Access API'yi kullanın. Bu API kullanılamıyorsa File API'yi kullanarak kullanıcıdan tarayıcı iletişim kutusunda yerel dosyaları seçmesini ve ardından bu dosyaların içeriğini okumasını isteyin.
Bu seçeneklerden hiçbiri işinize yaramıyorsa çözüm, düşük düzey 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 sensörlere erişme
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. Bu API'ler kullanılamıyorsa mobil cihazlardaki yerleşik ivme ölçer, jiroskop ve pusulaya erişmek için DeviceMotion ve DeviceOrientation etkinliklerini kullanın.
Bu çözüm sizin için uygun değilse düşük düzeyli bir API kullanabilirsiniz. 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 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 çözüm sizin için uygun değilse düşük düzeyli bir API kullanabilirsiniz. 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 pili kontrol etme
Pil şarj seviyesi hakkında ana makine bilgileri almak ve pil seviyesi veya şarj durumu değiştiğinde bildirim almak için Battery API'yi kullanın.
Bu çözüm sizin için uygun değilse düşük düzeyli bir API kullanabilirsiniz. Yolculuğunuza başlamak için Cihazınızla nasıl iletişim kuracağınızı keşfedin başlıklı makaleyi inceleyin.
📞 Bu cihazla ağ üzerinden iletişime geçme
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 veya ikinci bir ekranda (ör. HDMI kablosuyla bağlı ikincil ekran veya kablosuz olarak bağlı akıllı TV) web sayfası oluşturmak için Presentation API'yi kullanın.
Bu cihazda bir web sunucusu varsa uygun uç noktalara giderek bu cihazdan bazı verileri almak için Fetch API'yi ve/veya WebSockets kullanın. TCP ve UDP soketlerini web'de kullanamazsınız. Etkileşimli, iki yönlü ve çoklu ağ bağlantılarını yönetmek için WebTransport'a göz atın. WebRTC'nin, eşler arası protokol kullanarak diğer tarayıcılarla gerçek zamanlı veri iletişimi kurmak için de kullanılabileceğini unutmayın.
🧱 Cihazınızla nasıl iletişim kuracağınızı öğrenin
Hangi düşük düzey API'yi kullanacağınıza karar verirken cihazla fiziksel bağlantınızın yapısına dikkat edin. Cihazınız kablosuzsa çok kısa mesafeli kablosuz bağlantılar için Web NFC'ye, yakındaki kablosuz cihazlar için Web Bluetooth'a veya Web Seri'ye göz atın.
Web NFC ile, kullanıcının cihazına yakın olduğunda (genellikle 5-10 cm, 2-4 inç) bu cihazda okuma ve yazma yapın. NXP tarafından geliştirilen NFC TagInfo 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. Davranışları iyi belgelendiği için standartlaştırılmış Bluetooth GATT hizmetlerini (pil hizmeti gibi) kullandığında bu cihazla iletişim kurmak oldukça kolaydır. Aksi takdirde, bu aşamada bu cihazla ilgili donanım dokümanlarını bulmanız veya cihazın tersine mühendisliğini yapmanız gerekir. Bunun için nRF Connect for Mobile gibi harici araçları ve Chromium tabanlı tarayıcılardaki dahili
about://bluetooth-internals
sayfası gibi yerleşik tarayıcı araçlarını kullanabilirsiniz. Uri Shaked'in Bluetooth Ampulünün Tersine Mühendisliği başlıklı makalesine göz atın. Bluetooth cihazların HID veya seri protokollerini de kullanabileceğini unutmayın.Bluetooth üzerinden seri ile standartlaştırılmış Seri Bağlantı Noktası Profili (SPP) gibi eşlenen Bluetooth Klasik cihazlardaki RFCOMM hizmetleriyle iletişim kurun. Ancak özel RFCOMM tabanlı hizmetler için hizmet UUID'sinin
requestPort()
'e iletilmesi amacıyla cihazın tedarikçi dokümanlarına bakmanız gerekir.
Kablolu ise aşağıdaki API'lere sırayla göz atın:
WebHID ile HID raporlarını ve rapor tanımlayıcılarını koleksiyonlar aracılığıyla anlamak, bu cihazı anlamanın anahtarıdır. Bu cihazın tedarikçi dokümanları olmadan bu işlem zor olabilir. Wireshark gibi araçlar, tersine mühendislik yapmanıza yardımcı olabilir. HID cihaz bilgilerini kullanıcı tarafından okunabilir bir biçimde dökmek için HID Explorer web uygulamasını da kullanabilirsiniz.
Web Seri ile, bu cihaz ve bu cihazın desteklediği komutlar hakkında tedarikçi dokümanları olmadan bu işlemi yapmak zordur ancak şanslı tahminlerle yine de mümkündür. Bu cihazın tersine mühendisliği, Wireshark gibi araçlarla ham USB trafiği yakalanarak yapılabilir. Kullanıcı tarafından okunabilir bir protokol kullanıyorsa bu cihazla deneme yapmak için Seri Terminal web uygulamasını da kullanabilirsiniz.
WebUSB ile, bu cihaz ve bu cihazın desteklediği USB komutları hakkında net dokümanlar olmadan bu işlemi yapmak zordur ancak şanslı tahminlerle yine de mümkündür. Suz Hinton'un WebUSB'yi ve heyecan verici potansiyelini keşfetme başlıklı videosunu izleyin. Ayrıca, ham USB trafiğini yakalayıp USB tanımlayıcılarını Wireshark gibi harici araçlar ve Chromium tabanlı tarayıcılardaki dahili sayfa
about://usb-internals
gibi yerleşik tarayıcı araçlarıyla inceleyerek bu cihazın tersine mühendisliğini yapabilirsiniz.
Teşekkür ederiz
Bu makaleyi inceleyen Reilly Grant, Thomas Steiner ve Kayce Basques'e teşekkür ederiz.
Fotoğraf: Darya Tryfanava, Unsplash.