1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Web Bluetooth API で Characteristic UUID の一覧を取得してみる(toio を使い p5.js Web Editor上で試す)

Last updated at Posted at 2024-03-16

はじめに

ブラウザの「Web Bluetooth API」で、接続したデバイスの Characteristic UUID の一覧を取得してみたという話です。

今回の内容

過去に Web Bluetooth API を使ったお試しをいろいろ行ってきましたが、「API を使ってどんなことができるか/どんな情報を取得できるか」というのをあらためて確認してみようと思い、その第一弾として今回の内容をやってみました。

それを、以下の組み合わせで試してみます。

  • デバイス: toio
  • 開発環境: p5.js Web Editor

なお toio の UUID の一覧は、公式の仕様のページで公開されているので、今回の仕組みを使って確認するというのを行う必要はありません。
今回は、Web Bluetooth API を使って取得した Characteristic UUID のリストが、以下の仕様に合致しているかを簡単に確認できるため、toio を用いています。

image.png

image.png

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上で扱える形にしました)。

sketch.js
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 / 設定
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?