ここでは、BLECAST_BLからの照度データをiPhoneで取得する方法について解説致します。尚、他のBLECASTシリーズを使う場合は、ソースプログラム中のローカルネームの指定を、使用する製品の名前に変更してください。
XCodeで作成したプロジェクトファイル全体を圧縮したものがこちらになります。
BLECAST_BL_test.lzh
非常に短いプログラムなので、詳しくはソースを見ていただければわかるかと思います。
ViewController.m にはTextField が1つ配置されています。BLEBaseClass.mではBLEのスキャンを行っています。iPhpneでBLEを扱う場合はCoreBluetoothというライブラリを使用します。
scanDevicesを実行するとBLEのスキャンを開始します。このスキャンでは近くにあるBLEを全てスキャンしますので、本製品以外にもBLE機器が動作している場合は複数の情報が得られます。

BLE機器を発見するたびにdidDiscoverPeripheral が呼び出されます。 BLECASTシリーズのアドバタイズパケットは次のようになっています。

これらの情報は、一時的にBLEDeviceClassに格納されます。ローカルネームへのアクセスはBLEDeviceClass.peripheral.nameで行います。下の行91〜101では、ローカルネームが”BLECAST_BL"かどうかを判定しています。
CoreBluetoothライブラリの場合、アドバタイジングデータ(オレンジの部分)へのアクセスは、それぞれのタイプを指定して行います。行98で、タイプがManufacture Spec data かどうかを判定し、該当したらそのデータ部をmfData配列に格納します。

行102で、取得したデータのセンサー値2バイトから16ビット値に変換しています。この値はほぼlx(ルックス:照度の単位)となっています。10の場合は10lx、100の場合は100lxです。
まっくらな状態 = 0近く
暗い部屋 = 20〜100
電気をつけた部屋 = 300〜500
くもりの日 = 1500〜2000
はれの日 = 2700前後
快晴、直射日光 = 2750以上
そのデータをデリゲート経由でViewControllerに送り、TextFieldに表示させています。
 |