top of page

AI + Hardware: Weekend Project - Smart Home Calendar


This project was actually conceptualized several years ago - I just didn't have the tools to do it (though to be fair, the tools were there - what I didn't have was the time to learn them to the level where it would produce the quality I wanted.)

You've had a calendar, a scribble pad, a sticky note exchange, a bit of paper stuck to the fridge, a Whatsapp group. Some means for everyone in the same house with different schedules to coordinate what's happening, a to-do list, reminders. Birthdays, visits, anniversaries, flights, deadlines.

Yes, it's all there on Google. But Google lives in your phone and your laptop.

Could I put my GCal on the wall?


Requirement #1 - A way to permanently display a google calendar without worrying about security exposure, logging in, or reserving a laptop / monitor exclusively.


Next - Apart from the calendar, there were a couple of other things needed. I wanted the time, the weather, a to-do list list to also be on the same screen. This isn't available in Google calendar, so I had to build a custom display.


Requirement #2 - pull together different inputs and put together on a custom layout.


Both #1 and #2 could be done via a custom layout, which lovable.ai could build. The time, date, and weather were easy - just identify a relevant API source, sign up, create the key, plug in. Calendar was harder, since it needed a way to pull in from a Google account, which isn't public. Took a little playing around with OAuth settings, tokens and permissions before it got fixed. Happily, that also enabled the to-do list, with the source being Google Tasks.


New problem - periodic signout. Requirement #3, Always signed in. Had to build a permanent public url with protected saved creds.


Now I have a web page that shows what I want, which I can keep updating from a personal backend. Now how to get it on the wall?


Requirement #4 - Display.


Tested out on my TV. While there is a inbuilt browser, getting it to display was hard enough, and very limited means of enabling a quick access - typing the url on a TV remote is a challenge in finagling, and bookmarks still took multiple clicks to reach, which on a TV remote is bloody frustrating. Chromecast and similar still needed the source device sync which would fail the minute I left the house. I needed something more permanent and easier to keep available. It's time for -


Requirement #5 - a hardware source.


The simplest approach is to dedicate an old laptop to stay permanently plugged in, displaying the calendar on a dedicated HDMI. 2

Problems -

One, it would power off / crash, or otherwise struggle. A desktop would have similar issues, apart from alternate uses and space constraints.

Two, I am not made of money to waste a full laptop on something so basic. I needed some small, dedicated hardware that could do this, stay always on, and be unobtrusive and hidden with a minimal space and power footprint. If only something like that existed...

Time to break out my old Raspberry Pi.


Getting the Pi configured - even as a PoC - was a surprisingly challenging activity. One whole weekend went in struggling with finding parts, creating SD card OS's, connectivity, and settings, before I gave up. Had to wait a week for stuff to clear in my head - through I had bricked a Pi and 3 SD cards in the struggle. Finally opted for a new Pi Zero, and restarted the project.

A couple of very obvious-in-hindsight but non-intuitive challenges -

  1. Power. Do NOT use any old 5V microUSB power source - bootup is power-heavy and repeatedly crashes, and often makes SD cards unreadable in the process. (Luckily, I was able to recover them - prices have 3x'd over the last 6 months and I cannot afford to throw them away anymore!). Got a dedicated, new, Pi-specific power supply.

  2. Good old ssh. Installation is a continuous battle of updates, edits, setting changes and reboots; I was initially using a dedicated setup with Pi + spare monitor + dedicated keyboard, which meant I had to keep swapping out the card from Pi to computer and back way too much. And you don't need most dedicated Putty-style apps. But that also needs -

  3. 2.4 GHz band on wifi. Everything's running on 5GHz by default, including the primary computer; I would keep giving it 5GHz creds, then wondering why it kept failing to connect wither to the internet or to my computer. I felt like such an idiot when I realized the core issue.


Config - for the longest time, I struggled to get the display up. Needed a switch from the outdated browser to the new Chromium, a GPU driver update, a display manager (went with LightDM), and finally setup-as-kiosk shell config to autostart and self-repair in case of power loss (usually the maid loosening the power supply during enthusiastic dusting).


The last problem was flickering / glitching display, which came down to RAM issues; had to keep upgrading the swapfile size until it felt comfortable enough at 512M, another thing to keep in mind when using small-scale dedicated h/w - we're too used to 16GB in our laptops running by default and building resource-heavy renders.


And finally, fish out an HDMI cable, plug in, power on, the first boot and we're up and running. It's going to stay alive even while the TV's off, and I just need to switch inputs to the dedicated HDMI source to see it - a 3-button sequence built for the TV remote interface, instead of going via browsers, and the whole physical setup is small enough to hang behind the TV on the mount, out of sight. The hardware reboots once in 24 hours, and the app does a 30-min refresh - more than enough for a daily smartboard.


The whole thing built under 2.5K including a new Pi Zero 2W, power supply, HDMI adaptor, and a 32Gb microsSD. The same thing in retail is easily 10X this, with a dedicated screen to hang up and power. Plus, I can just update the contents from my Google calendar, app settings from my Lovable project, and the Pi settings from ssh.

  • Twitter
  • LinkedIn
  • Instagram

©2023 by Ashish Tewari

bottom of page