Methode der bedingten Energieverwaltung von Laptops in Windows 11

Methode der bedingten Energieverwaltung von Laptops in Windows 11

Ich möchte bedingte Energieverwaltungsregeln basierend auf dem Ladezustand der Batterie festlegen.

Ich habe derzeit entsprechende Regeln für den Betrieb im eingeschalteten Zustand und im Akkubetrieb festgelegt. Darüber hinaus möchte ich, dass die Einstellungen für den eingeschalteten Zustand gelten, wenn der Akkuladestand über 75 % liegt. Damit soll verhindert werden, dass meine aggressiven Ruheeinstellungen angewendet werden, wenn der Akku gut geladen ist. Ich habe noch keine Methode dafür gefunden, aber ich habe mir überlegt, dass vielleicht ein Python-Skript die Einstellungen für den Betrieb im Akkubetrieb basierend auf dem Ladestand ändern könnte. Dazu müsste ich Python installieren und ein Skript als Dienst ausführen. Ich bin mir nicht sicher, aber ich vermute, dass das Skript möglicherweise Administratorrechte benötigt.

Bevor ich mit der Untersuchung dieser Idee begann, habe ich mich gefragt, ob es hierfür eine bessere und einfachere Methode gibt, da die Anforderung nicht kompliziert erscheint.

Gibt es eine Methode zum Festlegen der Energieeinstellungen in Windows-Systemen basierend auf dem prozentualen Akkuladestand?

Antwort1

Ich habe schließlich ein Python-Skript geschrieben, um dies zu verwalten. Es erfordert nur Python, keine Administratorrechte und es sind keine zusätzlichen Module erforderlich.

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

verwandte Informationen