開発部のなーさんです。以前、ご紹介した自宅Wi-Fiお知らせアプリのブログ記事の時はSwiftとXcodeに苦戦していましたが、今では少しずつ慣れてきました。!まだまだインスタンス生成でnewってうっかり書いてしまいます。ひさびさの技術ブログはSwiftを使って弊社のちょっと面白いBeacon、BLEAD-TSHで遊んでみたので何回かにわけて紹介していきます。初回はBLEAD-TSHとは何かについてです。下記は2019年5月現在の情報で執筆しています。文中、画像中で使用されている商標等はそれぞれの企業、団体に帰属します。コンセプト実証用のソースコードのため簡略化等された箇所があります。BLEAD-TSHってなに?BLEAD-TSHはスティック型のBeaconです。ストラップ穴もついているので、首やカバンにぶら下げることだってできます。ただのiBeaconですが・・・実は、内蔵されている加速度センサや温度センサの値をアドバタイズする機能もあるんです!このアドバタイズをスマホなどで受信できれば、余計なケーブルなしで手軽にセンサ値を利用できるようになります。なーさんは、以前から「これがあれば楽しいアプリケーションが作れるのに・・・」と目をつけていました。※アドバタイズを切り替えるときは、BLEAD-MC-Lightの設定画面でBLEAD-Sに切り替えてください。BLEAD-TSHBLEAD-TSHのアドバタイズデータTSHはどんなアドバタイズデータを飛ばしているのでしょうか?さっそく見ていきましょう。Dataに必要なデータが格納されています。そのフォーマットは下記のようになっています。リトルエンディアン全体が26Byteで、いくつかの項目はリトルエンディアンになります。復元するときは気をつけてください。先頭2Byteを文字に変換すると「ZZ」になり、そのあとに問答無用で「00」をつけます。後半4Byteは、下記のように計算してください。Byte0が最下位バイトを示します。このとき残りの2軸は0になります。補数表現なので128以上の値については-256してください。だいたい1秒に一回の頻度で発信される値が更新されますその点を考慮すると、通常100ms間隔で送信しますが、もう少し間引いて電池を温存してもいいかもしれません。※担当者曰く、特注品ならもっと頻度上げられまっせ~、とのこと【温度】0x80のときはOFFになります。こちらも補数表現なので128以上の値については-256してください。ケースに覆われていることもあってなのか、実際の気温とは誤差があるようですね。いいオフセット値を探してみてください。【バッテリ】バッテリの電圧は下記のように計算してください。Byte0が最下位バイトを示します。256iOSで受信するには(Android技術者の方、すみません!!)iOSで受信する場合は、CoreBluetoothのCBCentralManagerを使います。使うのはアドバタイズのスキャンまでなので、下記のデリゲートに処理を書くだけで処理できます。1つ目のデリゲートは、Bluetoothの状態を通知してくれるもの、2つ目のデリゲートが受信できたアドバタイスを通知してくれるものです。2つ目で取得されたadvertisementDataのキーにCBAdvertisementDataManufacturerDataKeyを指定すれば、TSHのデータを取り出せます。NSNumber)せっかくなので、次回はTSHのアドバタイズを受信する簡単なサンプルを作ってみたいと思います。待てない方は、CoreBluetoothについて検索すれば色々と情報が出てくるので、調べてみてください。おわりに今回は、BLEAD-TSHの基本的な情報について書いてみました。Higashiooimachi)から名付けられました!・・・というのは嘘です。(ちなみに恵比寿オフィスの住所もTSHなんです。