Internet of ThingsSmart Office

By putting a sensor on a bathroom door at The Nerdery, we were able to learn about usage over time, entertain our fellow employees, and transfer that work into a bigger web app.

Smart Bathroom

The problem to solve

Have you ever had to sit near a public bathroom? Even when flying it's uncomfortable to see people loitering around waiting for it to open, it breaks your concentration. A friend at The Nerdery sat near the only private bathroom to be shared among 60+ employees nearby. It's the best seat in the house if you're uncomfortable pooping in public due to the privacy in this spot. Being at a company called The Nerdery, it was a popular bathroom for a stereotypically introverted culture. We wanted to help cut down on peoples failed attempt to use this bathroom.

60+ Nearby Employees
Single Occupant Toilet
Low Entry Probabilty

Selecting an Approach

The solution was somewhat in my head already; use an Arduino to tackle the problem. Although I didn't know how exactly to detect presence nor how to inform a user. To avoid violating our goal of privacy, we didn't want anything that would track you personally or be something disturbing to see like a temperature sensor on the toilet seat. As time went on, we noticed the door was always open between use; a constant we could detect for status. The thought of how airplanes handle this problem came to mind, a red or green indicator of whether it's in use or not serves as their user interface.

electronic components

Goals of the project

A project that starts without clear goals is a project that's destined to fail. This project had one simple goal: tell me if I can use the bathroom before I get there. Around that concept are a few other goals to keep parameters on the solutions to keep them appropriate and measurable. It's critical to keep these boundaries on a UX project due to how the scope of a simple project can be inflated. We'll use these tertiary goals to hone in on the requirements as we go:

Instant Information
Maintain Trust
Learn New Technology
Reduce Time Searching

How it all works

The door being opened or closed is the key to knowing the status of the bathroom. A reed sensor is attached to the frame of the bathroom door and connected to an Arduino. When the door is left open, the panel of LEDs shows a green checkmark. When the door is closed, it changes to a red X. The LEDs are hung on a shelf with the Arduino above the cubicles and outside of the bathroom. Although it does create false-positives, incase someone leaves the door closed, it's uncommon due to the office etiquette of leaving it open after use.

spark core reed sensor

Physical UI

Not all user interfaces are seen on your screen, an interface is defined as the minutia between you and the information. This sign posted could be changed digitally based on the actions of a physical object, such as a door, but still serves the main purpose of informing users. This was the first iteration in how we could tell people at the most basic level. Other ideas generated were: a physical sign that flips over, a big red/green light bulb, or a motor that would spin a wheel a certain direction. Ultimately an icon, color, and label was what I found to be the most efficient. It seemed like others did too.

Nerdery Tweet

Problems created by the solution

Some say by putting the digital sign up above everyones cubicle it allowed even more people to use the bathroom. Even more frustrating is when you see the sign flip from open to closed as you're approaching the room. Another user said he didn't care for it due to his previous advantage of having a clear line of sight to the door; allowing him quick status information. We wanted to learn from this new information, recheck our goals, and create the next iteration.

Adding to The Internet of Things

An Arduino Uno was used at first to prototype the initial idea, translating the status of the door to the pixels on the wall. It seemed absurd to not have the status posted online at a company that builds custom web apps; luckily I had some experience playing with the Spark Core on the weekends. I partnered with a friend who's a front end developer to help translate the Arduino code to JavaScript as a web app. The logic spit out the status of true or false to a responsive website. Once we had data to broadcast, we could also store/analyze the data too!

Mobile Status App

We found many users couldn't actually see the UI from their desks (perhaps sitting the opposite way), so we needed to solve the problem in another way. The additional user interface was added as a responsive web app that people bookmarked to their phones and browsers. Shortly after launching, we saw countless people leaving the tab open all day. This brought new ideas for features such as having the favicon update instantly if you had it open in another tab. People had a great laugh and enjoyed the new convenience.

electronic components

How did people react?

A lot of great feedback from putting an unofficial app into the hands of employees. With little of the day to day being optimized for mobile, I believe it gave a huge boost in morale by inspiring others to keep the workplace fun and entertaining. People were tweeting about it to reinforce the weirdness of working at The Nerdery. Overall it shed new light on what it means to have a workplace that cares about the little things.

Observing the data

With the addition of having the door tell the internet when it's open or closed, it allowed me to feed that data into a spreadsheet on Google Sheets. We didn't tell people that data was being harvest since it's completely anonymous and would throw off any normal readings on usage. Since the digital sign was put up before the tracking, we can't compare the usage from before to the new solutions. We can however observe and calculate the average amount of time spent in the bathroom; about 5 hours per day this bathroom has someone in it. This brought up a thought about "wasted" time at a billable agency; although little can be done to stop employees from using a bathroom. What other rooms are wasteful yet could be optimized?


Reframing the problem

Remove the toilet from the context and you'll find plenty of other rooms that could be tracked based on their usage. How about conference rooms? A vital resource that's always in high demand on busy days at the office. Often times you'll find rooms that are booked all day, yet see only a small percentage of meetings actually happen within. Recurring meetings or standups that happen from peoples desks throw calendars for a loop and make it a hard task for a project manager to find a quiet space to call a client. By changing our sensor from detecting the door to detecting IR light, we could check periodically if someone was occupying a room with or without the door closed. From this we could link up all 39 conference rooms throughout 4 locations into one app.

conference room status web app

Mobile Status App

The app served as a hub for 4 different locations with up to 40 conference rooms in one location. A user could load this web app on their phone and quickly see which conference rooms are currently open. Not the ones that will be open soon or the ones that are busy, only the ones that can be accessed right now. The app provides critical data on each of the themed rooms: where it is on a map, hardware available, and any other unique characteristics such as the lack of a computer or phone.

conference room status web app

Adafruit Sponsorship

Adafruit caught wind of our project at The Nerdery and asked if I'd write up a tutorial/blog post for them about our experience with the internet of things. I partnered up with Chris Cheney to write the post and feature his code for the web app. Luckily we gathered heaps of assets from documenting the project as it has been going on through photos and videos.

electronic components

IoT Fuse 2015 Presentation

In March of 2015 I gave a presentation of the project at The University of Minnesota along side others who have created IoT products. I had a great time telling this same story to a crowded room of people hacking things onto the internet. Below is the recording from the presentation with the slides included.