2015/07/15

[ble?]EddystoneというBeacon

GoogleがEddystoneなるBeacon規格を出したということで、ざっと見てみよう。

https://github.com/google/eddystone/blob/master/protocol-specification.md

 

共通要素

Eddystoneは以下のPDUを持ってないといかん。

  • Service Solicitation(サービス勧誘?)
    • Bluetooth規格書のSupplement(CSSv5):1.10参照
      "Service Solicitation"というのはEddystone専用の言葉じゃなくて、Bluetooth規格に出ている。
      UUIDとして16bit、32bit、128bitがあるのだが、Eddystoneでは0xFEAAという値とのこと。
  • Service UUIDs
    • Bluetooth規格書のSupplement(CSSv5):1.1参照
      本文は"Solicitation"なのだが、表のバイナリ値(AD Type)を見ると0x03なので"«Complete List of 16-bit Service Class UUIDs»"のはず(githubのところにも書いてあった。)。0xFEAAなのは同じ。
  • Service Data(サービスデータ)
    • Bluetooth規格書のSupplement(CSSv5):1.11参照
      サービスと関連したUUIDで、これも16bit、32bit、128bitがある。
      Eddystoneではこれも0xFEAAという値とのこと。
      ただ、この後にURLとかのデータをつけるしくみがあるようだ。

これだけみたい。
そしてService Dataを0xFEAAに続けて書いていくことで、以下のどれかのデータを付加できるらしい。

  • 0x00:Eddystone-UID
  • 0x10:Eddystone-URL
  • 0x20:Eddystone-TLM

付加できるといっても、Advertisingできるデータサイズは小さい。
31byteくらいだったか・・・ちょっとすぐに出てこん。
付加するデータの種別までで12byte使うので、全部で31byteまでだったら残りは19byteだ。

Eddystone-UID

10byteのネームスペースID+6byteのインスタンスID=16byteのUUID。

 

Eddystone-URL

圧縮URL(というのか?)を載せるようだ。
例として「https://goo.gl/Aq18zF」。21byteある。。。
(ちなみに、上はhttps://en.wikipedia.org/wiki/Eddystone_Lighthouseになった)

ソースを見ると、べたっとしたURIじゃなくてエンコードされるような感じもする。
まあ、要確認ですな。
eddystone/UriBeacon.java at master · google/eddystone

 

Eddystone-TLM

なによTLMって!!
バッテリー電圧とか温度とからしい。

 

というところまで読んで、「データの中身はソース見ないとわからんのか・・・」と悲しんだのだが、そんなことはない。
タイトルからリンク先に飛べるようになっていた。
今は読む気力がないので、リンクだけ残しておこう。


iBeaconもそうだけど、データ長が短いのでそんなに難しい仕様ではない。
公の資料なので、誰でも使えるんだろう。
ちょろっと遊んでみたいものですな。

 

以上、よろしくお願いいたします。


後日の調査

2 件のコメント:

  1. 返信
    1. iBeaconだとMFiないとだめだろうし、と思ってしまうので、気軽に遊べそうなところがよいですね。

      発信する方は簡単に作れそうなので、受け手側をどうするかだなぁ。
      コミットされてたAndroidアプリが使えるのかしらん。

      削除

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。