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とかのデータをつけるしくみがあるようだ。
- Bluetooth規格書のSupplement(CSSv5):1.11参照
これだけみたい。
そして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もそうだけど、データ長が短いのでそんなに難しい仕様ではない。
公の資料なので、誰でも使えるんだろう。
ちょろっと遊んでみたいものですな。
以上、よろしくお願いいたします。
後日の調査
僕も遊びたいです(^q^)
返信削除iBeaconだとMFiないとだめだろうし、と思ってしまうので、気軽に遊べそうなところがよいですね。
削除発信する方は簡単に作れそうなので、受け手側をどうするかだなぁ。
コミットされてたAndroidアプリが使えるのかしらん。