Intro to Eddystone
Eddystone is a Bluetooth advertising protocol (“packet”) designed by Google. You can learn more about it on github.com/google/eddystone.
Eddystone specification actually defines a few types of packets:
- Eddystone-UID, an opaque namespace + instance identifier
- this is similar to iBeacon’s UUID + major + minor, or Estimote’s device identifier
- Eddystone-EID, similar to UID, but “encrypted”, so that only authorized apps and services can make use of it
- Eddystone-URL, a short URL encoded directly into the packet
- Eddystone-TLM, telemetry data such as battery voltage, uptime, etc.
These packets can be discovered with any BLE APIs, e.g., Core Bluetooth on iOS, or android.bluetooth.le on Android. You can also use them with Google’s Nearby Messages API, which you can integrate into your iOS or Android app, and receive “messages” when you enter and exit range of beacons.
Important: It also used to be possible to use Eddystone with:
- Google Chrome, to surface Eddystone-URL links. This was discontinued in October 2017.
- Nearby Notifications, to trigger low-priority notifications on Android. This was discontinued in October 2018.
What’s ahead (aka Table of Contents)
- Eddystone vs iBeacon vs Estimote Proximity
- How to get started with Nearby
- Dive deeper into Eddystone
- Configure Estimote Beacons to broadcast Eddystone
Eddystone vs iBeacon vs Estimote Proximity
A header phrased like that isn’t entirely correct: remember that iBeacon and Eddystone are only advertising protocols. We actually want to compare the APIs and services, e.g., Core Location to Nearby to Estimote Proximity.
Estimote Proximity | Core Location | Nearby Messages API | |
---|---|---|---|
packets | Estimote Monitoring Estimote Telemetry | iBeacon | Eddystone UID/EID + TLM |
platforms | iOS and Android | iOS | iOS and Android |
requires an installed app | yes | yes | yes |
triggers | callback to ProximityObserver, or PendingIntent | callback to CLLocationManager | callback to MessagesClient, or PendingIntent |
trigger range | configurable via an API parameter | unspecified (anywhere in range) | unspecified (anywhere in range) |
cloud services | Estimote Cloud: - attachments - analytics - beacon health | - | Google's cloud: - attachments - beacon health |
security | yes | - | yes |
How to get started with Nearby
-
If you want to use Nearby Messages API:
- Enable and configure Eddystone-UID advertising on your Estimote beacons.
- You may also consider using Eddystone-EID instead of UID.
- You’ll very likely want to register your beacons with Google’s beacon cloud.
- Finally, head over to Nearby Messages API documentation and start coding!
- Enable and configure Eddystone-UID advertising on your Estimote beacons.
Dive deeper into Eddystone
-
To take advantage of some of the Nearby features, you may need to register your beacons with the Google’s beacon cloud, also known as Google Proximity Beacon API.
-
Part of the Eddystone specification is also an Eddystone GATT Configuration Service. It’s a standardized GATT service that you can use to configure compatible beacons to broadcast Eddystone packets, in a vendor-agnostic way.
-
Eddystone also comes with a specification for secure advertising: Eddystone-EID. With Eddystone-EID, only authorized apps and services can make use of your beacons.
Configure Estimote Beacons to broadcast Eddystone
Every Estimote Beacon ever shipped supports Eddystone UID, URL, and TLM packets:
- first-generation Estimote Beacons (hardware revision “D”)
- need to be on firmware 3.1.1 or later
- use the Estimote iOS app or Estimote Android app to set their Broadcasting Scheme to either Eddystone-UID or Eddystone-URL
- Eddystone-TLM frame will be automatically broadcast between the UID or URL broadcasts
- Estimote Proximity and Location Beacons
- support Eddystone since the very beginning, no firmware upgrade required
- use the Estimote apps or Estimote Cloud to enable and configure UID, URL, and TLM packets
Eddystone-EID and Eddystone Configuration Service are only supported by select Estimote Beacons. You can read how to enable them in their respective articles.