GNU/Linux >> Linux Esercitazione >  >> Linux

Controlla il livello della batteria del dispositivo Bluetooth connesso su Linux

Per me l'esecuzione nel terminale ha funzionato:

upower --dump

Non vedi il livello della batteria nell'elenco delle caratteristiche GATT da Bluez v5.48 perché questa specifica caratteristica GATT è stata spostata in DBUS org.bluez.Battery1 interfaccia.

Dalla riga di comando:

  1. Connettiti al tuo dispositivo BLE di destinazione con bluetoothctl
  2. E poi richiedi DBUS eseguendo: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"

Nel mio caso con la mia periferica BLE con il seguente indirizzo MAC 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

Nota:potresti potenzialmente eseguire la scansione e connetterti al tuo dispositivo utilizzando l'API Bluez DBUS.


Questa è un'ottima domanda, prima dello sviluppo e degli strumenti disponibili al momento.

La risposta breve (a ottobre 2018)

devi scriverlo tu! Non sarà una nave di linea nel terminal. Lo scriverò per me stesso in Python, ma C ha un po' più di documentazione, quindi se sei abile con C provaci.

La risposta lunga , ma è più un punto di partenza consigliato:

  1. Tony D:https://youtu.be/5fQR2PHMDWE?t=4644 è riuscito a usare bluetoothctl per leggere attributi e inviare dati a un dispositivo bluetooth. Sicuramente controlla le informazioni sul video, troverai ottimi link e riferimenti:https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt
  2. Szymon Janc:https://youtu.be/VMDyebKT5c4 sviluppatore e collaboratore dello Stack Bluetooth LINUX
  3. Sicuramente controlla come si risponde a questa domanda sui dispositivi mobili. Per Android è il BAS (Battery Service):https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone


Potrebbe essere un po' tardi per la festa, ma per me questo progetto Python ha funzionato bene:

https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level

Ho dovuto solo cambiare la porta nella riga 57 in 3 per il mio auricolare X5 senza nome. Se si blocca o si verifica un errore con "connessione rifiutata", prova una porta diversa.

Il programma Python utilizza i comandi AT tramite RFCOMM e dovrebbe funzionare mentre Pulseaudio utilizza il sink A2DP (il mio si riconnette). Python 3 è necessario poiché 2 non ha socket BT-Serial. Windows probabilmente non funzionerà in quanto manca di bluez. Fondamentalmente fa la stessa cosa dell'hack Pulseaudio qui:https://stackoverflow.com/a/56390625/920122

Se vuoi guardare i comandi mentre vengono scambiati, prova il mio fork di debug:https://github.com/clst/Bluetooth_Headset_Battery_Level


Linux
  1. Come controllare la cronologia di accesso di Linux

  2. Riga di comando di Linux come accettare l'associazione per il dispositivo Bluetooth senza pin

  3. Come eseguo I/O di basso livello su un file di dispositivo Linux in Python?

  4. Dove si trova bluetooth/bluetooth.h in Linux?

  5. Come montare un dispositivo in Linux?

Come controllare la versione di Kali Linux

Come controllare la versione di Linux

Come connettersi tramite Bluetooth in GNOME su Linux

Tutto è file in Linux – Parte 1

Come controllare lo stato della batteria del laptop e il livello nel terminale in Linux

Controlla il fuso orario in Linux