Проверьте уровень заряда батареи подключенных наушников bluetooth из командной строки

24

Я пытаюсь проверить уровень заряда батареи беспроводных наушников из командной строки. Я натолкнулся на несколько обсуждений , и, похоже, все, что мне нужно сделать, это ввести следующее:

ioreg -c 'deviceName' |grep -i batterypercent

Я попробовал эту команду, используя "Powerbeats Wireless" и "bluetoothaudiod" для 'deviceName's, но ни один не вернул batterypercent. Я попытался ioreg -c bluetoothaudiod |grep -i batteryполучить общую информацию о батарее и получить в ответ:

| |   +-o AppleSmartBatteryManager  <class AppleSmartBatteryManager, id 0x100000250, registered, matched, active, busy 0 (0 ms), retain 7>
| |     +-o AppleSmartBattery  <class AppleSmartBattery, id 0x100000252, registered, matched, active, busy 0 (0 ms), retain 6>

Если я подключу наушники к своему iPhone , уровень заряда батареи сразу же выскочит на панели инструментов. Это заставляет меня поверить, что устройство передает уровень заряда батареи, и что я должен иметь доступ к этой информации с моего компьютера.

Как я могу проверить уровень заряда батареи моих наушников, подключенных по Bluetooth?

Редактировать:

Первоначально я думал, что проблема была с именем устройства, но кажется "Powerbeats Wireless"и bluetoothaudiodработает взаимозаменяемо. Просто не могу понять, как получить доступ к batterypercentпараметру.

Изменить 2:

Глядя на документах Bluetooth, кажется , есть служба батареи , которая обнажает состояние аккумулятора и уровень заряда аккумулятора . Уровень заряда батареи можно прочитать с помощью подпроцедуры GATT Read Characteristic Value , поэтому мне нужно выяснить способ взаимодействия с этим сервисом из командной строки. У меня такое чувство, что он batterypercentможет быть закодирован только для стандартных периферийных устройств (трекпад, мышь, клавиатура), так как все виджеты мониторинга батареи, которые я пробовал, совместимы только с такими устройствами.

Изменить 3:

Пересматривая это почти год спустя. Я знаю, что у меня есть беспроводной трекпад и клавиатура, и я могу видеть их уровень заряда батареи отлично (как на панели инструментов, так и в командной строке). Хотя я все еще не могу определить уровень заряда батареи в моих наушниках и не знаю почему: /

Pingo
источник
ioreg -c "Powerbeats Wireless" |grep -i batteryтакже возвращает общую информацию о батарее, поэтому я думаю, что у меня правильное имя устройства. Но почему batterylevelкоманда не работает !! Smh
Пинго
Пожалуйста, отредактируйте свой вопрос вместо того, чтобы комментировать свой собственный вопрос.
At0mic
Редактирование @IronCraftMan завершено. Вы думаете, что могли бы предложить любую помощь?
Пинго
Привет - мне интересно услышать, если у вас есть еще. Я хочу получить время автономной работы контроллеров PS4, подключенных BlueTooth к моему iMac.
Данксд
Также не работает для моих наушников JVC Bluetooth. Странно, потому что мой 5-летний iPhone 4S без проблем сообщает мне уровень заряда батареи при подключении.
Джон Смит

Ответы:

8

На моем iMac (macOS 10.12.6) ни одно из упомянутых выше решений не работает. После прочтения справочной страницы ioreg . Решение, которое работает на моем компьютере:

// the -r option is used to reduce output
// the -l option is used to display properties for all object
// by default some object properties are not shown
// the -c specify device class, the class could be specific or general
ioreg -c AppleDeviceManagementHIDEventService -r -l
ioreg -c AppleDeviceManagementHIDEventService -r -l | grep -i battery

// instead of using device io class, you could also use a property key to query
// you need to know one of target device's property key(-k), for example it is BatteryPercent for Bluetooth keyboard and mouse
// any device with this property will be listed
ioreg -r -l -k "BatteryPercent"
ioreg -r -l -k "BatteryPercent" | grep -i battery

Есть несколько других классов устройств, которые можно использовать для аргумента -c: AppleHSBluetoothDevice AppleHSBluetoothHIDDriver AppleMultitouchMouseHIDEventDriver AppleHIDKeyboardEventDriverV2 , они дают различный вывод.

Минхао Ни
источник
7

Вам нужно использовать ioreg. Вам нужно будет узнать название устройства. Просто следуйте этому руководству.

Короче говоря, в основном вы управляете ioreg -c <devicename> |grep '"BatteryPercent" ='

Пример:

ioreg -c BeatsBluetoothHeadset |grep '"BatteryPercent" ='

введите описание изображения здесь

Кроме того, вы можете получить более подробную информацию о батарее с помощью:

ioreg -c BeatsBluetoothHeadset |grep Battery
wynshaft
источник
2
Эй, спасибо за ваш ответ! Эта проблема характерна для наушников Beats, поскольку я могу получить доступ к уровням заряда батареи для моей беспроводной клавиатуры и трекпада. Буду обновлять оригинальный вопрос!
Пинго
это не работает для меня
Jadda
1

Я только что обнаружил, что для проверки уровня заряда батареи моего powerbeats 3 на моем Mac я просто захожу в меню bluetooth в области значков в правом верхнем углу экрана, наводя курсор мыши на подключенные powerbeats, а затем показывает уровень заряда батареи прямо там. Надеюсь, это поможет.

Китон
источник