Estimote at hackathons: a quick guide for the hackers

So, you only have a few hours to build something impressive? Perfect, we’re here to help!

Estimote tech in short

Estimote tech stack allows your apps to detect people and objects moving around.

  1. Stick a Proximity Beacon in a conference room, or onto a package.
  2. In Estimote Cloud, configure the beacons with conf_room: blueberry or package: A13.
  3. Integrate Proximity SDK into your iOS or Android mobile app.

When you enter the conf room, or come near the package, the SDK will detect the signal from the beacon and trigger an event in your app.

This also works in the background—your app can handle the proximity events even if the smartphone is locked.

Info: There are other Estimote SDKs and beacons, but for hackathons, we recommend the Proximity stack, since it’s the easiest to setup and use in a very … time-constrained … environment 😜

Most of the time, you will only have access to Proximity Beacons anyway, since that’s what we usually send or bring to hackathons. But if you need a break from coding, feel free to chat us up (in person or on Slack) about what other things Estimote can do!

What languages/platforms are supported?

The native Estimote Proximity SDK is available for:

The Android Proximity SDK also supports Android Things, which you can run, e.g., on Raspberry Pi.

We also have an example of how to use these native iOS and Android SDKs in a Xamarin project:

Can I use it in a web app?

Not directly, no. Web browsers, even these on iOS and Android devices, don’t yet support Bluetooth scanning, which is the foundation of the Estimote tech.

If you want your web app to respond to people and objects moving around, you’d need to build even the simplest mobile app, and “forward” the proximity events to your web app.

Project ideas

Office apps

  • find your colleagues (“Michael was seen entering the Blueberry conf room 16 minutes ago”)
  • check which conference rooms are free
  • automatically transfer a call to the speakerphone when entering a conf room
  • automatically dial a call when entering a conf room, based on data saved in your calendar

Event apps (conferences, concerts, sports, etc.)

  • find your friends
  • find the nearest drinks/snacks stand (“you’re in sector B, the nearest stand is on the 1st floor”)
  • call the roving peanuts vendor to your sector
  • at a multi-track conference, automatically detect which talks you’ve attended, based on which room you’re in at a given time (e.g., to notify you when slides become available, or about the videos of the talks you missed)

Guided tour apps

  • promote in-app content based on which area you’re in
  • automatically play the respective audio-guide as you move to a new area (smartphone in the pocket, headphones on)
  • automatically keep track of which areas you’ve been to already (notify on the next visit if there’s anything new)

Payment apps

A pretty generic idea is to let the cashier automatically charge your coffee or groceries to the card stored in the app, like ride-sharing apps do. This could work more-or-less like this:

  1. you approach the cash register, the app silently detects that and notifies the cashier’s iPad that it’s you
  2. the cashier says “Hi Peter! That bagel is going to be $3, do you want me to charge it to your card?”
  3. you happily agree, and simply walk away
  4. the cashier presses a button, and the system charges your card

This doesn’t need to be a credit card—could be a pre-paid account, loyalty/rewards card, or a cryptocurrency wallet. Doesn’t strictly need to be payments too: maybe the app just lets the attendant automatically see your gym pass on their iPad. Or maybe there’s no cashier/attendant, just an automated gate or a vending machine?

Other payment-related ideas:

  • automatically charge the fare when entering a train or a bus
  • charge based on duration of the stay (airport lounge?) and/or areas visited (amusement park?)

Info: Payment use cases generally require tight security. Estimote Proximity tech has an option to encrypt and rotate the beacon signals, making it practically impossible to “game” the app.

You don’t usually need to worry about it when building your hack—hackathons are about proof-of-concepts and not production-ready systems. But we thought it’s worth mention in case the judges ask you about security.

Hotels/hospitality apps

  • automatically detect which hotel room you’re in, and order room service or laundry pickup
  • automatically set “do not disturb” when you’re in your hotel room
  • automatically notify your Airbnb host that you’ve arrived safely and/or left the apartment

Restaurant apps

  • detect which table you’re at, and order from the app straight to the table
  • opt-in to let the restuarant know your favorite music, and the system tries to play something that matches the tastes of the most patrons

Asset tracking apps

The idea here is to stick the beacons to packages/items, and use iOS, Android, or Raspberry Pi with Android Things to detect when they leave/arrive at the scanner’s area.

The Proximity Beacons also have an accelerometer and temperature sensor, so you can detect motion or track temperature changes.

Some slightly more specific ideas:

  • detect if the package is in Loading Area A or Loading Area B
  • automatically adjust the books/inventory if an asset leaves or arrives
  • if you put the scanner (iOS/Android/RPi) inside a truck, you can detect what packages the truck carries
  • use the motion data to detect when an asset was last interacted with, or how often it’s interacted with

Getting started

So you have a project idea, now what?

  1. Grab a dev kit of Proximity Beacons from the hackathon organizers, or the Estimote crew

  2. Sign up for Estimote Cloud on cloud.estimote.com/#/signup

  3. There should be a code inside the dev kit, use it to add the beacons to your account: cloud.estimote.com/#/activate

  4. Go to “Apps”, and add an app to get an API token.

    When adding an app to Estimote Cloud, you can choose from one of our ready-made examples. We recommend the Notification or Proximity Content examples to begin with, to see how the SDK works.

    Later, you can either tweak the code of these examples, or start from scratch with:

    • Blank template: empty project with the Proximity SDK already integrated
    • Your Own App: API token only

Beacon attachments

You’ll also have to add some “attachments” to your beacons. Think about it as metadata, for example:

# beacon 1
type: conf_room
room_name: Blueberry

# beacon 2
type: conf_room
room_name: Marshmallow

Here we have:

  • one shared key-value, type: conf_room, which is how we’ll say “monitor all beacons of this type”
  • one shared key, room_name, but with distinct values, so that our code knows which conf room we’re in

Here’s a Swift example:

let zone = EPXProximityZone(range: .near, attachmentKey: "type",
                                          attachmentValue: "conf_room")
zone.onEnterAction = { attachment in
    let roomName = attachment.payload["room_name"]!
    print("Welcome to \(roomName)")
}

You configure the attachments in Estimote Cloud:

  1. Go to “Beacons”
  2. Pick a beacon, and click the “Settings” button on its right
  3. On the “Beacon Settings” screen that opens, click “Edit Settings” in the top-right corner
  4. In the popup that opens, click “Beacon Attachment” on the left
  5. Add your key-values
  6. Confirm with the “Save Changes” button

Join the Estimote Hackathons Slack

If you have further questions or need help with your hack, and there are no Estimote mentors attending the hackathon, catch us on the Estimote Hackathons Slack:

Join Estimote Hackathons

Check if there’s a dedicated channel for your event. We’ll usually create one if we know about a hackathon up front, and especially for the ones we’re sending hardware to and/or attending as mentors. In those cases, we’ll also try to log in periodically to help out.

Many of us also have full notifications enabled on that Slack, so ask your questions even if nobody from Estimote is on. If any of us has a moment to spare and sees your notification, we’ll try to hop on.

Keep in mind: Most of Estimote engineers are in the European time zones, so it’s a good idea to plan your Estimote integration around that. Getting your questions answered at 3 am EU time might be tricky, as we’re most likely asleep, binge-watching Netflix, or trying to 100% Super Mario Oddysey.

If time zones confuse you as much as they do us, see everytimezone.com and look at London.

Tip: Post your messages on the channel, and avoid Direct Messages. Messages on the channel are visible to everyone and notify every Estimoter with notifications enabled, so there’s much better chance they’ll get noticed.

Useful resources