GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで接続されたBluetoothデバイスのバッテリーレベルを確認します

端末でこれを実行するとうまくいきました:

upower --dump

この特定の GATT 特性は DBUS org.bluez.Battery1 に移動されたため、Bluez v5.48 以降、GATT 特性のリストにバッテリー レベルは表示されません。

コマンドラインから:

<オール>
  • bluetoothctl でターゲットの BLE デバイスに接続します
  • 次に、dbus-send --print-reply=literal --system --dest=org.bluez /org/bluez/hci0/dev_<mac_address_of_your_ble_peripheral> org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage" を実行して DBUS をリクエストします。
  • 私の場合、次の MAC アドレス C3:41:A6:C8:93:42 を持つ BLE 周辺機器を使用しています :

    $ dbus-send --print-reply=literal --system --dest=org.bluez \
        /org/bluez/hci0/dev_C3_41_A6_C8_93_42 org.freedesktop.DBus.Properties.Get \
        string:"org.bluez.Battery1" string:"Percentage"
       variant       byte 94
    

    注:Bluez DBUS API を使用して、デバイスをスキャンして接続できる可能性があります。


    これは、現時点で利用可能な開発とツールに先立って、非常に重要な質問です。

    短い答え (2018 年 10 月)

    <ブロック引用>

    あなたはそれを自分で書かなければなりません!ターミナルでワンライナーにはなりません。これは Python で自分用に書くつもりですが、C にはもう少しドキュメントがありますので、C に熟練している場合はそちらを使用してください。

    長い答え 、しかし、より推奨される出発点です:

    <オール>
  • Tony D:https://youtu.be/5fQR2PHMDWE?t=4644 bluetoothctl を使用できました 属性を読み取り、Bluetooth デバイスにデータを送信します。ビデオ情報を必ず確認してください。すばらしいリンクとリファレンスが見つかります:https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
  • Szymon Janc:https://youtu.be/VMDyebKT5c4 開発者で、LINUX Bluetooth スタックの貢献者
  • 間違いなく この質問がモバイル デバイスでどのように回答されるかを確認してください。 Android の場合は BAS (バッテリー サービス) です:https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone


  • パーティーには少し遅れているかもしれませんが、私にとっては、この Python プロジェクトはうまくいきました:

    https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level

    名前のない X5 ヘッドセットの 57 行目のポートを 3 に変更するだけで済みました。ハングするか、「接続が拒否されました」というエラーが表示される場合は、別のポートを試してください。

    Python プログラムは RFCOMM を介して AT コマンドを使用し、Pulseaudio が A2DP シンクを使用している間は動作するはずです (鉱山は再接続します)。 2 には BT-Serial ソケットがないため、Python 3 が必要です。 bluez がないため、Windows はおそらく動作しません。基本的には、ここでの Pulseaudio ハックと同じことを行います:https://stackoverflow.com/a/56390625/920122

    交換されるコマンドを確認したい場合は、私のデバッグ フォークを試してください:https://github.com/clst/Bluetooth_Headset_Battery_Level


    Linux
    1. Linux – SysfsとDevtmpfs?

    2. 低レベルのBluetoothユーティリティ?

    3. Linuxのログイン履歴を確認する方法

    1. Linuxコマンドラインで、ピンなしでBluetoothデバイスのペアリングを受け入れる方法

    2. Python で Linux デバイス ファイルに対して低レベルの I/O を実行するにはどうすればよいですか?

    3. bluetooth/bluetooth.h は Linux のどこにありますか?

    1. Linuxにデバイスドライバーをインストールする方法

    2. Redhatのバージョンを確認する方法

    3. Linuxでタイムゾーンを確認する方法