iOS7リリース当初は「iBeacon といえば Estimote」ぐらいの存在感を発揮していたものの、
- 技適とってなくて日本国内で使えない
- 高い
- SDKのソースが隠蔽されている
- SDKはそもそも Core Location のラッパーぐらいの機能しかなくて使う理由がない
- 加速度センサと温度センサはついてるみたいだけどSDKやファームがサポートしてなくて使えない
・・・と 他のビーコンがどんどん実践投入 されていく中でだんだん存在感が薄れてきた Estimote が、ついに加速度センサと温度センサをサポートしたSDKをリリースしたようです。
New Estimote SDK has arrived. Now with support for accelerometer and temperature sensor. Enjoy even more context now! http://t.co/npxRJCFORo
— Estimote, Inc. (@Estimote) 2014, 4月 1
さっそく試してみた
1. SDKを取得
Estimote iOS SDK の 2.0beta ブランチをcloneしてきます。
2. ファームアップデート
2.0betaブランチに付属しているExamplesプロジェクトをビルドすると、
Update Firmware Demoという項目があるので、そこからファームをアップデートします。
自分が持ってるEstimote ビーコン3台のうち、1台は検出されず、1台は何度やっても必ず途中でコケる、そして1台だけ成功しました。
何に失敗してるのかわからなかったので、デモのソースを見てみると、
[self.beacon checkFirmwareUpdateWithCompletion:^(ESTBeaconFirmwareInfoVO *result, NSError *error) { }];
こんな感じでエラーは取れてるので、それを表示するように改修 *1 してみたところ、download -> reboot まではうまくいってて、ファームインストール中に接続が切れてるようでした。
そのビーコンは繋がったり繋がらなかったりするので、電波が弱くなってるのかもしれません。もう1台は一度も検出すらされないし。。
温度センサの値を見る
ファームアップデートに成功すると、Examplesの Temperature Demo でそのビーコンを選択できるようになります。
で、そのビーコンを選択すると、接続が始まり、接続成功すると、
28.2度・・・
まだまだ肌寒い4月6日現在において、そんなはずはありません。
下に書いてあるINFORMATIONを読むと、参照温度をセットしてキャリブレーションしてねと書いてあります。
気温をキャリブレーション
手元に温度計等がなかったので、天気アプリで現在の気温を見て、
[self.beacon calibrateTemperatureWithReferenceTemperature:@(10.) completion:^(NSNumber *value, NSError *error) { }];
こんな感じでキャリブレーションしました。
当たり前ですが、一度やればOKです。
ただビーコンごとにやる必要はあるので、もしこのビーコンの温度センサ機能を実践投入するなら、(台数によっては)複数のビーコンを一括キャリブレーションするユーティリティが必要になりそうです。
温度センサの値を取得するメソッド
こんな感じのシンプルなものでした。
[self.beacon readTemperatureWithCompletion:^(NSNumber* value, NSError *error) { }];
加速度センサの値を見る
Examples の Accelerometer Demo で確認できます。
iOSの加速度センサのようにデバイスの傾きが得られるのではなく、Core Motion のモーションアクティビティのように動いた回数がカウントされます。
ビーコンを動かしながら値がどう動くか見てみた感じだと、閾値以上の傾きがあるたびに値がインクリメントされるようです。
加速度センサの値を取得するメソッド
実はiOSのように加速度センサの傾き自体を取得できるようになっていて、でもアプリ側で閾値処理して歩数カウントしてるのかなと期待したのですが、
[self.beacon readAccelerometerCountWithCompletion:^(NSNumber* value, NSError *error) { }];
SDKでカウント自体しか取れないようにされていました。
使い道
温度センサは、iOSデバイスにも、他のビーコン端末にもついてない *2 センサなので、ビーコンの可能性がいろいろ広がるのではないでしょうか。
たとえば、IRKit + iBeacon であれば、今まで領域に入ったらエアコンon、出たらoff、としていたものを、温度が一定以上なら冷房をon、温度が一定以下なら暖房をon、みたいに出来ます。
加速度センサは、据え置きというよりは失くしもの防止等の持ち歩き用途で移動中かどうかを判別するとか、据え置き型なら持ち出し防止とか、そういったことに使えるかもしれません。
何はともあれ、技適マークは取得してくれないとどうにもなりませんが。。
参考・関連記事
- Estimote SDK updated with accelerometer and... | Reality matters
- http://d.hatena.ne.jp/shu223/20131211/1386763780
- http://d.hatena.ne.jp/shu223/20140304/1393887807
- http://d.hatena.ne.jp/shu223/20140131/1391155397
- http://d.hatena.ne.jp/shu223/20140304/1393908483
- http://d.hatena.ne.jp/shu223/20140115/1389738427
*2:kontakt.io は、新基盤でセンサを拡張できるようになっているとCEOが言ってました。