iBeaconの受信確認

このレシピについて

iBeaconを受信するサンプルレシピです。

本レシピでは、近くにあるUUIDが一致するiBeaconを受信した際に、その状態をディスプレイに表示します。該当のiBeaconのUUIDの番号は、機器のマニュアルやスマートフォンでのBeaconスキャンするアプリケーションで確認することができます。

概要

 

 

本レシピのダウンロードはこちらから。

iBeaconの受信確認レシピ.krx ※内容確認用レシピファイル

iBeaconの受信確認レシピ.zip ※書込み用レシピ実行ファイル

本レシピはサンプルです。各サンプルについて動作確認を行っておりますが、全ての環境において動作を保証するものではありません。正しく動作することを確認の上でご利用ください。

 

レシピ利用のための準備

書込み環境の構築やレシピツールの使用方法は、ユーザーガイド「はじめよう」を参照ください

KC4-C-100A/KC4-C-101Aのユーザーガイドはこちら

 

レシピ内容(ブロック構成)

構成するブロックの説明

本レシピのブロック構成は、以下の通りです。
ブロック構成はレシピツールに本レシピをインポートすれば、レシピ編集画面から確認できます。

ブロック構成図

ビーコン共通スキャン設定

スキャン時間とスキャン間隔

ブロック説明1

上記の例では160ms毎に80ms間スキャンをします。
このため50%の時間スキャンをして半分休む設定となります。100%スキャンをする場合は、スキャン間隔とスキャン時間を同じ値を入れることで実現できます。

スキャンRSSI値

ブロック説明2

ビーコン機器から距離が近い程数値は小さくなります。
ここで指定するRSSI値は受信機で検出した電波強度の足切りの値となります。
上記の例では受信したビーコンの電波強度が-96dBmより小さかった場合は電波を受信しても検出していないことになります。

イベント通知周期

ブロック説明3

ビーコンは高頻度で発信している為、受信したタイミング毎にイベントを通知すると高頻度でイベントを通知することになります。このため指定時間内でイベントを一度だけ通知する設定をすることができます。

ビーコン機器別設定

フィルタを選択

ビーコン機器別設定のブロックは、「フィルタを選択」の項目によって形が大きく変わります。iBeaconを設定するブロックを使用する際に左側のメニューから取り出す際には「Advertiser's Data」のブロックを配置してから「iBeacon」に変更してください。

ブロック説明4

今回のレシピでは、iBeaconの受信確認を行いますので、この項目をiBeaconに変更をして設定を入力していきます。

設定Index

ブロック説明5

現在この項目は0のまま特に設定変更の必要はありません。

UUID Bit Mask / UUID Filter Data

ブロック説明6

「UUID Bit Mask」と「UUID Filter Data」は飛んでいるたくさんのBeaconの中から、特定のUUIDを持つ単体のビーコンまたは、複数のビーコンを選別できる様に設定をするパラメータとなります。

選別をする仕組みは、受信した「UUID」と「Bit Mask」のANDをとり、その結果が「Filter Data」と一致した場合に検出と判断をします。

上図の例では、

ブロック説明7

この例ではマスクがFFFF…となり分かりづらいですが、下記のような製品のバージョンによってUUIDが少し変わるようなビーコンがあった場合、以下のようにフィルタを変えるとバージョンが違っても受信することが可能となります。

ブロック説明8

Major Bit Mask / Major Filter Data

Minor Bit Mask / Minor Filter Data

ブロック説明9

「Major/Minor Bit Mask」と「Major/Minor Filter Data」の設定はUUIDと同じ内容となります。上記の例では、Major/Minor共にどんな値が来ても検出する設定となります。

例えば、Major番号を2のみ検出したい場合は、

ブロック説明A

となります。Bit Mask も Filter Data も16進数での入力となり、Bit MaskとのANDはビット単位で行いますので、Bit操作のイメージをお願いします。

スキャン開始イベント

ビーコンのスキャン開始は、下図のブロックで行います。現在のツールバージョンでは、「もし」ブロックの中に接続する形で使用しますのでこの形で構成します。

ブロック説明B

スキャン結果受信待ち

検出したBeaconが設定したMaskやFilterと一致する場合にこちらのブロックが実行されます。このブロックの中に受信したBeaconの中身のデータを取り出す処理が入ります。今回のレシピでは受信したらディスプレイに表示のみの処理となっています。

ブロック説明C

注意点として「スキャン開始イベント」と「スキャン結果受信待ち」のイベントIDを合わせる必要があります。複数のBeaconを受信する際には、複数のスキャン開始と受信とが分かれますので、それぞれが繋がるように番号を合わせて設定が必要です。

ブロック説明D

 

レシピ活用のヒント

受信したビーコンのデータを取り出す為には、iBeacon Frameの中からMajorNumとMinorNumを切り出す必要があります。この切り出しをブロックで行うためには少し工夫が必要となり、以下のような構成となります。

(※今後簡単に取り出せるようなブロックのアップデートを行う予定です。)

ヒント

 

本レシピのダウンロードはこちらから。

iBeaconの受信確認レシピ_Major_Minor取り出し.krx ※内容確認用レシピファイル

iBeaconの受信確認レシピ_Major_Minor取り出し.zip ※書込み用バイナリファイル

この例では取り出した値はログに保存している状態になりますが、このデータをHTTPなどのプロトコルに乗せてクラウドに送信することで、ビーコンを使ったサービスを構成することが可能となります。

iBeaconフォーマットに関しては、ホワイトペーパーに詳しく掲載していますので、ご参照ください。

関連情報

対応機種:KC4-C-100A/KC4-C-101A

 

※iBeaconは、米国およびその他の国で登録されたApple Inc.の商標です。

※画面はイメージです。