Windows 11의 노트북 조건부 전원 관리 방법

Windows 11의 노트북 조건부 전원 관리 방법

배터리 충전 수준에 따라 조건부 전원 관리 규칙을 설정하고 싶습니다.

현재 전원 켜기 및 배터리 켜기에 대한 적절한 규칙이 설정되어 있습니다. 이 외에도 배터리 충전량이 75% 이상일 경우 전원 켜기 설정을 적용하고 싶습니다. 이것의 목적은 배터리가 충분히 충전되었을 때 공격적인 절전 설정이 적용되는 것을 중지하는 것입니다. 나는 아직 이 작업을 수행하는 방법을 찾지 못했지만 Python 스크립트가 충전 수준에 따라 배터리 전원 설정을 변경할 수 있다고 생각했습니다. 여기에는 Python을 설치하고 스크립트를 서비스로 실행하는 작업이 포함됩니다. 잘 모르겠지만 스크립트에 관리자 권한이 필요한 것 같습니다.

이 아이디어를 조사하기 전에 요구 사항이 복잡해 보이지 않기 때문에 이 작업을 수행하는 더 좋고 간단한 방법이 있는지 궁금했습니다.

배터리 충전율에 따라 Windows 시스템에서 전원 설정을 지정하는 방법이 있습니까?

답변1

나는 이것을 관리하기 위해 Python 스크립트를 작성했습니다. Python만 필요하고 관리자 권한이 필요하지 않으며 추가 모듈이 필요하지 않습니다.

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

관련 정보