Как я могу программно остановить зарядку аккумулятора ноутбука

Существует некоторая легкодоступная информация о состоянии батареи или о том, заряжается она или нет. (GetSystemPowerStatus API или System.Windows.Forms.SystemInformation.PowerStatus).

Я хочу иметь возможность остановить зарядку аккумулятора на основе некоторых критериев, например. заряд батареи > 20%.

Есть ли API для этого?


person Marcel    schedule 07.07.2009    source источник
comment
Почему вы пытаетесь это сделать?   -  person DevinB    schedule 07.07.2009
comment
Большинство ноутбуков вообще не имеют возможности сделать это в своей прошивке.   -  person pjc50    schedule 08.07.2009
comment
Вы считаете, что ответ, включающий роботов, сделанных из Lego Mindstorms, выходит за рамки?   -  person STW    schedule 25.08.2009
comment
Подключите к удлинителю, а затем нажмите кнопку включения/выключения на удлинителе. знак равно   -  person Garrett    schedule 26.08.2009
comment
@DevinB: Этот мой смутно связанный вопрос объясняет, почему не всегда идеально держать ноутбук заряженным на 100%.   -  person unforgettableidSupportsMonica    schedule 28.08.2015
comment
@DevinB хорошая причина сделать это из соображений безопасности. если вы чувствуете, что скомпрометированы до уровня прошивки, вы можете держать батарею вашего устройства на низком уровне, чтобы она могла полностью отключиться с разряженной батареей. это последний обходной путь, если вы не можете найти эксплойт.   -  person michael g    schedule 01.06.2021


Ответы (10)


Я думаю, что это невозможно, потому что вам нужен какой-то API для аккумулятора или зарядного устройства.

И этот API может предоставить вам поддержку производителя ноутбука и аккумулятора или зарядного устройства.

person MicTech    schedule 07.07.2009
comment
Я использую Сони Вайо. В нем есть утилита под названием Battery Care Function, которая позволяет контролировать уровень заряда. - person isara; 22.11.2009
comment
Интересно, когда (и если) мы когда-нибудь увидим производителя оборудования, который предоставляет все возможные аспекты своих разработок для программных целей! Быть остановленным аппаратным обеспечением — это так не круто. - person Kensai; 17.01.2010
comment
@Kensai - представьте, какой хаос может нанести вредоносное ПО! Уничтожьте свою батарею, а также украсть вашу личную информацию! - person Coxy; 02.06.2010

Честно говоря, не знаю, но я бы посмотрел на APM или ACPI API.

Помимо этого, единственный вариант, о котором я могу думать прямо сейчас, — это роботизированная рука, управляемая через USB, которая выбрасывает аккумулятор, когда вам нужно прекратить зарядку, но это, вероятно, не то, что вы ищете, и граничит с перчатка усложнителя с точки зрения уровня чрезмерной инженерии. :)

person Jack Leow    schedule 07.07.2009

Я думаю, что это возможно, потому что он был запатентован IBM (патент № 7570015).

Не уверен, что для этого доступен Windows API.

person Matt    schedule 17.01.2010
comment
Патенты на программы — это зло. Абсурдно патентовать такую ​​абстрактную идею. Это как запатентовать идею перехода улицы в зависимости от цвета светофора. - person ; 26.01.2010
comment
К счастью, эти патенты недействительны в ЕС. - person Matt; 26.01.2010

Один из вариантов - получить устройство (I) для батареи (Microsoft ACPI-совместимый метод управления батареей). Всегда слушайте события PowerNotification. В каждом уведомлении проверяйте PowerStatus батареи. В .Net и win32 есть API для всех вышеперечисленных целей.

Держите устройство (I) отключенным, пока состояние мощности > порога. Включите его, как только он опустится ниже этого уровня или когда вы не подключены к сети переменного тока (т. е. перед отключением питания переменного тока ваше программное обеспечение для непрерывного мониторинга должно включить это аккумуляторное устройство — или вы включите его вручную).

