Für mich hat das Ausführen im Terminal funktioniert:
upower --dump
Seit Bluez v5.48 wird der Batteriestand nicht mehr in der Liste der GATT-Eigenschaften angezeigt, da diese spezielle GATT-Eigenschaft in DBUS org.bluez.Battery1
verschoben wurde Schnittstelle.
Von der Befehlszeile:
- Verbinden Sie sich mit
bluetoothctl
mit Ihrem BLE-Zielgerät - Und fordern Sie dann DBUS an, indem Sie Folgendes ausführen:
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"
In meinem Fall mit meinem BLE-Peripheriegerät mit folgender MAC-Adresse C3:41:A6:C8:93:42
:
$ 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
Hinweis:Möglicherweise können Sie Ihr Gerät mit der Bluez DBUS-API scannen und eine Verbindung zu ihm herstellen.
Dies ist eine so großartige Frage, vor der Entwicklung und den Tools, die derzeit verfügbar sind.
Die kurze Antwort (im Oktober 2018)
du musst es selbst schreiben! Es wird kein Einzeiler im Terminal sein. Ich werde dies für mich selbst in Python schreiben, aber C hat etwas mehr Dokumentation, also wenn Sie mit C vertraut sind, machen Sie es.
Die lange Antwort , aber es ist eher ein empfohlener Ausgangspunkt:
- Tony D:https://youtu.be/5fQR2PHMDWE?t=4644 konnte
bluetoothctl
verwenden um Attribute zu lesen und Daten an ein Bluetooth-Gerät zu senden. Sehen Sie sich auf jeden Fall die Videoinformationen an, Sie werden tolle Links und Referenzen finden:https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt - Szymon Janc:https://youtu.be/VMDyebKT5c4 Entwickler und Mitwirkender am LINUX Bluetooth Stack
-
Auf jeden Fall Sehen Sie sich an, wie diese Frage auf Mobilgeräten beantwortet wird. Für Android ist es der BAS (Battery Service):https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone
Dies ist vielleicht etwas spät für die Party, aber für mich hat dieses Python-Projekt gut funktioniert:
https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
Ich musste nur den Port in Zeile 57 für mein No-Name-X5-Headset auf 3 ändern. Wenn es hängt oder Fehler mit "Verbindung verweigert" auftreten, versuchen Sie es mit einem anderen Port.
Das Python-Programm verwendet AT-Befehle über RFCOMM und sollte funktionieren, während Pulseaudio die A2DP-Senke verwendet (Mine stellt die Verbindung wieder her). Python 3 wird benötigt, da 2 keine BT-Serial-Sockets hat. Windows wird wahrscheinlich nicht funktionieren, da Bluez fehlt. Es macht im Grunde dasselbe wie der Pulsaudio-Hack hier:https://stackoverflow.com/a/56390625/920122
Wenn Sie sich die ausgetauschten Befehle ansehen möchten, versuchen Sie es mit meinem Debug-Fork:https://github.com/clst/Bluetooth_Headset_Battery_Level