はじめに
ブラウザの「Web Bluetooth API」で、接続したデバイスの Characteristic UUID の一覧を取得してみたという話です。
今回の内容
過去に Web Bluetooth API を使ったお試しをいろいろ行ってきましたが、「API を使ってどんなことができるか/どんな情報を取得できるか」というのをあらためて確認してみようと思い、その第一弾として今回の内容をやってみました。
それを、以下の組み合わせで試してみます。
- デバイス: toio
- 開発環境: p5.js Web Editor
なお toio の UUID の一覧は、公式の仕様のページで公開されているので、今回の仕組みを使って確認するというのを行う必要はありません。
今回は、Web Bluetooth API を使って取得した Characteristic UUID のリストが、以下の仕様に合致しているかを簡単に確認できるため、toio を用いています。
Web Bluetooth API
Web Bluetooth API を使った toio への接続処理で、出だしの処理には以下を用います。
●Bluetooth: requestDevice() メソッド - Web API | MDN
https://developer.mozilla.org/ja/docs/Web/API/Bluetooth/requestDevice
その後は、Characteristic UUID を取得できるところまで処理を進め、その後、Characteristic UUID を全て取得し、取得した内容をログ出力してみます。
プログラムの内容は、以下の通りです(特別な環境を用意することなく簡単に試せるよう、p5.js Web Editor上で扱える形にしました)。
function setup() {
createCanvas(400, 400);
background(220);
}
async function connectAndGetServicesAndCharacteristics() {
const TOIO_SERVICE_UUID = "10b20100-5b3b-4571-9508-cf3efcd7bbae";
try {
const device = await navigator.bluetooth.requestDevice({
filters: [{ services: [TOIO_SERVICE_UUID] }],
});
const server = await device.gatt.connect();
const services = await server.getPrimaryServices();
console.log("Found services:", services);
for (const service of services) {
const characteristics = await service.getCharacteristics();
console.log(`Service: ${service.uuid}`);
for (const characteristic of characteristics) {
console.log(` Characteristic: ${characteristic.uuid}`);
}
}
} catch (error) {
console.error("Error:", error);
}
}
function mouseClicked() {
connectAndGetServicesAndCharacteristics();
}
上記を実行し、toio との接続を行った後に出力された内容は以下のとおりです。
- Characteristic: 10b20101-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20102-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20103-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20104-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20106-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20107-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b20108-5b3b-4571-9508-cf3efcd7bbae
- Characteristic: 10b201ff-5b3b-4571-9508-cf3efcd7bbae
最初の部分が 10b20101 〜 10b20108 となる UUID と、最初の部分が 10b201ff となる Characteristic UUID が取得できているのが分かります。
これらの Characteristic UUID について、公式ページの情報を見ていくと、以下の Characteristic UUID に一致していることが確認できました。
- ID Information / 読み取りセンサー
- Sensor Information / モーションセンサー
- Button Information / ボタン
- Battery Information / バッテリー
- Motor Control / モーター
- Light Control / ランプ
- Sound Control / サウンド
- Configuration / 設定