ビーコンのスキャン結果をサーバーに送る

1つのobnizBLEGatewayのみを使用する場合は、システムはシンプルになります。
システム構成としてはこちらのようになります。

1台のobnizデバイスを使い、複数のBLE Beaconデバイスを検知できます。

基本的なプログラムの流れは下記のようになります。

  1. obnizデバイスとの接続を確立する
  2. BLEシステムを初期化する
  3. 周辺BLEデバイスをスキャンを実行する
  4. スキャン結果をデータベースなどに保存する
  5. 3〜4を繰り返す

具体的に書いてみるとこちらのようになります。

const Obniz = require('obniz');

var obniz = new Obniz("OBNIZ_ID_HERE");

// obnizデバイスとの接続を確立する
obniz.onconnect = async function () {


  //BLEシステムを初期化する
  await obniz.ble.initWait();

  obniz.ble.scan.onfind = async function(peripheral){
    console.log(peripheral.localName);

    // スキャン結果をデータベースなどに保存する
    sendToDatabase(peripheral);
  };

  obniz.ble.scan.onfinish = async function(peripherals, error){
    console.log("scan timeout!")
 
    
    //周辺BLEデバイスをスキャンを実行する
    // 30秒で終了してonfinishが呼ばれます
    await obniz.ble.scan.startWait();
  };
 
  // 周辺BLEデバイスをスキャンを実行する
  // 30秒で終了してonfinishが呼ばれます
  await obniz.ble.scan.startWait();


}

function sendToDatabase() {

}

上記のプログラムをカスタマイズすることで、より細かいコントロールを行うことができます。
カスタマイズする際は、obnizjsのBLEの使い方を参考にしてください。

たとえばこちらの記事がそれぞれ参考になります

  • 30秒おきではなく、ずっとスキャンをしたい
    条件付き検索でScanSettingを設定する
  • 同一デバイスからのアドバタイズメントを何度も受け取りたい
    条件付き検索でScanSettingを設定する