Pour moi, exécuter ceci dans le terminal a fonctionné :
upower --dump
Vous ne voyez pas le niveau de batterie dans la liste des caractéristiques GATT depuis Bluez v5.48 car cette caractéristique spécifique du GATT a été déplacée dans DBUS org.bluez.Battery1
interface.
Depuis la ligne de commande :
- Connectez-vous à votre appareil BLE cible avec
bluetoothctl
- Puis demandez DBUS en exécutant :
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"
Dans mon cas avec mon périphérique BLE avec l'adresse MAC suivante 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
Remarque :Vous pouvez potentiellement scanner et vous connecter à votre appareil à l'aide de l'API Bluez DBUS.
C'est une si grande question, en avance sur le développement et les outils qui sont disponibles pour le moment.
La réponse courte (en octobre 2018)
vous devez l'écrire vous-même! Ce ne sera pas une seule ligne dans le terminal. Je vais écrire ceci pour moi-même en Python, mais C a un peu plus de documentation, donc si vous êtes doué avec C, allez-y.
La réponse longue , mais c'est plutôt un point de départ recommandé :
- Tony D :https://youtu.be/5fQR2PHMDWE?t=4644 a réussi à utiliser
bluetoothctl
pour lire les attributs et envoyer des données à un appareil Bluetooth. Vérifiez certainement les informations vidéo, vous trouverez d'excellents liens et références :https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt - Szymon Janc :https://youtu.be/VMDyebKT5c4 développeur et contributeur à la pile Bluetooth LINUX
-
Certainement Découvrez comment cette question est répondue sur les appareils mobiles. Pour Android c'est le BAS (Battery Service) :https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone
C'est peut-être un peu tard pour la fête, mais pour moi, ce projet Python a bien fonctionné :
https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
Je n'ai eu qu'à changer le port de la ligne 57 en 3 pour mon casque sans nom X5. En cas de blocage ou d'erreurs avec "connexion refusée", essayez un autre port.
Le programme Python utilise les commandes AT via RFCOMM et devrait fonctionner pendant que Pulseaudio utilise le récepteur A2DP (le mien se reconnecte). Python 3 est nécessaire car 2 n'a pas de sockets BT-Serial. Windows ne fonctionnera probablement pas car il manque de bluez. Il fait essentiellement la même chose que le hack Pulseaudio ici :https://stackoverflow.com/a/56390625/920122
Si vous voulez regarder les commandes au fur et à mesure qu'elles sont échangées, essayez mon fork de débogage :https://github.com/clst/Bluetooth_Headset_Battery_Level