Me gustaría establecer reglas condicionales de administración de energía según el nivel de carga de la batería.
Actualmente tengo reglas apropiadas establecidas para encendido y batería. Además de esto, me gustaría que se aplicaran las configuraciones de encendido si el nivel de carga de la batería es superior al 75%. El propósito de esto es detener la aplicación de mis configuraciones de suspensión agresivas cuando la batería tiene buena carga. Todavía tengo que encontrar un método para hacer esto, pero pensé que tal vez un script de Python podría cambiar la configuración de energía de la batería según el nivel de carga. Esto implicaría instalar Python y ejecutar un script como servicio. No estoy seguro, pero sospecho que el script puede necesitar privilegios de administrador.
Antes de comenzar a investigar esta idea, me preguntaba si existe un método mejor y más sencillo para hacerlo, ya que el requisito no parece complicado.
¿Existe algún método para configurar la configuración de energía en los sistemas Windows en función del porcentaje de carga de la batería?
Respuesta1
Terminé escribiendo un script en Python para gestionar esto. Solo requiere Python, no necesita derechos de administrador y no se requieren módulos adicionales.
import subprocess
import time
import datetime
battery_watermark = 75
sleep_on_battery_mins = 20
def set_standby_timeout_dc(mins):
return subprocess.call("powercfg -change -standby-timeout-dc " +str(mins))
def battery_precentage():
return int(subprocess.run(["WMIC", "PATH", "Win32_Battery", "Get", "EstimatedChargeRemaining"], capture_output=True).stdout.decode().split("\n")[1][:3].strip())
def on_battery():
#BatteryStatus returns 2 when connected to AC.
charging_status = int(subprocess.run(["WMIC", "PATH", "Win32_Battery", "Get", "BatteryStatus"], capture_output=True).stdout.decode().split("\n")[1].strip())
if charging_status == 2:
return False
else:
return True
print("Windows Power settings changer")
starttime = time.time()
while True:
if (battery_precentage() > battery_watermark) and on_battery():
print(str(datetime.datetime.now()) + ": Setting on-battery standby timeout to 0, battery at " + str(battery_precentage()) + "%, on battery: " + str(on_battery()))
set_standby_timeout_dc(0)
else:
print(str(datetime.datetime.now()) + ": Setting on-battery standby timeout to " + str(sleep_on_battery_mins) + ", battery at " + str(battery_precentage()) + "%, on battery: " + str(on_battery()))
set_standby_timeout_dc(sleep_on_battery_mins)
time.sleep(((sleep_on_battery_mins/2)-1)*60 - ((time.time() - starttime) %60))