複数obnizデバイスを使ってエリアを拡張する

複数台のobnizBLEGatewayを使用する場合も、システムは
ほとんど1台のときと変わりません。
システム構成としてはこちらのようになります。

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

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

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

const Obniz = require('obniz');

var obnizIdList = [
"OBNIZ_ID_A_HERE",
"OBNIZ_ID_B_HERE",
"OBNIZ_ID_C_HERE",
"OBNIZ_ID_D_HERE"
]

for(let obnizId of obnizIdList){
    var obniz = new Obniz(obnizId);    
    // 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() {
  
}

1台のときのプログラムとと殆ど変わらないことがわかるでしょうか。

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

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

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