хм,... это очень ошибочное решение, но оно может достичь того, чего вы хотите, хотя вы должны быть очень осторожны.

person TJ-    schedule 16.11.2009

Я бы просто взял ИБП и программно сказал ему отключить все питание... у большинства должен быть интерфейс для этого. В противном случае, как кто-то уже сказал - удлинитель с компьютерным управлением сделал бы это ^^

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

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

person Oskar Duveborn    schedule 21.11.2009

Я думаю, MiCTech прав. Я не думаю, что это возможно, но вот некоторые ресурсы, которые могут вам пригодиться.

person Shoban    schedule 07.07.2009

Но, например, Vista не будет заряжать аккумулятор, если он отключен, а затем подключен, когда его емкость превышает 96%, поэтому это означает, что к нему можно получить доступ и каким-то образом управлять им.

person Community    schedule 25.08.2009
comment
Это происходит на моем ноутбуке, когда я отключаю его и снова подключаю, если емкость превышает 96%, он говорит, что подключен, а не заряжается. Если я затем отключу и дам ему разрядиться ниже 96%, а затем снова включу, он зарядится до 100%. - person ; 26.08.2009
comment
Мне бы хотелось такое поведение, но я хотел бы установить% на что-то другое, например. 20% - person Marcel; 26.08.2009
comment
@Renesis: Как вы думаете, почему Windows несет ответственность за такое поведение? Я бы предпочел думать, что за это отвечает сам BIOS/батарея, а Vista просто сообщает факты. - person Jay; 30.08.2009
comment
Похоже, виновата не Виста, а биос. Но мне интересно, как это делается на Thinkpads IBM. - person ; 15.09.2009
comment
IBM (или Lenovo сейчас) Thinkpads имеют свои собственные драйверы для управления зарядкой аккумулятора. Если вы создадите собственное оборудование и напишете свои собственные драйверы, вы сможете заставить его делать все, что захотите. - person Eclipse; 26.06.2010

Ноутбуки Lenovo позволяют указать уровни зарядки из BIOS или их программного обеспечения, но эта функция должна быть реализована в BIOS, чтобы к ней можно было получить доступ из Windows.

person Mario M    schedule 10.01.2013

Собственно пользуюсь таким ограничителем заряда. Существует управляющее программное обеспечение — скрипт Python, который отслеживает уровень заряда батареи (модуль psutil) и управляет внешним оборудованием — то есть переключателем, которым можно управлять программно. У меня есть домашняя розетка Energenie и TP-Link, а также собственное аппаратное приспособление.

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

Дайте знать, если интересно. Программное обеспечение находится здесь: CCC.

person Adrian Rosoga    schedule 14.06.2020

Я пришел к выводу:

просто сдавайся и забудь об этом деле. Это не проблема, так что не беспокойтесь об этом. Пусть он подключен и полностью заряжен. когда он на 100%, то система автоматически прекращает зарядку и переходит на питание от розетки, так что, возможно, не беспокойтесь о том, чтобы носить аккумулятор, так как все ноутбуки (если он не из XX века) имеет его авторегулировку. Хотя, если вам когда-нибудь понадобится, пошевелите руками и включите/выключите его вручную. Не ленись. Это первое и самое быстрое решение, поверьте мне.

(однако, если вы хотите тратить время, вот способы -
1) http://www.makeuseof.com/answers/what-battery-manager-can-stop-charging-at-a-certain-percentage/
2) временно отключить устройства (но вам необходимо отключить "метод управления, совместимый с Microsoft ACPI Аккумулятор")
3) https://superuser.com/questions/813182/how-to-stopdisable-battery-charging-on-laptop

person T.Todua    schedule 17.09.2014
comment
Сохранение его на 100% вредит аккумулятору. Потому что более высокое напряжение означает больший износ. См.: wired.com/2013/09/laptop-battery. - person simurg; 29.03.2016