Engineering

Using iBeacons to sense presence

10 years ago, dumping your printed MapQuest directions in favor of a Tom Tom was the definition of magic. 5 years ago, checking into the local coffee shop on Foursquare was the new pinnacle of geolocation achievement.

Today the location “check-in” isn’t dead, its survival just depends on being a team player.

The difference from geolocation

GPS covers a lot of ground. Well, technically all of it. On such a large scale, positioning is easy since everything is at an absolute position. Buildings, for the most part, don’t move. When GPS and smartphones combined, apps made the “Check-in”. The check-in is a snapshot of a single point in time, and something you do infrequently when you change locations:

Then beacons hit the market and Apple (per usual) added an “i” and made them popular. With iBeacon in the spotlight, it made sense that people look to GPS design patterns for early inspiration. Many of the early applications in retail sound awfully similar to check-in behavior. “When a person enters the area, do this other thing” where the result is mainly a flash deal:

iBeacon in retail application

This only scratches the surface. Even though both deal with location data, beacons are different than GPS in a few key ways. They represent relative positioning, since moving a beacon device is noticeably easier than moving the Earth. They also have a much higher level of accuracy at a lower battery cost. Rather than the occasional check-in, we can sample at a much higher rate without regret.

A constant stream of location check-ins become presence.

How presence works

Presence is different than a single check-in. It’s a stream of many check-ins, each building off the last one:

For indoor location, this opens up some new doors (and puns) for what you can do with the data. By looking at higher resolution location at high frequency, we can actually tell a different story by grouping together check-ins at a similar location.

(Depending on the device you use, there are technical limitations with how frequently you can scan for beacons… but that’s a post for another day.)

Once we’ve identified which check-ins happened in sequence at the same place, we can visualize them as sessions (i.e. visits) in a specific area. Unless you dart quickly out of rooms for fun, 12 check-ins in the conference room over the past 15 minutes most likely means you’ve been in the conference consistently. Grouped together, the check-ins tell an even clearer story:

How check-ins become presence

With this kind of presence, “When a person enters this area” becomes “As long as a person stays in this area” or better yet “Who is in this area right now?”

At Robin, we use session-based presence. Android and iOS phones have different rules for accessing Bluetooth, so session presence is the easiest to adjust across platforms. With this kind of presence every few minutes your phone scans for the closest iBeacon. If it finds one, it notifies our API by publishing a presence event that expires in a couple minutes. As long as we continue to do this in the same room, we’ll stay there since the original session (i.e. TTL) continues to extend. If we leave and miss a check-in, the system assumes we’ve left. We also enforce uniqueness, so walking between rooms doesn’t result in accidental cloning.

When you know who is in the room, and how long they’ve been there, you’re able to see a perspective of the real world that used to be limited to website analytics.

Apps based on user presence

Since each presence stream is tied to a person, we can use it to determine when people are together, and then write apps that respond to different combinations. Multiple people in the same room for at least 5 minutes? Book them a calendar event.

This wouldn’t be possible with a single check-in. How would you tell if two people were together? A low resolution check-in at the same place within 20 minutes of each other, didn’t necessarily mean they overlapped. What if they just missed each other like the start of a bad romantic comedy? With a presence approach, this is different since we gain the ability to see “exits” just as much as entrances.

What would your app do differently if it knew who was in the room?

 

Frustrated by meeting room scheduling call out


Robin makes workplace coordination easy by teaching offices to recognize you. We’re on a mission to make the work day delightful, one room at a time. Upgrade your office.