Last week was our quarterly Hackweek, and this time around a handful of us set out to solve a slightly more physical problem than we usually tackle: conference room abuse. We have nine conference rooms in our office these days, and even though we regularly use Google Calendar to schedule meetings, we still struggle with rooms being hijacked.
It's almost always an accident - two people start chatting, one inevitably says "Let's grab a room," and then they just walk around the office until they happen upon an unoccupied room. Unfortunately, it's often the case that while the room is currently unoccupied, another meeting is scheduled to start very soon. In a few minutes, the rightful occupants show up and discover that someone is already using their room! If the squatters are just using the whiteboard, it's easy to boot them out, but if they're taking a phone call, the people who actually reserved the room have to find a new one. The ability to do ad-hoc meetings is something we want to keep. We just want to help room-grabbers know when it is OK to grab and when it isn't.
Enter the Roominator, an open-source system of hardware and software that helps facilitate informed ad-hoc reservations.
The hardware consists of two parts: a display unit that's posted outside of each conference room, and a controller unit that's stashed in our wiring closet. The display unit shows the current and upcoming reservations and an LED status indicator that can tell you from a distance whether a room is "good to grab". It also has a pair of buttons - one to make an ad-hoc reservation and one to cancel the current reservation. The controller unit interfaces with all the displays to distribute power and data, both of which run over a single standard Cat5e cable. Both the controller and the displays are Arduino-based.
The software component is a Rails web site that allows for configuration and integrates with Google Calendar. Reservations made via Google Calendar are sync'd with the Roominator, and vice-versa. The controller unit polls the web site for the information it should pass to the displays.
This project was a lot of fun for all involved, and we definitely went outside of our comfort zone with this one. There's a lot of polishing to do in order to get the UI just right - and we still have to manufacture another seven display units by hand! (No copy/paste in the real world, after all.)
Want your own Roominator setup? All the source code and schematics are on GitHub. If you decide to go down the road of building your own units, please get in touch with us so we can collaborate!