A PiPresents pipresents.wordpress.com/ show (we're talking about a Raspberry Pi running Raspbian) can be set to end at a time of day, but it does not have a way to set a day of the week. I have created a workaround for this using the standard Linux cron scheduler and some bash scripts.
Let's take a look at the first script. I think the comments explain it well enough. I named mine pp.sh. Be sure to make the file executable after you create it.
#!/bin/bash # the name of the profile should be passed to this script profile=$1 # show a black/blank screen qiv -fmisC -d 5 /home/pi/media/common/blank.png & # stop any running PiPresents shows kill $(ps aux | grep pipresents.py | awk '{ print $2 }') sleep 3; # start the new show with the given profile and in the home folder below python /home/pi/pipresents/pipresents.py -fb -o /home/pi/media -p "${profile}"
Now add an entry in cron to start the show. Run cron from your normal user (pi) in a terminal with crontab -e. The entry below starts a profile named 'myshow' at 8:30 am every sunday.
30 08 * * 0 /home/pi/pp.sh myshow
That's really all there is to it.
However, I also have a script to turn the screen on and off as part of the schedule, which would have a cron entry like this to turn off at 1:00 PM.
30 08 * * 0 /home/pi/screen.sh on; /home/pi/pp.sh myshow 00 13 * * 0 /home/pi/screen.sh off
Screen.sh looks like this.
#!/bin/bash export XAUTHORITY=/home/pi/.Xauthority export DISPLAY=":0" export XAUTHLOCALHOSTNAME=localhost if [ "$1" == "on" ]; then # see if we're already on state=$(tvservice -s | grep -oE 'DMT|CEA') echo "${state}" if [[ $state = "DMT" || $state = "CEA" ]]; then exit 0 fi # turn on tvservice -p; sleep 1; fbset -depth 8 fbset -depth 16 xrefresh sleep 3; # see if we're really on state=$(tvservice -s | grep -oE 'DMT|CEA') echo "${state}" if [[ $state = "DMT" || $state = "CEA" ]]; then exit 0 fi exit 1 fi if [ "$1" == "off" ]; then # see if we're already off state=$(tvservice -s | grep -o 'off') if [[ ${state} == "off" ]]; then exit 0 fi # turn off tvservice -o; sleep 5; # see if we're really off state=$(tvservice -s | grep -o 'off') if [[ ${state} == "off" ]]; then exit 0 fi exit 1 fi
Another improvement might be to turn off the PiPresents show when turning off the screen and turn on the screen based on some input.