Будильник из режима ожидания

Я хочу, чтобы мой ноутбук просыпался утром из приостановленного режима и предупреждал меня, чтобы я проснулся, используя мой mp3-файл. Как мне это сделать?

Я попробовал apmsleep, но он не работает, потому что на моем ПК нет функции «приостановить работу в ОЗУ» в BIOS. Что я могу сделать? Спасибо!

9
задан 19 November 2012 в 08:41

3 ответа

Я испытал затруднения при запущении скрипта Python Jacob, таким образом, я переписал его в ударе. Просто загрузите его, сделайте его исполняемым файлом и отредактируйте переменные соответственно.

Несколько вещей: время аварийного сигнала установлено через date -d. Некоторые примеры от man date:

  • "Sun, 29 февраля 2004 16:21:42 - 0800"
  • "29.02.2004 16:21:42"
  • "следующий четверг"

После просыпаются, я использую vlc -L играть некоторую музыку в цикле. Если Ваш путь будет папкой, то он попытается играть файлы в нем. Это - то, что я делаю.

1
ответ дан 19 November 2012 в 08:41

Если вы можете подключить ноутбук к Интернету с помощью кабеля, вы можете попробовать использовать другой компьютер или смартфон, чтобы отправить ему «волшебный пакет» и разбудить его.

Ищите «разбудить по локальной сети» (WOL).

0
ответ дан 19 November 2012 в 08:41

1. Базовая функция будильника

Войдя в режим ожидания

для этого решения, вам необходимо войти в режим ожидания, выполнив приведенный ниже сценарий. Он переводит компьютер в режим ожидания и будит вас в (по часам) время, указанное вами (в скрипте). играет твою песню.

Конечно, вы можете просто запустить сценарий вручную, чтобы использовать его, но удобнее сделать его доступным с помощью комбинации клавиш, установленной в Системные настройки> Клавиатура> Ярлыки> Пользовательские сочетания клавиш .

Настройка

  • Вставьте приведенный ниже сценарий в пустой файл, установите время пробуждения (часы) (1-24 часа, 1-60 минут), укажите путь к вашей песне для пробуждения и сохраните ее. как wakeup.py .

     #! / Usr / bin / env python3 
     
    import datetime 
    import subprocess 
     
     ######### ################################### 
     # установить время пробуждения и местоположение mp3: 
    час = 7 
    минут = 15 
    command = "hythmbox /path/to/wakeupsong.mp3"
    ######### ################################### 
     
    currtime = str (datetime.datetime.now (). time ()). split (":") [: 2] 
    minutes_set = час * 60 + минут 
    minutes_curr = int (currtime [0] ) * 60 + int (currtime [1]) 
    if minutes_curr 
  • сделать скрипт исполняемым

  • Установить комбинацию клавиш для запуска скрипта; откройте Системные настройки> Клавиатура> Ярлыки> Пользовательские сочетания клавиш , добавьте команду

     sudo /path/to/wakeup.py (sudo = при условии, что вы выполните следующий шаг ниже) 
     

    и выберите комбинацию клавиш

  • Для сценария требуются права администратора. Чтобы запустить его без ввода пароля, откройте файл sudoers:

     sudo visudo 
     

    добавьте строку в самый конец файла:

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

    Обратите внимание на то, что файл sudoers является важным файлом; ошибки в файле могут привести к серьезным проблемам , поэтому будьте осторожны!

Примечание.

  • После пробуждения компьютер бездействует в течение 20 секунд, прежде чем сработает будильник.
  • Если вы не хотите редактировать файл sudoers, вам необходимо установить gksu : sudo apt-get install gksu .В этом случае команда для запуска скрипта - gksu /path/to/wakeup.py, и вам будет предлагаться ваш пароль каждый раз при его запуске. .

Теперь вы можете войти в режим ожидания с помощью комбинации клавиш, и вас разбудит песня для пробуждения.

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 , как описано здесь . Команду можно использовать для перевода компьютера в режим ожидания и пробуждения через определенное время (и, при необходимости, для запуска команды после пробуждения). Параметр -m disk используется, поскольку OP упомянул, что его компьютер не поддерживает функцию «приостановить работу в ОЗУ» в BIOS. См. Также man rtcwake .

Функция остановки

Функция остановки работает как функция, которая измеряет время простоя каждую секунду во время воспроизведения песни и запоминает время последнего простоя. ЕСЛИ последнее время простоя превышает текущее, это означает, что произошло нажатие клавиши или событие мыши, и Rhythmbox отключен.

13
ответ дан 19 November 2012 в 08:41

Другие вопросы по тегам:

Похожие вопросы: