In Python app remy_python I added a scheduler.
Now the app has three parts:
- Functions to send commands to the infrared transmitter, which then transmits the commands to the television sound bar
- A Flask web service to accept television command requests (e.g. volume decrease, volume increase)
- A scheduler that automatically sends remote control commands at programmed times (e.g. mute during TV commercials)
define quiet times
QuietTime = namedtuple('QuietTime', 'start end') quiet_times17 = [ QuietTime(datetime.time(hour=17, minute=17, second=0), datetime.time(hour=17, minute=20, second=0)), QuietTime(datetime.time(hour=17, minute=27, second=0), datetime.time(hour=17, minute=31, second=20)), QuietTime(datetime.time(hour=17, minute=38, second=15), datetime.time(hour=17, minute=41, second=45)), QuietTime(datetime.time(hour=17, minute=48, second=0), datetime.time(hour=17, minute=51, second=50)), QuietTime(datetime.time(hour=17, minute=54, second=20), datetime.time(hour=17, minute=57, second=50)) ]
use apscheduler to run jobs at scheduled times
def add_jobs_mute(quiet_times, scheduler): """ mute sound during each quiet time """ for quiet_time in quiet_times: # add_job, implicitly create the trigger # args is for function transmit_command_ir # first call to mute toggles sound off scheduler.add_job(transmit_command_ir, cron, day_of_week=day_of_week, hour=quiet_time.start.hour, minute=quiet_time.start.minute, second=quiet_time.start.second, args=[RemoteCommand.MUTE]) # next call to mute toggles sound on scheduler.add_job(transmit_command_ir, cron, day_of_week=day_of_week, hour=quiet_time.end.hour, minute=quiet_time.end.minute, second=quiet_time.end.second, args=[RemoteCommand.MUTE])
See if commercial times are consistent enough for scheduler approach to be practical. If not, consider automatically detect commercials e.g. similar to “Enough Already” by Matt Richardson checking closed captioning text for a word on a list (e.g. “Lexus”, “Tylenol”)
Raspberry Pi infrared remote control for a television sound bar
Network enabled Raspberry Pi tv remote control
Make a Raspberry Pi infrared remote control. The device can programmatically control television sound bar audio volume. The Raspberry Pi uses LIRC (Linux Infrared Remote Control) to send commands to an attached infrared transmitter. The README includes links to similar remote control projects, infrared remote control hardware.
Advanced Python Scheduler
Advanced Python Scheduler (APScheduler) is a Python library that lets you schedule your Python code to be executed later, either just once or periodically.