Предотвратить отключение, когда активна запись / сеанс KDE

Я ищу способ предотвращения выключения / ожидания, когда в данный момент tvheadend (или vdr) записывает.

Что я нашел до сих пор:

Я вижу два решения:

  • Либо сценарий TVHeadend вызывает некоторые функции KDE, чтобы запросить состояние KDE (экран заблокирован, пользователь вошел в систему и т. Д.), И выдает вызовы выключения / приостановки, как показано в приведенном выше примере.
  • или измените режим выключения KDE, чтобы он проверял, активна ли в данный момент запись TVH.

Я не могу найти никаких документов об этих двух вариантах.

3 ответа

Решение

Нашел действительно простое решение!
Создать файл /etc/pm/sleep.d/70-check-recordings,

В этом файле проверьте, активна ли запись в данный момент. Если да, просто вернитесь exit 1, Вот и все. Приостановка будет прервана.

Мой сценарий выглядит так, он основан на этом на tvheadend.

$ cat /etc/pm/sleep.d/00-check-recordings
#!/bin/bash
#
# this script sets ACPI Wakeup alarm and stops standby if a recording is active
# safe_margin - minutes to start up system before the earliest timer

# bootup system x sec. before timer
safe_margin=60

# modify if different location for tvheadend dvr/log path
cd ~hts/.hts/tvheadend/dvr/log

######################

start_date=0
stop_date=0

current_date=`date +%s`

for i in $( ls ); do
        tmp_start=`cat $i | grep '"start":' | cut -f 2 -d " " | cut -f 1 -d ","`
        tmp_stop=`cat $i | grep '"stop":' | cut -f 2 -d " " | cut -f 1 -d ","`
#       logger "$0: $i from $(date -d @$tmp_start) to $(date -d @$tmp_stop)"

        start_extra=`cat $i | grep '"start_extra":' | cut -f 2 -d " " | cut -f 1 -d ","`
        stop_extra=`cat $i | grep '"stop_extra":' | cut -f 2 -d " " | cut -f 1 -d ","`

        let tmp_start=$tmp_start-$start_extra*60
        let tmp_stop=$tmp_stop+$stop_extra*60
#       logger "$0: $i from $(date -d @$tmp_start) to $(date -d @$tmp_stop)"

        # if recording is active, immediately stop suspend 
        # tmp_stop > now and tmp_start < now 
        if [ $((tmp_stop)) -gt $((current_date)) -a $((tmp_start)) -lt $((current_date)) ]; then
                name=`grep -h -A 1 title $i | grep -v  title | sed 's/.*: "\(.*\)"$/\1/'`
                logger "$0: Currently RECORDING $name. No Suspend until $(date -d @$tmp_stop!)"
                exit 1;
        fi

        # only check future recordings
        # tmp_stop > now and tmp_start > now 
        if [ $((tmp_stop)) -gt $((current_date)) -a $((tmp_start)) -gt $((current_date)) ]; then

                # take lower value (tmp_start or start_date)
                # (start_date = 0) or  (tmp_start < start_date)
                if [ $((start_date)) -eq 0 -o $((tmp_start)) -lt $((start_date)) ]; then
                        start_date=$tmp_start
                        stop_date=$tmp_stop
                        name=`grep -h -A 1 title $i | grep -v  title | sed 's/.*: "\(.*\)"$/\1/'`
                fi
        fi
done

wake_date=$((start_date-safe_margin))

# set up wakeup alarm
if [ $((start_date)) -ne 0 ]; then
        logger "$0: Set Wakealarm for $name to $(date -d @$wake_date)"
        echo 0 > /sys/class/rtc/rtc0/wakealarm
        echo $wake_date > /sys/class/rtc/rtc0/wakealarm
fi

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

Смотрите также это в документации MythTV.

Я написал скрипт для выключения и пробуждения системы на основе активности Tvheadend. Он не приостанавливает вашу систему, пока Tvheadend активен. Вы можете найти его на GitHub.

Используйте кофеинеты. Это приложение, которое предотвращает запуск действий по управлению питанием при работе определенных приложений. Затем вы можете перейти в system settings -> power management и добавьте приложение в список.

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