1つのobnizBLEGatewayのみを使用する場合は、システムはシンプルになります。
システム構成としてはこちらのようになります。
1台のobnizデバイスを使い、複数のBLE Beaconデバイスを検知できます。
基本的なプログラムの流れは下記のようになります。
- obnizデバイスとの接続を確立する
- BLEシステムを初期化する
- 周辺BLEデバイスをスキャンを実行する
- スキャン結果をデータベースなどに保存する
- 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の使い方を参考にしてください。
たとえばこちらの記事がそれぞれ参考になります
スキャン結果を絞りたい場合
条件付き検索でScanTargetを設定する通信量を削減したい
デバイスでフィルタリングをして通信量を削減する
- 30秒おきではなく、ずっとスキャンをしたい
条件付き検索でScanSettingを設定する
- 同一デバイスからのアドバタイズメントを何度も受け取りたい
条件付き検索でScanSettingを設定する