問題タブ [gatt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
raspberry-pi - hcitool lescan でデバイスを検出できるにもかかわらず、BLE gatttool が接続できない
USB Bluetooth ドングルを使用して RPi を実行しています。hcitool を使用すると、SmartTag デバイスを検出できます。しかし、gatttool を使用すると接続できません。「ホストがダウンしています (112)」と表示されます。ここに私のコマンドがあります:
RPi で Bluetooth アダプターを確認すると、次のようになります。
次に、このように gatttool を使用すると、次のようになります。
connect と入力すると、次のようになります。
「ホストがダウンしている」という情報は、Bluetooth センサーが検出可能モードになっていないことを意味するという Web 上の情報を見つけました。しかし、SmartTag に関する限り、これは正しくありません。センサーを検出可能にするために TI がプッシュするように言っているセンサーの 1 つのボタン (サイド ボタン) を押すからです。そして、hcitool lescan がデバイスを見つけるために同じものを使用します。また、電話から実行され、同じボタンが押されたときに SmartTag センサーをスキャン、接続、読み取りする Android アプリもあります。
問題が何であるかを知っている人はいますか?前もって感謝します
linux - Gatttool: 5 つの接続に制限されていますか?
Python* で pexpect を使用して gatttools を生成することにより、5 つのデバイスに接続します。6 台目のデバイス (すべての接続に同じ CSR 4.0 ドングルを使用) に手動で接続しようとすると、次のような問題が発生します。
これは gatttool の制限ですか、それともハードウェアの制限ですか? http://git.kernel.org/cgit/bluetooth/bluez.gitでソースを複製して実行しましgrep -r "attempting"
たが、結果は得られませんでした。
Bluetooth Low Energy 経由で 20 台のデバイスに接続したいと考えています。
=====
システム設定: Ubuntu 14.04、bluez v5.20、CSR 4.0 ドングル、adafruit ble nrf8001 ブレークアウト。
参考:
- pexpect の代わりに c ファイルを直接使用する: Linux と Bluez 5.0 を使用した複数の BLE 接続
- pexpect: https://gist.github.com/nouyang/2a6a733d8facd23115a4
- setup/pexpect コードの説明: PYTHON -> ADAFRUIT NRF8001 BLUETOOTH LOW ENERGY BREAKOUT IN 20 MINUTES
linux - BlueZ: コマンドラインから GATT サーバーをセットアップする方法
Linux コマンド ラインから gatt サーバーをセットアップする方法があれば教えてください。BlueZ gatttool コマンドを使用すると、gatt クライアントとして機能し、リモートの gatt サーバーに問い合わせることができることは知っていますが、このツールを使用してサーバーをセットアップできるとは思いません。
私が達成したいのは、コマンドラインから作成された gatt サーバーであり、GATT サーバーに接続し、サービスと特性を発見し、特徴。
例:
3 つの特性を含む 1 つのサービスを備えた Gatt サーバー。
- サービス uuid = 0xFFFF
- Char 1 uuid = 0xAAAA、値 = 01、プロパティ = 読み取り可能
- Char 2 uuid = 0xBBBB、値 = 00、プロパティ = 読み取り可能および書き込み可能
- Char 3 uuid = 0xCCCC、値 = 02、プロパティ = 通知可能
カーネル バージョン 3.11.0 と BlueZ 5.19 を使用しています
bluetooth-lowenergy - Bluetooth BLE モジュールに特定の GATT プロファイルを実装する方法
GATT プロファイルの実装に関してちょっとした質問があります。
つまり、Bluetooth 4.0 モジュールで特定の GATT プロファイルを実装するにはどうすればよいですか? 特にCC2541 BLEモジュールを購入し、GATTプロファイル、特に心拍数モニタープロファイルを実装するにはどうすればよいですか.
android - Android BLE BluetoothGattCallback を BluetoothProfile.STATE_CONNECTING 状態に設定するには?
私はオープン ソースの歩数計用の BLE アプリを作成していますが、これまでのところ 1 つの厄介な問題でうまく機能しています: BLE サービスの BluetoothGattCallback void メソッド "onConnectionStateChange" では、パラメーター "int newState" は 2 つのうちの 1 つしか指定できません。ここに記載されているように、値、STATE_DISCONNECTED または STATE_CONNECTED」:
問題は、BLE デバイスを切断して接続を再試行すると機能するが、接続状態のときにフィードバックがないことです。画面は静的なままで、切断された状態から接続された状態にジャンプします。これには 3 秒から 15 秒かかります。
したがって、私の質問は、BluetoothGattCallback の onConnectionStateChange メソッドに直接アクセスし、その中に「BluetoothProfile.STATE_CONNECTING」の値を渡して、状態「STATE_CONNECTING」の「else if」ステートメントのコード行を実行できるかどうかです。もしそうなら、どのように?
onConnectionStateChange と connect メソッドを添付しました。これらは、開発者の Web サイトで提供されているサンプルの心拍数モニター アプリで提供されているものとほとんど変更されていません。私の唯一の変更は、STATE_CONNECTING の「else if」です。
ありがとう。
bluetooth - Linux で Bluez を使用して Bluetooth LE を実装する方法
BLE デモ用に 2 つの Linux システムのセットアップに取り組んでいます。明らかに、1 つのシステムがペリフェラルになり、もう 1 つが中央デバイスになります。これらの構成の両方について、いくつか質問があります。
環境
- 2x Ubuntu 14.04 システム
- 2x プラグ可能な USB-BT4LE ドングル ( http://plugable.com/products/usb-bt4le )
周辺機器のセットアップ
ビジネスの最初の順序は、周辺システムのセットアップと、構成された GATT サーバーでのアドバタイズです。現時点では、コマンド ラインから GATT サーバーを構成することはできないようです。そのため、USB ドングルを起動して宣伝するのは簡単な作業ですが、カスタム サービスや特性を作成することはできません。私が見つけた唯一の GATT サーバーの例は、Bluez パッケージの gatt-example.c ファイルでした。そこで、最新の bluez-5.23 ソースをダウンロードしてビルドしました。( http://www.linuxfromscratch.org/blfs/view/svn/general/bluez.html )。--enable-maintainer-mode フラグを使用して追加で構成し、gatt-example.c プラグインを強制的に bluetoothd にビルドします。~/bluez-5.23/plugins
そして、ディレクトリからビルド後の検証を行いました。bluetoothd-gat-example.o
ファイル。これは、gatt-example が少なくとも正常にビルドされたことを示しています。
次に、構成ファイルを変更して、LE と属性サーバーを有効にしました。
次に、Bluetoothデーモンを再起動または再起動するだけです...
中央デバイスのセットアップ
中央デバイスは、周辺機器のように構築された特別なプラグインを必要としないため、.exe を使用して bluez をインストールしapt-get
ました。によると、これにより v4.101 がインストールされたようbluetoothd -v
です。
セッションのセットアップ
接続プロセスは非常に簡単です。周辺機器をアドバタイズするようにセットアップしてから、中央デバイスに接続します。
周辺:
中央:
また、gatt-example のサービスまたは特性のいずれも利用できないことがわかります。
質問
--周辺機器
- 独自のカスタム GATT サーバーを作成するにはどうすればよいですか? スタンドアロンの C アプリケーションにすることはできますか、それとも gatt-example のようなプラグインとして bluetoothd に組み込む必要がありますか? この質問 ( Creating a Gatt Server? ) に対する答えは、「GATT ライブラリと追加モジュールを初期化することから始めて」、次に「GATT データベースを登録する」ことを意味します。しかし、これらの一般的なステートメントを実装する方法の例は 1 つもありません。提供されているリンクは、単に Bluetooth Web サイトへの URL です。
- GATT 仕様 ( https://developer.bluetooth.org/gatt/Pages/default.aspx ) は、XML 形式でダウンロード可能な多数の「採用された」サービスと特性を提供します。しかし、それらの使用方法についての指示はありませんか?!
- GATT サーバーが実行されていることを検証するにはどうすればよいですか?
-- 中央装置
- セントラル デバイスが周辺機器で実行されている GATT サーバーからのサービスと特性を認識しないのはなぜですか?
必要な追加情報を提供できます。ありがとう。
android - BLE デバイスから複数の特性を同期的に読み取る (Android の推奨方法)
BLE デバイスからデータを読み取る Android アプリケーションに取り組んでいます。ここで、複数の特性を読み取る方法について多くの解決策に出くわしましたが、それらのほとんどはキューを提案しました。
私は Queue メソッドを実装しましたが、私のコードでは期待どおりにすべてが正常に機能しています。私がこのスレッドを開始した理由は、可能な限り最適で最も効率的なソリューションを見つけ、特定の BLE サービスの特性がどのように機能するかについて疑問を解消するためです。
以下の 2 つのリンクを参考にして、コードを機能させるのに役立ちました。
ソース 1:
ソース 2:
Android BLE API: GATT 通知が受信されない
私の要件は、心拍数の測定値とバッテリーレベルを読み取ることでした。最初に、心拍数とバッテリーの特性をキューに追加してから、追加された要素ごとに読み取り/設定メソッドを呼び出してみました。
主な活動:
bluetoothHDP サービス:
MainActivityに戻ります: (読み取り特性の BLE コールバック操作がトリガーされると)
Broadcast Receiver を使用して、次の Queue 要素を読み取り/設定しました。
上記のコード スニペットは、一方の特性 (心拍数) の BLE デバイスが心拍数測定データを送信し続け、もう一方の特性 (バッテリー パーセンテージ) の BLE デバイスがバッテリーのパーセンテージデータを 1 回だけ送信した場合にのみ正しく機能しました。Queue 要素の順序は、心拍数特性が最初に読み取り/設定され、Queue から削除され、その後にバッテリー特性が続くことに注意してください。
最初は、キューが期待どおりに機能しないと思っていたので、キュー内の特性の順序を交換して、バッテリーのパーセンテージを読み取り/設定および削除する最初の要素とし、続いて心拍数の特性を交換して、問題が実際に正しくないことに関連しているかどうかを確認しましたプログラミング。
しかし、BLE デバイスは以前と同じことを行ったため、そうではありませんでした (心拍数の測定データを送信し続け、バッテリーのパーセンテージは 1 回だけ送信されました)。
したがって、上記のシナリオを考慮して、BLEデバイスにデータを送信させるには、バッテリーレベルのパーセンテージ特性を時々読み取り/設定する必要があるという結論に達しました。これは、ある開発者がタイマー スレッドを使用して BLE デバイスから定期的にバッテリーのパーセンテージの更新を取得しなければならなかった以下の投稿によってさらに支援されました。
Androidのbleで5秒ごとにバッテリーレベルを更新する方法
コードでタイマー スレッドを使用するのは気が進まなかったのです。タイマー スレッドを使用すると、すでに複雑なコードが無限に複雑になってしまうからです。次に、この問題を克服するためにread_Characteristic()メソッドに以下の条件を追加しました。
@ MainActivity
そうすることで、バッテリーの特性がキューから削除されることはなく、read_Characteristic()メソッドがブロードキャスト レシーバーを介して時々呼び出されます (同期パターンが維持されます)。これは現在、私のコードで完全に機能しますが、これが正しいかどうかについて専門家のアドバイスが必要です。
この問題はバッテリーだけに関係しているのか、それとも他の特性にも関係しているのでしょうか。幸いなことに、現時点では、これら 2 つの特性 (心拍数の測定データとバッテリーの割合) のデータのみが必要です。
私のBLEデバイスには限られた機能セットしかなく、現在そこに存在するのはこれらの2つだけであるため、2つ以上の特性を試したことはありません.
これは、BLE デバイスが大量のデータ パケットを Android デバイスに一度に送信できないためですか? その理由は、上記のコードが正常に機能していても、両方のデータ (心拍数とバッテリーの割合) が同時に送信されたインスタンスが 1 つもなかったからです。
誰かがこれに光を当てることができれば、私は大いにお世話になります.
前もって感謝します!