BLE: ペリフェラル-値の変更通知

他の端末がobnizにBLEで接続して、キャラクタリスティクスの値を読んだり書き換えたりすることができます。
そういったイベントが起きたときに呼ばれる関数を設定して、「あ!書き換えられた!」と気づくことができます。

読み込み通知

まず、値が読まれたときに関数を呼ばせることができます。
相手は読んだだけですから、値は変わっていません。

characteristic.onreadfromremote = function(){}

このようにキャラクタリスティクスに対して関数を設定すると、誰かがBLE経由で値を読んだときにこの関数が呼ばれます。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  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.start();

  characteristic.onreadfromremote = function(address){
    console.log("readed");    
  }
}

スマホアプリからキャラクタリスティクスの値を読めばreadedが表示されると思います。

書き込み通知

今度は相手が値を書き込んだときです。
値が変わりますから、こっちのほうがよく使うかと思います。

characteristic.onwritefromremote = function(address, newvalue){
}

このようにコールバック関数を設定しておくと、BLE経由で書き込まれたときに呼ばれます。
newvalueの中に書き込まれた新しい値が入っています。

var obniz = new Obniz("OBNIZ_ID_HERE");
obniz.onconnect = async function () {
  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.start();

  characteristic.onwritefromremote = function(address, newvalue){
    console.log(newvalue);
  }
}

実行してスマホのアプリからキャラクタリスティクスに対して書き込みを行えばログにその値が出てくると思います。



Next : BLE: Peripheral-update value

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