일시 중단 모드의 알람 시계


9

아침에 랩톱을 일시 중단 모드에서 깨우고 mp3 파일을 사용하여 깨우도록 경고합니다. 어떻게합니까?

apmsleep을 시도했지만 PC에서 BIOS에 "suspend to RAM"기능이없는 경우 작동하지 않습니다. 어떡해? 감사!

답변:


13

1. 기본 알람 시계 기능

일시 중단 모드 들어가기

이 솔루션의 경우 아래 스크립트를 실행하여 일시 중단 모드로 들어가야합니다. 컴퓨터가 일시 중단 모드로 전환되고 스크립트에서 사용자가 정의한 (시계) 시간에 절전 모드를 해제합니다. 노래를 재생합니다.

물론 스크립트를 수동으로 실행하여 사용할 수도 있지만에 설정된 키 조합을 통해 스크립트를 사용하는 것이 더 편리합니다 System Settings > Keyboard > Shortcuts > Custom Shortcuts.

설정

  • 아래 스크립트를 빈 파일에 붙여 넣고 깨우기 (시계) 시간 (1 ~ 24 시간, 1-60 분)을 설정하고 깨우기 노래의 경로를 설정 한 다음로 저장하십시오 wakeup.py.

    #!/usr/bin/env python3
    
    import datetime
    import subprocess
    
    ###############################################
    # set wakeuptime and location of the mp3:
    hour = 7
    minutes = 15
    command = "rhythmbox /path/to/wakeupsong.mp3"
    ###############################################
    
    currtime = str(datetime.datetime.now().time()).split(":")[:2]
    minutes_set = hour*60 + minutes
    minutes_curr = int(currtime[0])*60 + int(currtime[1])
    if minutes_curr < minutes_set:
        minutes_togo = minutes_set - minutes_curr
    else:
        minutes_togo = minutes_set + 1440-minutes_curr
    interval = minutes_togo*60
    
    run = "rtcwake -m disk -s "+str(interval)+" && "+"sleep 20 &&"+command
    subprocess.call(['/bin/bash', '-c', run])
  • 스크립트를 실행 가능하게 만들기

  • 스크립트를 실행할 키 조합을 설정하십시오. 열고 System Preferences > Keyboard > Shortcuts > Custom Shortcuts명령을 추가하십시오

    sudo /path/to/wakeup.py (sudo = assuming you do the next step below)
    

    키 조합을 선택하십시오

  • 스크립트에는 관리자 권한이 필요합니다. 비밀번호를 입력하지 않고 비밀번호를 실행하려면 sudoers 파일을여십시오.

    sudo visudo
    

    파일 맨 아래에 줄을 추가하십시오.

    [your_username] ALL=NOPASSWD: [/path/to/wakeup.py]
    

    sudoers 파일은 필수 파일입니다. 파일에 오류가있을 경우 심각한 문제가 발생할 수 있으므로주의하십시오!

NB

  • 깨어 난 후 컴퓨터는 알람이 시작되기 전에 20 초 동안 유휴 상태입니다.
  • 당신의 sudoers 파일을 편집하지 않으려면 설치해야합니다 gksu: sudo apt-get install gksu. 이 경우 스크립트를 실행하는 명령은 gksu /path/to/wakeup.py입니다. 실행할 때마다 비밀번호를 묻는 메시지가 표시됩니다.

이제 키 조합으로 일시 중단 모드를 시작할 수 있으며 웨이크 업 노래로 깨어날 수 있습니다.

2. (임의의) 키 또는 마우스를 칠 때 정지 기능을 포함한 확장 버전

이 하나는 "기본"버전의 차이는 때 하나의 알람이 중지한다는 것입니다 모든 키 입력이나 마우스 움직임 (방금 일어 났을 때 컴퓨터에 리듬을 중지하는 것보다 편리) 감지 및 경보 자동 종료 후 그 정해진 기간.

설정은 기본 버전과 거의 동일하지만 xprintidle키 입력 또는 마우스 이동 이벤트를 감지하려면 설치해야합니다.

sudo apt-get install xprintidle

스크립트 :

#!/usr/bin/env python3

import subprocess
import time
import datetime
from threading import Thread

