Agradeceríamos tu ayuda para extender nuestros posts en referencia a las ciencias de la computación.
Solución:
Esta es una gran pregunta, por delante del desarrollo y las herramientas que están disponibles en este momento.
la respuesta corta (en octubre de 2018)
¡Tienes que escribirlo tú mismo! No será un trazador de líneas en la terminal. Voy a escribir esto por mí mismo en Python, pero C tiene un poco más de documentación, así que si eres hábil con C, hazlo.
la respuesta largapero es más un punto de partida recomendado:
- Tony D: https://youtu.be/5fQR2PHMDWE?t=4644 logró usar
bluetoothctl
leer attributes y enviar datos a un dispositivo bluetooth. Definitivamente revise la información del video, encontrará excelentes enlaces y referencias: https://learn.adafruit.com/introduction-to-bluetooth-low-energy/gatt - Szymon Janc: https://youtu.be/VMDyebKT5c4 desarrollador y colaborador de LINUX Bluetooth Stack
-
Definitivamente mira cómo se responde esta pregunta en los dispositivos móviles. Para Android es el BAS (servicio de batería): https://android.stackexchange.com/questions/106073/displaying-bluetooth-gadgets-battery-status-on-the-phone
Puede que sea un poco tarde para la fiesta, pero para mí este proyecto de Python ha funcionado bien:
https://github.com/TheWeirdDev/Bluetooth_Headset_Battery_Level
Solo tuve que cambiar el puerto en la línea 57 a 3 para mi auricular X5 sin nombre. Si se bloquea o se produce un error con “conexión rechazada”, intente con un puerto diferente.
El programa Python usa comandos AT a través de RFCOMM y debería funcionar mientras Pulseaudio usa el sumidero A2DP (el mío se vuelve a conectar). Se necesita Python 3 ya que 2 no tiene enchufes BT-Serial. Windows probablemente no funcionará ya que carece de bluez. Básicamente hace lo mismo que el hack de Pulseaudio aquí: https://stackoverflow.com/a/56390625/920122
Si desea ver los comandos a medida que se intercambian, pruebe mi bifurcación de depuración: https://github.com/clst/Bluetooth_Headset_Battery_Level
No ve el nivel de batería en la lista de características de GATT desde Bluez v5.48 porque esta característica específica de GATT se movió a DBUS org.bluez.Battery1
interfaz.
Desde la línea de comando:
- Conéctese a su dispositivo BLE de destino con
bluetoothctl
- Y luego solicite DBUS ejecutando:
dbus-send --print-reply=literal --system --dest=org.bluez /org/bluez/hci0/dev_
org.freedesktop.DBus.Properties.Get string:"org.bluez.Battery1" string:"Percentage"
En mi caso con mi periférico BLE con la siguiente dirección 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: potencialmente podría escanear y conectarse a su dispositivo usando la API Bluez DBUS.