The existing program I had written to build images for the frame was not a good candidate for this additional functionality because it ran only when images needed updating and then it quit. I needed something running all the time, continuously monitoring the frame to make sure it was behaving.
After some testing, I found that I when the frame was frozen, I could no longer ping it. So I started a new VB.BET project to build a program to ping the frame at regular intervals. If the pings fail to generate responses, the program launches a batch file to cycle the frame’s power. The program also monitors the interval at which the frame accesses the images it displays. If too much time passes without the images being accessed, the frame-rebooting batch file is launched. I needed this program running all the time (including when no one was logged in), so it really needed to be a Windows Service. You can’t create a Windows Service with the free version of VB.NET, so I used
FireDaemon, which turns executable programs into a Windows Services. That got me as far as getting the frame running again. Now I wanted to automate the process of moving through the frame’s menus to get to the shared folder of “now playing” images.
For this I used a Squeezebox plug-in called
IRBlaster. The Squeezebox includes a jack into which an infrared (IR) emitter can be inserted. The IRBlaster plug-in responds to four Squeezebox events: power on, power off, volume up and volume down. When these events fire, IR-Blaster can be programmed to send a series of signals to the IR emitter. It also includes learning functionality so you can attempt to get the IR emitter to emulate any particular remote control. I trained it to emulate the frame’s remote, and then programmed a series of infrared bursts to move through the frames menus.
Almost There …
At this point I felt we had a fairly reliable frame. I kept the Squeezebox running pretty continuously over the next few weeks and watched the frame-monitoring program snap into action on several occasions. Not once did we suffer an unrecoverable freeze. The only dangling issue (no pun intended) was the placement of the IR emitter that triggered the frame reboots. I didn’t want a wire with a little red light at the end of it slung in front of the Squeezebox. That would have compromised the Feng Shui of our coffee table/entertainment rack!
I tried lodging the IR emitter discretely between two vases; pointing it in the general direction of the squeezebox, but it wasn’t always reliable — particular if the room was filled with bright sunshine. I just couldn’t find a reliable, but hidden location to mount the emitter. Finally I resorted to prying the frame apart so that I could drill a small hole in the little mount that held the frame’s own IR receiver. I passed the IR emitter wire through an opening in the back of the frame, snaked it around the frame’s guts and then slid the emitter into the hole next to the IR receiver.