---
title: LINE Simple BeaconをGenuino 101で使うには
tags: LINE linebot Arduino beacon BLE
author: niccolli
slide: false
---
LINE Beaconのビーコン部分のみを自前で実装できる[LINE Simple Beaconの仕様が公開されました](https://engineering.linecorp.com/ja/blog/detail/117)。Raspberry PiやNode.jsでblenoを使ったサンプルコードも合わせて公開されておりますが、いずれもビーコンとして動かすには重量級なデバイスかなと思い、BLEを扱えるマイコンで動作させてみました。

## 使ったデバイス

- Arduino (Genuino) 101

手元にあったBLEの電波を出せるものがこれだったので使っています。

## 実装内容

- LINEのUUIDでAdvertisingが飛んでいる
- Advertisingに適切なデータが含まれている

これらが揃っていればLINEのアプリ側が反応し、サーバに通知します。

## Arduinoのコード

https://github.com/bneedhamia/CurieEddystoneURL

こちらの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アプリはビーコンの存在を認識します。

## コード

https://github.com/niccolli/LINESimpleBeaconForCURIE

実際のコードはこちらを参照ください。HWIDのみご自身のものに書き換えると、利用できます。

