RaspberryPI Zeroを使ってiBeaconとして動作するビーコンを作ります。
node+bleaconを使います。
2019/10/11時点の最新環境を使いますが、一度node10を入れてnode9に差し替えたりする必要がありますので
自分用メモ代わりにまとめます。
最終的にはSDカードをUSBメモリとしてPCからアクセスできる部分のJSONファイルで
uuidとかを簡単に変更できるビーコンが出来ます。便利!
導入するもの一覧
- Raspbean Buster Lite
- Node9
- bleacon
導入手順
- Raspberry Buster Liteのインストール
最初にRaspberry Liteをインストールします。GUIも欲しかったらDesktopを入れてもokです。
- とりあえず初期設定
> sudo apt-get update
> sudo apt-get upgrade
- nodeのインストール(一旦apt-getでnode10を入れた後bleacon対応版のnode9に入れ替え)
sudo apt-get install -y nodejs npm
sudo npm cache clean
sudo npm install npm n -g
sudo n 9.10.1
sudo apt-get purge -y nodejs npm
- nodeのPATH設定
次の行を/home/pi/.profile末尾に追加
PATH="/usr/local/n/versions/node/9.10.1:$PATH"
- bleaconのインストール
sudo apt-get install -y libbluetooth-dev
npm install bleacon
- ビーコンスクリプトの設定
以下のプログラムを/home/pi/beacon.jsに保存します。
var config = require('/boot/beacon.json');
console.log("START "+config.major+":"+config.minor+" beacon");
var uuid=config.uuid.replace(/-/,'');
var major=config.major;
var minor=config.minor;
var txpower=config.txpower;
const Bleacon = require('bleacon');
Bleacon.startAdvertising(uuid,major,minor,txpower);
以下のJSONを/boot/beacon.jsonに保存します。
※SDカードをPCにマウントした時にアクセスできるフォルダです。
{
"//":"beacon config file",
"uuid":"aaaaaaaabbbbccccddddeeeeeeeeeeee",
"major":99,
"minor":199,
"txpower":-59
}
- 自動起動設定
以下の1行を/etc/rc.localに追加するとZeroの電源を入れるたびにビーコンとして動作します。
sudo /usr/local/bin/node /home/pi/beacon.js > /dev/null &
あとはビーコンの設定を変えたい場合はPCにSDカードを差してJSONを書き変えるだけでOKです。