obnizBLEでのフィルタリング



  • obnizBLEで、BLEビーコンの受信データをUUIDでフィルタリングするテストをしましたが、Console上には何も表示されなくなってしまいました。(フィルタリング前は受信内容が表示されていました)
    また、受信データをDropboxに書き込む様にしてみましたが、上記と同様に何も出力されません。
    ビーコンとobnizBLEは至近距離に配置しており、受信環境に変化は有りません。
    考えられる問題があればご教授頂きたく。
    ソースコード(部分):
    var setting = {
    duration: 10, // 10 sec
    duplicate: true, // allow duplicate
    activeScan: false
    }
    var target = {
    uuids: ["<uuid>"]
    }
    obniz.onconnect = async function () {
    await obniz.ble.initWait();
    var dbx = new Dropbox.Dropbox({ accessToken: '<token>' });

    obniz.ble.scan.start(target,setting);
      obniz.ble.scan.onfind = function (peripheral) {
        console.log(peripheral.address,peripheral.localName,peripheral.iBeacon);
    

    dbx.filesUpload({path: '/obniz.txt', contents: peripheral.address + ", " + peripheral.localName + ", " + peripheral.iBeacon + ", " +new Date(), mode: 'overwrite' });


  • administrators

    @Makoto-Omata さん

    たとえば、下記のように書くと動くのを確認いたしました。 (obniz.js3.2.0にて確認)

    var setting = {
            duration: 10, // 10 sec
            duplicate: true, // allow duplicate
            activeScan: false
          }
          var target = {
          uuids: ["273e5100-6b90-4779-83b8-b8bf1dadac35"]
          }
          await obniz.ble.initWait();
    
          obniz.ble.scan.start(target,setting);
          obniz.ble.scan.onfind = function (peripheral) {
                console.log(peripheral.address, peripheral._adv_data_filtered.serviceUuids);
          
          };
    

    serviceが存在したとしても、BLEのadvertisementの中にそのUUIDが入っているかどうかはまた別の話となります。
    上記のプログラム内で peripheral._adv_data_filtered.serviceUuids がadvertisementの中に入っていたUUID一覧になります。(内部で使用している変数になります)

    そちらをご確認いただき、フィルタリングの確認をしていただければと思います。