カーエミュレーターで使用するWeb Bluetooth APIについても詳しく紹介します。これは、ブラウザからBLE(Bluetooth Low Energy)デバイスを操作できるようにするAPIです。2015年末からGoogle Chromeで利用できるようになり、2016年のGoogle I/Oでは次世代のWeb技術としてフィーチャーされました。
実際にWeb Bluetooth APIを利用して、BLEデバイスを操作するサンプルをご紹介します。基本的には下記の5ステップで実装をしていきます。
実装の前に、前提としてBLEデバイスの構造について把握しておく必要があるので紹介します。
オブジェクト指向プログラミングの経験のある方は、サービスはクラス、キャラクタリスティックはプロパティとイメージしていただくと理解しやすいかもしれません。
通信規格のGATTはBLEがメッセージの送受信を行う方法を定めており、階層データ構造が定義されています。
実際のデータのやりとりは、このキャラクタリスティックに対してRead/Writeの処理を行います。
BLEデバイスのバッテリー残量を表示するサンプルは下記の通りです。手元にBLEデバイスがあれば、Web Bluetoothを試すことができます。バッテリー残量の値は、全てのBLEデバイスで共通して取得可能な値なのでピックアップしました。
function onButtonClick() { log('Requesting Bluetooth Device...'); navigator.bluetooth.requestDevice( {filters: [{services: ['battery_service']}]}) .then(device => { log('Connecting to GATT Server...'); return device.gatt.connect(); }) .then(server => { log('Getting Battery Service...'); return server.getPrimaryService('battery_service'); }) .then(service => { log('Getting Battery Level Characteristic...'); return service.getCharacteristic('battery_level'); }) .then(characteristic => { log('Reading Battery Level...'); return characteristic.readValue(); }) .then(value => { let batteryLevel = value.getUint8(0); log('> Battery Level is ' + batteryLevel + '%'); }) .catch(error => { log(error); }); }
このように非常にシンプルな実装でBLEデバイスに接続し、値を取得することが出来ます。なお、Web Bluetooth APIでは、セキュリティ上の理由で、navigator.bluetooth.requestDevice メソッドを呼び出すためにはクリックアクションなどのユーザージェスチャーが必要です。SSL通信も必須なのでご注意ください。
Copyright © ITmedia, Inc. All Rights Reserved.