-
Raspberry Pi Streaming Radio Player: Room Customization
Sometimes you (well, I) want a bit of late-night music, which is now one button press away. However, I initially set things up so the Raspberry Pi’s startup code executed a Python script on a network share from the file server in the basement, which shuts down around midnight after the daily backup.
Keeping a local copy meant having to update that copy whenever I tweak the code, a nuisance not to be tolerated. This Bash (or whatever) code in
/etc/rc.localfigures out if the server is up and, if so, updates the local copy from the server. If the server isn’t up, then it just runs with what it has:#!/bin/sh # was !/bin/sh -e ... snippage ... server=192.168.1.4 ping -c 1 $server if [ $? -eq 0 ] then mount -o ro ${server}:/mnt/bulkdata/Project\ Files/Streaming\ Media\ Player/Firmware/ /mnt/part rsync -auv /mnt/part/Streamer.py /home/pi umount /mnt/part fi sudo -u pi sh -c 'python /home/pi/Streamer.py any' &N.B.: you must remove the
-efrom the shebang, because otherwise the script jams to a stop when thepingfails. Took me a while to figure that out, yup.Use
raspi-configto force the startup sequence to wait until the network is available. Turns out that the DHCP process can stall for half a minute, so fixed timeouts don’t work.Hardcoding the server IP address eliminates a whole bunch of mysterious failures apparently due to whatever handles the translation from
mollusk.localto the dotted quad. Maybe that’s not really a problem, but I’ll run with it.Now the streamers fetch the Latest and Greatest version whenever they’re on during the day and run their local copy, with the
roomparameter telling it where it lives.Life is good!