Belldandy: a RaspberryPi based school-bell system

When Logos first moved to their new campus we had a PA system installed. Part of the contract with that company was bell system… but their solution was horrendous (and never worked). Their approach was to wire 3 alarm clocks together and to have our staff get up and stop the alarm after it rang. I don’t remember the exact price, but I think they wanted $100 for their system.


That said, I can’t brag about my ‘temporary’ fix too much. I used an abandoned iPod touch and alarm app to cobble something together. To fix the problem of repeating alarms, I created mp3s containing 4 hours of silence, and then each bell used a play list with our desired sound plus a few repeats of the silence mp3. It was messy, but it worked in the day to day: for two years.

(Aside: since then, there are quite a few apps for iOS specifically designed for school bell systems. Clearly my approach wasn’t unique!)

While the system was good, we always ran into problems when we needed a special set of bells, or to change the schedule. You could do it, but it was a pain.

My immediate thought was for a RaspberryPi to replace the iPod. With precious little coding you could make a decent system.

Belldandy is the result. If you’re interested in the code, you can get it at my github account:

It’s a bit hackish itself, as I was using it to try some things out I’d been wanting to play with. Currently, all it requires is: a webserver, write access to the crontab file and a command line sound player.

The back end is a simple XML file that’s controlled by a PHP front end. With the easy video out of the Pi, I’ve got a simple, mouse-driven, interface that rests in our office. Bells are rung by the inbuilt cron system, and updated by a processing script that runs every few minutes.



For now it’s working great (and our time is always accurate!).

The Pi, without a hardware clock, does have one big disadvantage: without an Internet connection a power failure will result in the clock not displaying the correct time. It’s not a problem for us, but it does limit the device somewhat. That said, my solution is portable to any computer/computing device that can run a UNIX-like operating system.

From an IT/Administrative view of things, there’s no reason that this process should run as root. But, since it’s a single application device, from a practical point of view, it doesn’t matter. That said, there’s no reason we couldn’t use the Pi to also host a student information system, or any other number of school systems.

The real test of all of this is time (and when we need to change bells!)