Как Coconut Battery определяет проектную емкость батареи Macbook?

11

Аккумулятор MacBook имеет три номера заряда:

  1. Текущий заряд
  2. Максимальный заряд
  3. Проектная мощность

Даже если Macbook остается подключенным, OS X не пытается зарядить - если (1) составляет 95% от (2), именно поэтому процент в панели уведомлений часто будет между 95% и 100%.

Эти два числа отличаются от «проектной емкости» аккумулятора. Coconut Battery - единственное обнаруженное мной программное обеспечение, которое сообщает о «проектной емкости» батареи Macbook.

Эта проектная мощность не указана в спецификациях Apple, ни в Системной информации, ни на Everymac.com.

Как Coconut Battery определяет проектную емкость батареи?

Калаф
источник
ИСТАТ меню также отображает дизайн емкость батареи
perhapsmaybeharry
6
И тут я подумал, что кокосовая батарея была чем-то вроде лимонной клетки . Какое разочарование.
Подстановочный

Ответы:

27

Вы можете найти эту информацию вместе со многими другими данными о батарее и / или системе из команды

ioreg

Эта команда, согласно своей странице руководства, выполняет:

ioreg отображает реестр I / O Kit. Он показывает иерархическую структуру реестра 1 в виде перевернутого дерева.

1 : иерархический [sic]

Использование фильтра по имени класса ( AppleSmartBatteryдля батареи), чтобы получить только информацию о батарее:

$ ioreg -brc AppleSmartBattery
-b    Show the object name in bold.
-r    Show subtrees rooted by objects that match the specified criteria.
       If none of -c, -k, or -n are supplied, -r has no effect.
-c    Show the object properties only if the object is an instance of, or
       derives from, the specified C++ class (e.g. IOService).

От man ioreg.

Напечатает что-то вроде этого:

$ ioreg -brc AppleSmartBattery
+-o AppleSmartBattery  <class AppleSmartBattery, id 0x100000254, registered, ma$
{
  "ExternalConnected" = Yes
  "TimeRemaining" = 0
  "InstantTimeToEmpty" = 65535
  "ExternalChargeCapable" = Yes
  "FullPathUpdated" = 1464849055
  "CellVoltage" = (4298,4292,4299,0)
  "Voltage" = 12889
  "BatteryInvalidWakeSeconds" = 30
  "AdapterInfo" = 0
  "MaxCapacity" = 5524
  "PermanentFailureStatus" = 0
  "Manufacturer" = "SMP"
  "Location" = 0
  "CurrentCapacity" = 5524
  "LegacyBatteryInfo" = {"Amperage"=0,"Flags"=5,"Capacity"=5524,"Current"=5$
  "FirmwareSerialNumber" = 1
  "BatteryInstalled" = Yes
  "PackReserve" = 200
  "CycleCount" = 318
  "DesignCapacity" = 6330
  "OperationStatus" = 58371
  "ManufactureDate" = 17726
  "AvgTimeToFull" = 65535
  "BatterySerialNumber" = "D864403T3UVFVN7A6"
  "BootPathUpdated" = 1464353527
  "PostDischargeWaitSeconds" = 120
  "Temperature" = 3096
  "UserVisiblePathUpdated" = 1464849490
  "InstantAmperage" = 0
  "ManufacturerData" = <000000000702000a03890000034a34340330304103534449032$
  "MaxErr" = 1
  "FullyCharged" = Yes
  "DeviceName" = "bq20z451"
  "IOGeneralInterest" = "IOCommand is not serializable"
  "Amperage" = 0
  "IsCharging" = No
  "DesignCycleCount9C" = 1000
  "PostChargeWaitSeconds" = 120
  "AvgTimeToEmpty" = 65535
}

Поле, которое вы ищете, это DesignCapacity. Для удобства отфильтруйте его с помощью grep(единица измерения - миллиамперные часы или мАч):

$ ioreg -brc AppleSmartBattery | grep DesignCapacity
      "DesignCapacity" = 6330

Ваше DesignCapacityполе может не отображаться 6330как его значение. Я использую 13 "rMBP середины 2014 года, но, возможно, вы используете другую систему с другим уровнем заряда батареи.

Помимо информации об аккумуляторе, ioregможет использоваться для получения дополнительной информации о вашей системе и других периферийных устройствах - что-то вроде инструмента системной информации из командной строки.


Если вы ищете код-реализацию этой команды, взгляните на Beltex SystemKit на Github . Это одна из самых крутых библиотек Swift, которую я знаю.

Отказ от ответственности: не связан с SystemKit или Beltex. Просто счастливый пользователь SystemKit.

perhapsmaybeharry
источник