質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Android

    6631questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Bluetooth

    239questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。

BLE通信(EddyStone)におけるTLMフレームとビーコンの紐づけ

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 267

coelacanth9

score 1

[前提]
複数のビーコンを使ったBLE通信(EddyStone)を行っています。

[実現したい事]
TLMフレームとビーコンの紐づけを行いたい。

[現状と問題]
EddyStoneのTLMフレームは、個別のビーコンを示すIDを持っていません。
複数のビーコンを検出している状態で、検出したTLMフレームがどのビーコンから発せられたものであるかを特定する方法がわかりません。

直前に検出したUIDのビーコンに対して紐づけるといった方法が考えられますが、
複数のビーコンを同時に検出するような状況において、割り込みや混線のようなイメージで、
ビーコンAのUIDフレーム受信

ビーコンBのUIDフレーム受信

ビーコンAのTLMフレーム受信

ビーコンBのTLMフレーム受信
このような順番で検出した場合、上記の方法では紐づけを誤ってしまうと考えています。

公式では、TLMフレームはUID等のフレームと組み合わせて解析する必要があると書かれています。
https://github.com/google/eddystone/blob/master/eddystone-tlm/tlm-plain.md
特に、Interleavingが必要、というような説明と読めますが、そのInterleavingが具体的にどのような処理なのかわかりません。

[質問]
1. [現状と問題]で挙げているような懸念はあり得るのでしょうか?(割り込み・混線)
2. 公式のいうInterleavingというを用いた具体的な処理構成はどのようになるでしょうか?
3. また、その公式のいう方法で処理すれば、私の懸念している割り込み・混線の問題は回避できるのでしょうか?

以上、宜しくお願いします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

特に、Interleavingが必要、というような説明と読めますが、そのInterleavingが具体的にどのような処理なのかわかりません。

ここでのInterleavingとは、要は使う状況に応じてビーコンの送信間隔を変えましょうと言うことです。その実際の間隔の指定は使う人(運用)次第です。ガイドラインくらいの意味で捉えて差し支えないと思います。

説明にもありましたが、

For example, if your application is using the TLM for fleet management, it may be satisfied receiving one TLM frame per day,

例えば機材管理の為にTLMを利用するような運用だと1日に1回のTLMの送出で状況は把握できるでしょうし、もっと頻繁にデータ収集をするような場所、例えば多くのビーコン機器が配置され、通信量が多くなる場所では1分に1回とのように、それぞれが抑制した頻度でビーコンを発します。対してそうでもない場所ではもっと多い頻度でビーコンを発信するよう設定することもできます。

eddystoneのgithub issueでも参考になるものがありましたのでご案内しておきます。
TLMフレームのみならず、Eddystone-UID や Eddystone-URLのアドバタイジングに関しても、用途に応じて適切に設定しましょうとのことです。
Specification for Interleaving

その他、こちらの説明も参考になると思いましたので併せてご案内します。
Monitor the Health of Your Beacons

上記を踏まえて3つのご質問に回答しますと、

1.[現状と問題]で挙げているような懸念はあり得るのでしょうか?(割り込み・混線)

ご懸念はそのままその通りで、BLEデバイス(ペリフェラル)の固有のIDが区別できない限り、有り得ます。ですので、固有のIDとして利用できるMACアドレスを使用して区別します。

2.公式のいうInterleavingというを用いた具体的な処理構成はどのようになるでしょうか?

先の解説になります。

3. また、その公式のいう方法で処理すれば、私の懸念している割り込み・混線の問題は回避できるのでしょうか?

1.により、回避できるようになると言うことです。

別の話になりますが、気に留めておく必要があるのは、BLEのアドバタイジングは送達確認は無いので、発信したTLMフレームをandroid端末のようなBLEセントラル機器が受信する確約は無いと言うことです。取りこぼしはあり得ます。

また、多くの端末が短い間隔で送信すると受信側のアプリで処理しきれないこともあるのでその辺も考慮する必要はあるかと思います。この辺は実際に試してみて、調整するようなかたちになるでしょうか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/30 17:21

    dodox86様

    ご回答誠にありがとうございます。返信が遅れましたこと、申し訳ございません。
    分かりやすい解説をしていただきありがとうございます。

    ご回答頂きました内容から、
    ・TLMフレームとビーコンを紐づけるにはGATT接続まで行ってMACアドレスを取得する必要がある。
    ・セントラルは、ビーコンが発信するフレームを解析するだけでGATT接続は行わない、といった仕様の場合は紐づけられない。
    という理解をしましたが、その認識で合っていますか?

    割り込み等が起こりえること、Interleavingの意味については、理解できました。ありがとうございます。

    キャンセル

  • 2018/05/30 18:13

    APIによりますが、GATTで接続をしなくても(BLEのアドバタイジングのみ受信の状態でも)BLEペリフェラル側のMACアドレスは取れます。Androidの例ですが、 https://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#getAddress()
    です。

    キャンセル

関連した質問

  • 解決済

    Word型Web ビーコンの自動作成

    以下のサイトを参考に、Webビーコンを作成しています。 http://d.hatena.ne.jp/Kango/20111024/1319462526 ただ、私が今行ってい

  • 解決済

    BLE通信について

    Androidアプリをeclipseで開発していますが、今Bluetooth通信を使ってAndroid端末と別の機器を接続したいと考えています。 Webサイト(http://qi

  • 受付中

    AndroidアプリでBLEを使った送受信について

    Android端末2台で1台にBLEのcentral、もう1台にBLEのperipheral機能を持つアプリを作りました。 やりたいことは、centralアプリからperiphe

  • 解決済

    このBLEアセットの使い方

    以下のリンクのアセットを使用したことがある方いらっしゃれば、使い方を教えていただきたいです。 Assetリンク android版のpdfを読んでも使い方がわからない まず

  • 解決済

    raspberry piでbleモジュールとの接続に失敗する。

    お世話になります。 以前挙げた質問を自分なりに進めておりますが、根本的な部分で躓いているため、お助け頂けると非常にうれしいです。 よろしくお願いします。 前提・実現したい

  • 解決済

    VisualStudio xamain BLEアドバタイズ受信 ManufactureDataの取り...

    前提・実現したいこと VisualStudio,xamarin,C#を初めて扱い、わからないことだらけです。 ご協力をお願いいたします。 VisualStudio2017

  • 解決済

    ESP32でBLEのRSSIを検出したい

    ESP32のBLEのRSSIを検出したいと考えています. まったく,手探りで漠然とした質問ですが,どのようにすれば良いのでしょうか? Nefry BTを使用しており,Arduino

  • 解決済

    Android BLE onCharacteristicChangedが複数回呼び出される

    Bluetooth Low Energyを用いてプログラムを開発しています。 送信側にて64msec周期でキャラクタリスティックを更新し、更新通知が受信側に届いていることをパケット

同じタグがついた質問を見る

  • Android

    6631questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Bluetooth

    239questions

    Bluetoothとは短距離の間でデータを交換するための無線通信規格である。固定・モバイル両方のデバイスから、短波の電波送信を行うことで、高いセキュリティをもつパーソナルエリアネットワーク(PAN)を構築する。