GNU/Linux >> Znalost Linux >  >> Linux

Zkontrolujte úroveň baterie připojeného zařízení bluetooth v systému linux

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:

  1. Připojte se k cílovému zařízení BLE pomocí bluetoothctl
  2. 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:

  1. 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
  2. Szymon Janc:https://youtu.be/VMDyebKT5c4 vývojář a přispěvatel do LINUX Bluetooth Stack
  3. 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


Linux
  1. Jak nainstalovat ovladač zařízení v systému Linux

  2. Jak zkontrolovat časové pásmo v Linuxu

  3. Kde se nachází bluetooth/bluetooth.h v Linuxu?

  1. Jak zkontrolovat verzi Redhat

  2. Linux – Sysfs a Devtmpfs?

  3. Jak připojit zařízení v Linuxu?

  1. Nízká úroveň Bluetooth Utility?

  2. Jak zkontrolovat historii přihlášení k systému Linux

  3. Příkazový řádek Linuxu, jak přijmout párování pro zařízení bluetooth bez pinu