Método de administración de energía condicional de la computadora portátil en Windows 11

Método de administración de energía condicional de la computadora portátil en Windows 11

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))

información relacionada