ฉันต้องการให้แล็ปท็อปของฉันตื่นจากโหมดหยุดทำงานในตอนเช้าและปลุกฉันให้ปลุกด้วยไฟล์ MP3 ของฉัน ฉันต้องทำอย่างไร?
ฉันลอง apmsleep แต่มันไม่ทำงานเพราะพีซีของฉันไม่มีฟีเจอร์ "suspend to RAM" ใน BIOS ฉันควรทำอย่างไร ขอบคุณ!
ฉันต้องการให้แล็ปท็อปของฉันตื่นจากโหมดหยุดทำงานในตอนเช้าและปลุกฉันให้ปลุกด้วยไฟล์ MP3 ของฉัน ฉันต้องทำอย่างไร?
ฉันลอง apmsleep แต่มันไม่ทำงานเพราะพีซีของฉันไม่มีฟีเจอร์ "suspend to RAM" ใน BIOS ฉันควรทำอย่างไร ขอบคุณ!
คำตอบ:
1. ฟังก์ชั่นนาฬิกาปลุกพื้นฐาน
เข้าสู่โหมด Suspend
สำหรับโซลูชันนี้คุณต้องเข้าสู่โหมด suspend โดยเรียกใช้สคริปต์ด้านล่าง มันทำให้คอมพิวเตอร์เข้าสู่โหมด suspend และทำให้คุณตื่นขึ้นมาในเวลา (clock-) ที่กำหนดโดยคุณ (ในสคริปต์) กำลังเล่นเพลงของคุณ
แน่นอนคุณก็สามารถเรียกใช้สคริปต์ด้วยตนเองที่จะใช้มัน 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
gksu
sudo apt-get install gksu
ในกรณีนั้นคำสั่งในการเรียกใช้สคริปต์คือgksu /path/to/wakeup.py
และคุณจะได้รับพร้อมท์ให้ใส่รหัสผ่านทุกครั้งที่คุณเรียกใช้ตอนนี้คุณสามารถเข้าสู่โหมด suspend ด้วยคีย์ผสมของคุณและคุณจะตื่นขึ้นมาด้วยเพลงปลุก
2. เวอร์ชั่นขยาย รวมถึงฟังก์ชั่นหยุดเมื่อมีการกดปุ่มหรือเมาส์ (ใด ๆ )
ความแตกต่างระหว่างนี้และรุ่น "พื้นฐาน" ที่อยู่ในนี้ปลุกจะหยุดเมื่อใดการกดแป้นพิมพ์หรือเมาส์เคลื่อนไหวมีการตรวจพบ (สะดวกสบายกว่าการหยุด Rhythmbox บนคอมพิวเตอร์เมื่อคุณเพิ่งตื่นนอน) และสัญญาณเตือนออกโดยอัตโนมัติหลังจาก ระยะเวลาที่กำหนด
การตั้งค่าค่อนข้างเหมือนกับเวอร์ชั่นพื้นฐาน แต่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
คำสั่งตามที่อธิบายไว้ที่นี่ สามารถใช้คำสั่งเพื่อทำให้คอมพิวเตอร์เข้าสู่โหมด suspend และ wake up หลังจากระยะเวลาที่กำหนดไว้ (และสามารถรันคำสั่งหลังจาก wake up) -m disk
ตัวเลือกที่ถูกนำมาใช้ตั้งแต่ OP กล่าวถึงคอมพิวเตอร์ของเขาไม่สนับสนุน "ระงับแรม" คุณสมบัติใน BIOS man rtcwake
ดูเพิ่มเติม
ฟังก์ชั่นหยุด
ฟังก์ชั่นหยุดทำงานโดยฟังก์ชั่นที่วัดเวลาว่างทุกวินาทีในขณะที่เพลงกำลังเล่นและจดจำเวลาว่างล่าสุด หากเวลาว่างล่าสุดเกินเวลาปัจจุบันหมายถึงเหตุการณ์การกดแป้นหรือเมาส์เกิดขึ้นและ Rhythmbox ถูกฆ่า
sudo visudo /etc/sudoers
?
หากคุณสามารถเชื่อมต่อแล็ปท็อปของคุณเข้ากับอินเทอร์เน็ตด้วยสายเคเบิลคุณสามารถลองใช้คอมพิวเตอร์หรือสมาร์ทโฟนเครื่องอื่นเพื่อส่ง "แพ็คเก็ตเวทย์มนตร์" ไปยังคอมพิวเตอร์ของคุณและปลุกมันขึ้นมา
มองหา "wake on lan" (WOL)
ผมมีปัญหาการเรียกใช้สคริปต์หลามของจาค็อบดังนั้นผมเขียนไว้ในทุบตี เพียงแค่ดาวน์โหลดมันทำให้มันสามารถเรียกใช้งานได้และแก้ไขตัวแปรตามนั้น
สองสิ่งที่ A: date -d
เวลาปลุกถูกตั้งค่าผ่านทาง ตัวอย่างบางส่วนจากman date
:
หลังจากตื่นนอนฉันใช้vlc -L
เพื่อเล่นเพลงในวง หากเส้นทางของคุณเป็นโฟลเดอร์มันจะพยายามเล่นไฟล์ในนั้น นั่นคือสิ่งที่ฉันทำ.