Comment puis-je vérifier le niveau de la batterie d'un appareil bluetooth connecté ? L'appareil affiche le niveau de la batterie sur Android. Je suppose donc que l'appareil prend en charge la fonction de vérification de la batterie. Service de batterie basé sur le GATT . Cependant, en entrant "menu gatt" dans Bluetoothctl, puis en listant les attributs GATT du périphérique avec "list-attributes [dev]", rien n'apparaît.
A une question similaire a été postée sur SO mais l'OP semble avoir trouvé une solution qui ne fonctionne pas pour moi. Lorsque je lance "info [dev]" dans Bluetoothctl, je ne vois pas l'UUID pour Battery Service.
Je préférerais une solution qui fonctionne en ligne de commande et qui soit indépendante de la distribution.
Veuillez me faire savoir si cette question doit plutôt être postée sur SuperUser.
0 votes
De quel type d'appareil s'agit-il ? Le niveau de la batterie peut être signalé via de nombreux profils différents sur Bluetooth, et pas seulement via le service LE GATT... pouvez-vous utiliser une application d'exploration BLE ou autre pour parcourir les services GATT et confirmer ce qu'il prend réellement en charge ?
0 votes
Pouvez-vous recommander une application d'exploration BLE ? Existe-t-il un moyen de savoir quel type d'appareil est connecté à partir d'un outil de ligne de commande (par exemple bluetoothctl) ?
0 votes
Je vérifie le contenu de
/sys/class/power_supply
comme expliqué dans cette autre réponse .2 votes
@DamianNadales mon
/sys/class/power_supply
contient uniquementAC
etBAT0
.0 votes
Oh. Alors je ne sais pas :/
0 votes
@Ricardo quand vous dites "rien n'apparaît avec
list-attributes [dev]
". Voulez-vous dire qu'il n'y a pas du tout d'attribut GATT ? S'il existe des attributs, pourriez-vous les partager ?0 votes
@OlivierM, oui, je veux dire pas du tout d'attribut GATT.
0 votes
Pouvez-vous dire de quel appareil il s'agit ? Il se peut qu'il ne supporte pas le BLE mais seulement le Bluetooth traditionnel...
0 votes
@OlivierM, l'appareil est le Casque d'écoute Bluetooth Mpow 059
0 votes
Je soupçonne que votre appareil n'utilise pas la technologie BLE pour la connexion (même s'il la prend en charge). Pouvez-vous lancer
bluetoothd
en mode débogage :systemctl stop bluetooth.service && sudo ./src/bluetoothd -d -n
0 votes
@OlivierM, que dois-je rechercher ? On peut voir quelques unes des premières et dernières lignes de sortie aquí .
0 votes
Il semble que votre appareil bluetooth ne soit exposé que par le biais de A2DP (Advanced Audio Distribution Profile). Les informations sur la batterie peuvent être disponibles via ce profil Bluetooth.
4 votes
Comment accéder au profil Bluetooth A2DP ? Comment vérifier si les informations sur la batterie sont disponibles via ce profil ?
0 votes
@Ricardo Regarder cette page github.com/wangrunz/ il semble que vous deviez envoyer des commandes AT. Bien que cela puisse être faisable en ligne de commande en utilisant ma commande stackoverflow.com/a/55008142/6267288 - il pourrait être plus pratique de le faire en utilisant un langage de programmation.
0 votes
Merci @OlivierM ! Je comprends vaguement ce qu'il faut faire. Concrètement, je ne sais pas quoi faire. Il semble que l'auteur de cette application ait également des problèmes. J'espère que quelqu'un écrira une réponse à la question avec des commandes concrètes à exécuter pour obtenir le niveau de batterie d'un appareil bluetooth comme le mien.
0 votes
Hey @OlivierM, savez-vous comment vous pourriez utiliser
dbus-send
pour envoyer ces commandes AT à l'appareil ?0 votes
@Ricardo pour un dispositif BLE, je ne suis pas sûr que vous puissiez le faire en utilisant
dbus
.0 votes
Pourquoi en serait-il ainsi @OlivierM ? Les dispositifs BLE ne sont-ils pas exposés via l'interface dbus ?
0 votes
C'est la couche du GATT qui est exposée à travers
dbus
. Pas la couche ATT.0 votes
Ok, je comprends. Merci pour la clarification @OlivierM. Qu'aviez-vous en tête dans votre commentaire précédent quand vous avez dit qu'il serait possible d'envoyer quelques commandes AT en utilisant votre commande dans stackoverflow.com/a/55008142/6267288 ?