Pro mě spuštění tohoto v terminálu fungovalo:
upower --dump
V seznamu charakteristik GATT nevidíte úroveň baterie od Bluez v5.48, protože tato specifická charakteristika GATT byla přesunuta do DBUS org.bluez.Battery1
rozhraní.
Z příkazového řádku:
- Připojte se k cílovému zařízení BLE pomocí
bluetoothctl
- A pak požádejte o DBUS spuštěním:
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"
V mém případě s mojí periferií BLE s následující MAC adresou 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
Poznámka:Potenciálně můžete skenovat a připojit se k zařízení pomocí rozhraní Bluez DBUS API.
To je tak skvělá otázka, před vývojem a nástroji, které jsou v tuto chvíli k dispozici.
Krátká odpověď (v říjnu 2018)
musíš to napsat sám! Nebude to jedna vložka v terminálu. Napíšu to pro sebe v Pythonu, ale C má trochu více dokumentace, takže pokud jste zběhlí v C, jděte do toho.
Dlouhá odpověď , ale je to spíše doporučený výchozí bod:
- Tony D:https://youtu.be/5fQR2PHMDWE?t=4644 dokázal použít
bluetoothctl
ke čtení atributů a odesílání dat do zařízení bluetooth. Určitě se podívejte na informace o videu, najdete tam skvělé odkazy a reference:https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt - Szymon Janc:https://youtu.be/VMDyebKT5c4 vývojář a přispěvatel do LINUX Bluetooth Stack
-
Určitě podívejte se, jak je tato otázka zodpovězena na mobilních zařízeních. Pro Android je to služba BAS (Battery Service):https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone
To může být na večírek trochu pozdě, ale pro mě tento projekt Pythonu fungoval dobře:
https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
Musel jsem pouze změnit port v řádku 57 na 3 pro můj no-name headset X5. Pokud se zasekne nebo se objeví chyba s "připojení odmítnuto", zkuste jiný port.
Program Python používá AT příkazy přes RFCOMM a měl by fungovat, když Pulseaudio používá jímku A2DP (důl se znovu připojí). Python 3 je potřeba, protože 2 nemá BT-Serial sockety. Windows pravděpodobně nebudou fungovat, protože postrádají bluez. V podstatě to dělá to samé jako hack Pulseaudio zde:https://stackoverflow.com/a/56390625/920122
Pokud se chcete podívat na příkazy při jejich výměně, vyzkoušejte můj ladicí větev:https://github.com/clst/Bluetooth_Headset_Battery_Level