カーエミュレーターで使用する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.
モビリティの記事ランキング
コーナーリンク