iconWebGL、WebAudio、WebRTC...など「Web○○」系のAPIのおかげで様々なことがブラウザ上でできるようになってきましたが、そこにWebBluetoothのおかげでBluetoothも加わることになりそうです。APIを使用することで、ブラウザ上でBluetoothLEを用いた通信が可能になります。WebBluetoothで扱えるのはBluetoothLEのみで、名前に反してBluetoothは使用できません。セキュリティのため、WebBluetoothには以下の制限があります。通信するにはユーザジェスチャー(クリックやタップなど)が必要また、現在のところCentralとしてのみの動作になり、Peripheralとしての動作は未策定です。詳しくは以下の仕様書をご覧ください。Considerationとなっています。Chromeに関してもデフォルトで有効化されるのはChrome56以降で、それまではchrome://flagsでフラグを有効化する必要があります。同じChromeでもプラットフォームによっても実装状況は異なります。詳しくは以下のリンクをご覧ください。https://github.com/WebBluetoothCG/web-bluetooth/blob/gh-pages/implementation-status.mdPeripheralシミュレータテストのためのPeripheral機器を用意するのは簡単ではありません。そこでスマートデバイス向けのシミュレータが用意されています。Simulator(Android)必要に応じて使用してください。API検出BluetoothLEデバイスの検出にはnavigator.bluetooth.requestDeviceメソッドを使用します。requestDeviceメソッドはPromise<BluetoothObject>を返します。console.log(error));このメソッドはフィルタ条件を引数にとり、条件に一致したデバイスをChooserUIで表示します。ChooserはBLEデバイスを選択する画面のことで、実装ごとに表示は異なります。セキュリティの都合上、requestDeviceメソッドの呼び出しには何かしらのユーザジェスチャーが必要です。「通信開始」ボタンなどを用意するといいでしょう。フィルタの条件を空白にすることはできません。フィルタには以下の3種類があります。services:サービス名の文字列か、16進数のUUID。name:デバイス名文字列namePrefix:デバイス名文字列(前方一致)主に使用するのはservicesでしょう。[0x180F]}のようにUUIDを指定します。BLEで使用できるサービス名とUUIDの一覧は以下のリンクをご覧ください。https://developer.bluetooth.org/gatt/services/Pages/ServicesHome.aspxまた、フィルタを指定せずに、すべてのデバイスを検出することもできます。その場合はacceptAllDevicesをtrueに設定します。console.log(error));フィルタとacceptAllDevicesを併用することはできません。接続Promiseを介して受け取ったBluetoothDeviceオブジェクトのgatt.connectメソッドを使用することでGATTサーバに接続できます。console.log(error));gatt.connectメソッドはPromise<BluetoothRemoteGATTServer>を返します。サービスの検出BluetoothRemoteGATTServerオブジェクトのgetPrimaryServiceメソッドを実行することでサービスが検出できます。console.log(error));getPrimaryServiceメソッドはPromise<BluetoothRemoteGATTService>を返します。ここでもサービス名またはUUIDを指定します。複数形であるgetPrimaryServicesメソッドを使用すれば複数のサービスを得ることができます。キャラクタリスティックの取得BluetoothRemoteGATTServiceオブジェクトのgetCharacteristicメソッドを使用することでキャラクタリスティックを取得できます。getCharacteristicsメソッドを使用すれば複数のキャラクタリスティックが取得できます。console.log(error));getCharacteristicメソッドはPromise<BluetoothRemoteGATTCharacteristic>を返します。引数にはキャラクタリスティック名かUUIDを指定します。キャラクタリスティックの値を読み込むBluetoothRemoteGATTCharacteristicオブジェクトのreadValueメソッドを実行することで値を読み込むことができます。readValueメソッドはPromise<DataView>を返します。console.log(error));キャラクタリスティックに値を書き込む値を書き込む場合は、writeValueメソッドを使用します。writeValueが取るのはArrayBufferオブジェクトです。接続の解除にはBluetoothDeviceオブジェクトのgatt.disconnectメソッドを使用します。device.gatt.disconnect()動作サンプル以下のURLに様々な動作サンプルが用意されています。Modules(import/export)ことはじめRSSプロフィール古都ことふるみやことです。フロントエンドとかいろいろやるよ。