#-------------------------- edit settings below -------------------------------
max_wakeupduration = 1              # max time the song will play (minutes)
wakeup_hour = 7                     # wake up hour (0-24)
wakeup_minute = 15                  # wake up minute
wakeup_song = "/path/to/song.mp3"   # path to wake up song
#------------------------------------------------------------------------------

def stop_wakeup():
    time1 = int(time.time()); time2 = time1
    last_idle = 0
    playtime = max_wakeupduration*60
    while time2 - time1 < playtime:
        get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
        curr_idle = int(get_idle.communicate()[0].decode("utf-8"))
        if curr_idle < last_idle:
            break
        else:
            last_idle = curr_idle
            time.sleep(1)
            time2 = int(time.time())
    subprocess.Popen(["pkill", "rhythmbox"])

def calculate_time():
    currtime = str(datetime.datetime.now().time()).split(":")[:2]
    minutes_set = wakeup_hour*60 + wakeup_minute
    minutes_curr = int(currtime[0])*60 + int(currtime[1])
    if minutes_curr < minutes_set:
        minutes_togo = minutes_set - minutes_curr
    else:
        minutes_togo = minutes_set + 1440-minutes_curr
    return minutes_togo*60

def go_asleep():
    sleeptime = calculate_time()   
    run = "rtcwake -m disk -s "+str(sleeptime)+" && "+"sleep 20"
    subprocess.call(['/bin/bash', '-c', run])
    combined_actions()

def play_song():
    command = "rhythmbox "+wakeup_song
    subprocess.Popen(['/bin/bash', '-c', command])

def combined_actions():
    Thread(target = play_song).start()
    Thread(target = stop_wakeup).start()

go_asleep()

설명

rtcwake

여기rtcwake 설명 된대로 두 스크립트 모두 명령 주위에 작성 됩니다 . 이 명령을 사용하면 정의 된 시간이 지나면 컴퓨터를 일시 중지 및 깨우기 (및 깨우기 후 명령을 선택적으로 실행) 할 수 있습니다. -m disk영업 이익은 자신의 컴퓨터가 지원하는 BIOS의 기능 "RAM 일시 중지"하지 않는 언급 이후 옵션이 사용됩니다. 도 참조하십시오 man rtcwake.

정지 기능

정지 기능은 노래가 재생되는 동안 매초 유휴 시간을 측정하고 마지막 유휴 시간을 기억하는 기능으로 작동합니다. 경우 마지막 유휴 시간이 현재를 초과, 그것은 키 입력 또는 마우스 이벤트가 자리를 차지하게하고, 리듬이 사망을 의미합니다.


초보자가 sudoers 파일을 만지지 말 것을 제안합니다.
RegarBoy 2016 년

@developer는 실제로 필요하지만 경고가 제공되어야합니다. 집에 도착하면 (현재는 모바일에서) 수정합니다.
Jacob Vlijm 2016 년

@developer and done ....
Jacob Vlijm 2016 년

1
그렇지 sudo visudo /etc/sudoers않습니까?
UniversallyUniqueID

@BharadwajRaju 아니, 시도해보십시오 :) vi는 편집기 일뿐입니다.
Jacob Vlijm

2

케이블로 랩톱을 인터넷에 연결할 수있는 경우 다른 컴퓨터 나 스마트 폰을 사용하여 "매직 패킷"을 보내서 깨울 수 있습니다.

"Wake on Lan"(WOL)을 찾으십시오.


아니요, Wi-Fi 전용입니다.
Chelios

1

Jacob의 python 스크립트를 실행하는 데 문제가 있어서 bash로 다시 작성했습니다 . 그냥 다운로드하여 실행 가능하게 만들고 그에 따라 변수를 편집하십시오.

몇 가지 : 알람 시간은을 통해 설정됩니다 date -d. 일부 예 man date:

  • "2004 년 2 월 29 일 일요일 16:21:42 -0800"
  • "2004-02-29 16:21:42"
  • "다음주 목요일"

깨어 난 후 vlc -L루프에서 일부 음악을 재생 하는 데 사용 합니다. 경로가 폴더이면 파일을 재생하려고 시도합니다. 그게 내가하는 일입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.