BLE: ペリフェラル-サービス・キャラクタリスティクス・ディスクリプタの登録

実際に外部から接続を受け付けるためにはサービスやキャラクタリスティクスを用意してobnizに設定する必要があります。

Service/Characteristicクラス

サービスやキャラクタリスティクスは専用のクラスが用意されています。

例えば、UUIDが1234のサービスはこのように作成できます。

var service = new obniz.ble.service({ uuid : "1234" });

service.advDataではobniz.ble.advertisementで出力するのに必要なadvertisement情報が格納され、そのままadの出力に利用できます。

var service = new obniz.ble.service({ uuid : "1234" });
obniz.ble.advertisement.setAdvData(service.advData);

キャラクタリスティクスも同じようにuuidが必要で、さらにdataを使って作成します。

var characteristic = new obniz.ble.characteristic({ uuid : "7777", data: [1, 2, 3]});

登録

上記のように作成したサービスとキャラクタリスティクスを登録することで

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  await obniz.ble.initWait();
  var service = new obniz.ble.service({ uuid : "1234" });
  var characteristic = new obniz.ble.characteristic({ uuid : "7777", data: [1, 2, 3]});
  service.addCharacteristic(characteristic);
  obniz.ble.peripheral.addService(service);

  obniz.ble.advertisement.setAdvData(service.advData);
  obniz.ble.advertisement.setScanRespData({
    localName : "obniz BLE",
  });
  obniz.ble.advertisement.start();
}

まず、サービスとキャラクタリスティクスを作っています。

そして作ったキャラクタリスティクスをサービスに登録し、それができたら今度はサービスをobnizに対して登録しています。

service.addCharacteristic(characteristic);
obniz.ble.peripheral.addService(service);

この段階でadvertisementを出していなくても、接続されたらどんなサービスがあることや、キャラクタリスティクスがあることをBLEで繋いできた他の端末が確認することができるようになります。

つまりadvertisementにはなくても接続したら確認できるサービスということになります。

serviceクラスには自分のUUIDを元にadvertisement用のオブジェクトを作る機能があります。
それを利用してAdvDataを登録します。

obniz.ble.advertisement.setAdvData(service.advData);

そしてデバイス名も登録したらstart()でadvertisementが開始します。

接続通知

実際に他のデバイスから接続されたことを知るにはonconnectionupdatesを利用します。このプロパティに設定された関数が接続時に呼び出されます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  await obniz.ble.initWait();

  obniz.ble.peripheral.onconnectionupdates = function(data){
    console.log("remote device ", data.address, data.status)
  };

  var service = new obniz.ble.service({ uuid : "1234" });
  var characteristic = new obniz.ble.characteristic({ uuid : "7777", data: [1, 2, 3]});
  service.addCharacteristic(characteristic);
  obniz.ble.peripheral.addService(service);

  obniz.ble.advertisement.setAdvData(service.advData);
  obniz.ble.advertisement.setScanRespData({
    localName : "obniz BLE",
  });
  obniz.ble.advertisement.start();
}

同じくスマホから繋げば、繋いだときに繋いできた端末のBLEにおけるaddressやconnectedが表示されると思います。
切断されればdisconnectedとなります。



Next : BLE: Peripheral-Subscription for overwrite

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