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:
- Connettiti al tuo dispositivo BLE di destinazione con
bluetoothctl
- 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:
- 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 - Szymon Janc:https://youtu.be/VMDyebKT5c4 sviluppatore e collaboratore dello Stack Bluetooth LINUX
-
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