BLE: セントラル-サービスとキャラクタリスティクス

BLEペリフェラルに含まれるサービスとキャラクタリスティクスへのアクセス方法について。

obniz.jsでは接続完了後に自動的にペリフェラルの持つサービスとそれに紐づくキャラクタリスティクス・ディスクリプタを自動検索し、完了後に接続完了としています。

サービス

ペリフェラルに紐づくサービスはperipheral.servicesに配列の形式で保存されています。存在しない場合は空配列となります。

その中にある利用したいサービスをUUIDで取得するためのperipheral.getService()が用意されています。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  await obniz.ble.initWait(); 
  var target = {
      uuids: ["fff0"],
  };
  var peripheral = await obniz.ble.scan.startOneWait(target);
  if(!peripheral) {
      console.log('no such peripheral')
      return;
  }
  try {
    await peripheral.connectWait();
    console.log("connected");
    console.log("number of services=" + peripheral.services.length);
    var service = peripheral.getService("1800")
    if (!service) {
        console.log("service not found")
        return;
    }
    console.log(service.uuid) // => 1800
  } catch(e) {
    console.error(e);
  }
}

キャラクタリスティクス

サービスに紐づくキャラクタリスティクスも同様に取得可能です。service.characteristicsに配列形式で保存されており、service.getCharacteristics()でUUIDを元に取得できます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  await obniz.ble.initWait(); 
  var target = {
      uuids: ["fff0"],
  };
  var peripheral = await obniz.ble.scan.startOneWait(target);
  if(!peripheral) {
      console.log('no such peripheral')
      return;
  }
  try {
    await peripheral.connectWait();
    console.log("connected");
    console.log("number of services=" + peripheral.services.length);
    var service = peripheral.getService("1800");
    var c = service.getCharacteristic("fff0");
    console.log(c.uuid); // => "fff0"
  } catch(e) {
    console.error(e);
  }
}


Next : BLE: Central-Read/Write values

You will Get in Few Days

Circuit for Starter “obniz Board” is available on Amazon and other online stores.
You can get it at below

Our products and resellers

Forum

Visit our developer’s forum to discuss and discover technologies.

Forum

Contact

Feel free to contact out support and technical team.

Contact us