LINE Beaconのビーコン部分のみを自前で実装できるLINE Simple Beaconの仕様が公開されました。Raspberry PiやNode.jsでblenoを使ったサンプルコードも合わせて公開されておりますが、いずれもビーコンとして動かすには重量級なデバイスかなと思い、BLEを扱えるマイコンで動作させてみました。
使ったデバイス
- Arduino (Genuino) 101
手元にあったBLEの電波を出せるものがこれだったので使っています。
実装内容
- LINEのUUIDでAdvertisingが飛んでいる
- Advertisingに適切なデータが含まれている
これらが揃っていればLINEのアプリ側が反応し、サーバに通知します。
Arduinoのコード
こちらのEddystoneを実装するためのコードを参考にしました。Arduinoのリファレンスには、まだAdvertisingに関する機能の詳細が載っていないのですが、コードは実装されているという状態です。
BLEService lineService("FE6F"); // LINEの16bit UUIDをサービスに設定
BLEPeripheral ble;
void setup() {
ble.setAdvertisedServiceUuid(lineService.uuid());
ble.setAdvertisedServiceData(lineService.uuid(), data, 8); // Advertisingの際のデータを設定
ble.begin(); // Advertiseの開始
}
どんなデータを入れるのか
最低限必要なのは
- frameTypeData
- hwidData
- measuredTxPowerData
の3点で、8バイトになります。これらが入ると、LINEアプリはビーコンの存在を認識します。
コード
実際のコードはこちらを参照ください。HWIDのみご自身のものに書き換えると、利用できます。