The latest incarnation of the wall calendar looks like this:

It shows the calendar items for the whole family. It also shows some other good to know information, like birthdays, namnsdag, bus schedules, the food in school, weather and traffic information.

There is a huge amount of work behind the calendar. It has existed in many incarnations. It all started when I had a Kindle left over, the one with the keyboard. I hacked a web page together that showed items from our calendar, and used the Kindle’s web browser to show it.

The next upgrade was when I had an old laptop screen left over (do you remember the Eee PC?). I powered it with a Raspberry Pi that showed the web page in a browser.

Next I wanted to upgrade the screen, and used an old monitor screen that I took out of the casing and built a white wooden frame for, much like in the picture above. This is also when I started adding more things to the screen than just the calendar. During the years I have added more and more functionality.

The current screen is a 24 inch screen with 1920×1200 pixel resolution. Still powered by a Raspberry Pi.

When I upgraded to a “real” screen, heat became a problem. It was not good to have the screen turned on all day, both from a heat perspective and from an environmental perspective. So I added a motion sensor, a PIR, that is connected to the Pi, and I wrote a little Python program that reads the output from the motion sensor and turns the screen off after 20 seconds of no motion.

The calendar is still powered by a web page. It should really be refactored, or completely re-written, but this is how it works: On the web server, there is a PHP script that generates the overall skeleton of the page and sends it to the client web page. Then there are a bunch of Javascript scripts that update all the different parts of the page at different times. The time for example is updated every minute. But the birthdays only need to be updated once a day. The bus schedule is a bit different. It should really be updated every minute, but then I was hitting the SL API too frequently. So now there is a Python script running on the Pi, that communicates via a socket with the web page, and if it detects motion, only then the schedule is updated.

Leave a Reply

Your email address will not be published. Required fields are marked *